横版过关游戏开发-人物控制

人物控制花费了很多时间,方法有很多。先看一下以前游戏是怎样控制的。

比如做坦克大战,地图可以做成二维数组,按方向键移动。坦克的位置信息,可以由数组索引表示(或者加一个偏移量),那么,当按动方向键时,直接修改数组索引就行了。

而横版游戏,像超级玛丽这样,主要的运动方式就两种:走、跳。我前两天做的时候,对于每一个方向的移动,都设置了一个状态“向左移”,“向右移”等等。刚开始的时候,运行挺好。结果,每增加一种运动方式,代码不仅多,而且乱。主要原因是,走、跳既可以单独发生,也会同时发生,甚至在跳的过程中移动。这样,设置不同的状态,只会让代码变得复杂。 后来我简化了方法,去掉“移动状态”的设置。只设置两个变量:水平方向的速度,垂直移动的速度。然后,根据这两个值,修改角色的当前位置,代码立刻变得简单多了。

人物可以移动,还需要解决碰撞检测的问题:跳的过程中,碰到物体怎么办?下落的过程中,检测是否落在了某个物体上。这些,下次再讲。

主要是对何青编写的java游戏程序设计教程的综合运用,游戏主体主要有两关,本游戏需求许多相关要素,包括玩家的键盘各种按键的处理办法,包括左右移动,space跳跃,r键重新开始,ctrl发射子弹,p键暂停,esc退出到菜单,还有包括自己调试时加的’j’、’z’、’+/=’、’-’所分别代表的unattack态,跳跃初速度加10,进入下一关,回到上一关,并且设计了各种道具(包括恢复生命的红心,获得uattack状态的五角星和提升跳跃的能量球),设计了四种敌人,因为时间紧促,目前行为模式没有什么区别,但设计了简单的反应,例如在发现玩家之后会主动冲向玩家(设计了关于敌人是否发现玩家的hasFoundPlayer()方法放在npc类之中,并对其进行相关使用来实现),而不是机械性的反复运动,此外游戏本身有着计分系统,虽然没有完善通关记录的实现,但还是能时刻在屏幕中显示分数,此外在屏幕还会显示敌人数和剩余生命,本游戏设计了两个关卡并通过文件读写和将其数据转化为各种砖块背景(所写的TileMap类和gameworldmanager类中的loadTileMap方法来实现),以及通过BufferedImage来存放背景并能将背景(窗口背景)进行滚动(通过所写的Ribbon 类中的各种方法)从而达到背景在玩家走的时候也在动的感觉。同时设计了子弹的发射,能够通过子弹和‘踩’击杀敌人获得分数。当击杀玩全部敌人进入下一关卡等等。每一句都有相应的注释,附带一个上万字的java大作业报告书,适用于想在大学期间学习简单java游戏设计的同学。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值