首页新闻找找看学习计划

C#做坦克大战的问题

0
悬赏园豆:10 [待解决问题]

我想问的问题是,坦克大战里的墙有各种图形,按住坦克,如果遇到墙就不能前进了,只能拐弯或后退,我想知道这样的情况,程序员是如何设计这个程序的,用什么语句或者方法来实现呢?应该不会用if...else语句吧,如果是你,你会考虑怎么实现这个功能?

绝对菜鸟的主页 绝对菜鸟 | 初学一级 | 园豆:27
提问于:2013-01-09 09:46
< >
分享
所有回答(6)
0

因为坐标不是很大,弄一个二维数组有来保存什么坐标有墙应该是个非常好的选择,既不耗内存,又有非常快的速度

用wall[x][y]==true来表示x,y坐标是一堵墙

trytocatch | 园豆:373 (菜鸟二级) | 2013-01-09 10:50

谢谢,坦克在二维数组的位置这个又该怎么实现呢?然后我按鼠标键,坦克的位置就会上下移动,还望多指点

支持(0) 反对(0) 绝对菜鸟 | 园豆:27 (初学一级) | 2013-01-09 14:02

@绝对菜鸟: 用x,y两个变量来记录它的当前位置啊,在移动的时候,判断前进方向有没有墙(我上面说的那个数组),坦克的位置怎么动,这是界面的事情,得看你是怎么画坦克了,一般来讲,应该有个从模式坐标转换为屏幕坐标的过程

支持(0) 反对(0) trytocatch | 园豆:373 (菜鸟二级) | 2013-01-09 19:59

@trytocatch: 从模式坐标转换为屏幕坐标? 这个怎么实现的啊?

支持(0) 反对(0) 绝对菜鸟 | 园豆:27 (初学一级) | 2013-01-11 09:43
0

按上下键是事件,使用position[x][y]这个数组来确定哪里有墙,坦克在哪里,按一次上就x+1同理下就x-1,懂了吧

羽商宫 | 园豆:2493 (老鸟四级) | 2013-01-09 19:37

谢谢诶,那么我的坦克在哪个位置,这个应该怎么确定呢? 也就是我的坦克在地图上的位置怎么转换到坐标位置呢?

支持(0) 反对(0) 绝对菜鸟 | 园豆:27 (初学一级) | 2013-01-10 15:13
0

最简单的方法用矩形碰撞检测。

百零八1900 | 园豆:229 (菜鸟二级) | 2013-01-15 10:52
0

用x、y两个变量来设置坦克的位置,而页面也有总的宽度和长度,当点击按键的时候, x和y发生变化,测试坦克的位置与页面边框的距离,如果为0,就不能操作某个方向键。你是在看视频学习吗?我也在做这个游戏。有空交流一下。

算盘 | 园豆:230 (菜鸟二级) | 2013-01-15 16:48

您好,算盘,不好意思,我才回复,我没有视频学习,只是在CSDN上看到有个家伙实现了,就想找这方面的视频,可以也没有找到啊

支持(0) 反对(0) 绝对菜鸟 | 园豆:27 (初学一级) | 2013-02-07 22:50

@绝对菜鸟: 有空交流一下,我家里没网络,今天才回,我的QQ381546192

支持(0) 反对(0) 算盘 | 园豆:230 (菜鸟二级) | 2013-02-18 16:10
0

马士兵视频教程有讲解坦克大战的,不过采用的是java语言。你可以参考一些。

薛遗山 | 园豆:106 (初学一级) | 2013-07-24 17:40
0

首先定义一个宽度给高度的一个地区, 然后遍历输出数组,数组可以为0,1,2,3,4,

0.可以代表是路。

1.可以代表是贴墙(不可破坏)

2.可以代表是土墙(可破坏)

3.可以代表是草丛(可穿越,不可破坏)

4.可以代表是河流,子弹可以穿越,(不可破坏)

这件就可以输出一个地图,

然后使用_kbint()函数接收按键。switch循环没一个按键,

COORD POS   定义一个窗口的x,y代表坐标

如果按了w键,那么x--,循环,就可以实现坦克走起来。

使用if else if都可以实现, 不过使用switch更好一点,个人觉得。

王_远 | 园豆:202 (菜鸟二级) | 2014-11-06 16:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册