• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C语言系列之推箱子游戏

c语言 搞代码 4年前 (2022-01-06) 37次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了C语言系列之推箱子游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言系列之推箱子游戏的具体代码,供大家参考,具体内容如下

输入WSAD控制行走,只需要把一个方向的代码写好了,剩下的是三个方向就是复制粘贴和简单的修改就可以了。

 #include  #include   //键盘输入函数库 //0:空地 1:墙 2:箱子要放的位置   5:人与星号重叠5:箱子与星号重叠 3:人+-3 4:箱子:+-4 int map[10][10] = {1,1,1,1,1,1,1,1,1,1, 1,0,0,0,0,0,2,0,0,1, 1,0,0,3,4,0,0,0,0,1, 1,0,0,1,1,0,0,0,0,1, 1,0,1,0,0,0,1,0,0,1, 1,0,0,4,0,0,1,0,0,1, 1,0,0,0,0,0,0,0,0,1, 1,0,2,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,1, }; int flag=0; void PrintMap() { int i, j; for (i = 0; i <10; i++) { for (j = 0; j <10; j++) { switch (map[i][j]) { //0:空地 1:墙 2:箱子要放的位置 3:人 4:箱子  5:箱子到达目的地 case 0: printf("  "); break; case 1: printf("■"); break; case 2: printf("☆"); break; case 3: printf("♀");<mark style="color:transparent">来源gaodaimacom搞#代%码网</mark>  break; case 4: printf("□"); break; case 5: printf("★"); break; default: break; } } printf("\n"); } } void PlayGame() { int num = 0; char temp; temp = getch();//键盘输入无回显函数 static int x=2,y=3; switch (temp) { case 'W': if(map[x-1][y] == 0)//如果下一个的地方为空地 { if(flag == 0) { map[x-1][y] = 3; map[x][y] = 0; x--; } else { map[x-1][y] = 3; map[x][y] = 2; x--; flag = 0; } } else if (map[x-1][y] == 2)//如果下一个的地方为箱子存放地 { map[x-1][y] = 3; map[x][y] = 0; x--; if(map[x-1][y] == 0) { flag = 1; } } else if(map[x-1][y] == 4)//下一个去的地方有箱子 { if(map[x-2][y] == 0 )//x-2是空地时 { if(flag == 0) { map[x-2][y] = 4; map[x-1][y] = 3; map[x][y] = 0; x--; } else { map[x-2][y] = 4; map[x-1][y] = 3; map[x][y] = 2; x--; flag = 0; } } else if(map[x-2][y] == 2)//x-2是箱子的存放地 { map[x-2][y] = 5; map[x-1][y] = 3; map[x][y] = 0; x--; } } else if (map[x-1][y] == 5)//下一个去的地方是已经在存放点的箱子 { if(map[x-2][y] != 1) { map[x-2][y] = 4; map[x-1][y] = 3; map[x][y] = 0; x--; if(map[x-2][y] != 1) { flag = 1; } } } break; case 'S': if(map[x+1][y] == 0)//如果下一个的地方为空地 { if(flag == 0) { map[x+1][y] = 3; map[x][y] = 0; x++; } else { map[x+1][y] = 3; map[x][y] = 2; x++; flag = 0; } } else if (map[x+1][y] == 2)//如果下一个的地方为箱子存放地 { map[x+1][y] = 3; map[x][y] = 0; x++; if(map[x+1][y] == 0) { flag = 1; } } else if(map[x+1][y] == 4)//下一个去的地方有箱子 { if(map[x+2][y] == 0 )//x-2是空地时 { if(flag == 0) { map[x+2][y] = 4; map[x+1][y] = 3; map[x][y] = 0; x++; } else { map[x+2][y] = 4; map[x+1][y] = 3; map[x][y] = 2; x++; flag = 0; } } else if(map[x+2][y] == 2)//x-2是箱子的存放地 { map[x+2][y] = 5; map[x+1][y] = 3; map[x][y] = 0; x++; } } else if (map[x+1][y] == 5)//下一个去的地方是已经在存放点的箱子 { if(map[x+2][y] != 1) { map[x+2][y] = 4; map[x+1][y] = 3; map[x][y] = 0; x++; if(map[x+2][y] != 1) { flag = 1; } } } break; case 'A': if(map[x][y-1] == 0)//如果下一个的地方为空地 { if(flag == 0) { map[x][y-1] = 3; map[x][y] = 0; y--; } else { map[x][y-1] = 3; map[x][y] = 2; y--; flag = 0; } } else if (map[x][y-1] == 2)//如果下一个的地方为箱子存放地 { map[x][y-1] = 3; map[x][y] = 0; y--; if(map[x][y-1] == 0) { flag = 1; } } else if(map[x][y-1] == 4)//下一个去的地方有箱子 { if(map[x][y-2] == 0 )//x-2是空地时 { if(flag == 0) { map[x][y-2] = 4; map[x][y-1] = 3; map[x][y] = 0; y--; } else { map[x][y-2] = 4; map[x][y-1] = 3; map[x][y] = 2; y--; flag = 0; } } else if(map[x][y-2] == 2)//x-2是箱子的存放地 { map[x][y-2] = 5; map[x][y-1] = 3; map[x][y] = 0; y--; } } else if (map[x][y-1] == 5)//下一个去的地方是已经在存放点的箱子 { if(map[x][y-2] != 1) { map[x][y-2] = 4; map[x][y-1] = 3; map[x][y] = 0; y--; if(map[x][y-2] != 1) { flag = 1; } } } break; case 'D': if(map[x][y+1] == 0)//如果下一个的地方为空地 { if(flag == 0) { map[x][y+1] = 3; map[x][y] = 0; y++; } else { map[x][y+1] = 3; map[x][y] = 2; y++; flag = 0; } } else if (map[x][y+1] == 2)//如果下一个的地方为箱子存放地 { map[x][y+1] = 3; map[x][y] = 0; y++; if(map[x][y+1] == 0) { flag = 1; } } else if(map[x][y+1] == 4)//下一个去的地方有箱子 { if(map[x][y+2] == 0 )//x-2是空地时 { if(flag == 0) { map[x][y+2] = 4; map[x][y+1] = 3; map[x][y] = 0; y++; } else { map[x][y+2] = 4; map[x][y+1] = 3; map[x][y] = 2; y++; flag = 0; } } else if(map[x][y+2] == 2)//x-2是箱子的存放地 { map[x][y+2] = 5; map[x][y+1] = 3; map[x][y] = 0; y++; } } else if (map[x][y+1] == 5)//下一个去的地方是已经在存放点的箱子 { if(map[x][y+2] != 1) { map[x][y+2] = 4; map[x][y+1] = 3; map[x][y] = 0; y++; if(map[x][y+2] != 1) { flag = 1; } } } break; default: break; } } int  main() { printf("    \r\n请输入WASD控制行走\r\n"); sleep(2); while ((map[1][6] != 5) || (map[7][2] != 5)) { PrintMap(); PlayGame(); system("cls"); } printf("    \n恭喜您成功通关\n\n\n"); return 0; }

结果显示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是C语言系列之推箱子游戏的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C语言系列之推箱子游戏
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址