吃豆豆--Java小游戏
来源:互联网 发布:联合国维和行动 知乎 编辑:程序博客网 时间:2024/05/21 06:53
吃豆豆
项目总结,要求用Java做一个小游戏
不想用网上现成的代码,也想做的有新意一点
什么贪吃蛇啊飞机大战啊超级玛丽啊……
之前有人写过或者有人在写,所有并不想做(@我东东哥)
打了3天4399吧,想到一个比较不错的游戏:吃豆豆
黄色的为我方小豆人,粉色红色橙色为小怪兽
可以通过键盘上下左右来控制小豆人运动,每次移动5个像素
小怪兽可以自行运动,每次移动30个像素
Enter键开始游戏,space暂停游戏
小豆人和小怪兽均不可以穿过墙体
如果小豆人撞到小怪兽,则游戏失败
豆豆全部吃完闯关成功
背景的地图是可以自己绘制的
小豆人图片、小怪兽图片也可以根据自己喜好添加
因为是用Java中的swing和AWT写的
所以界面可能有点丑(没办法,我真的尽力了)
Java真的不太适合游戏的界面制作
整个界面是使用那种按表格绘制
用Timer每300毫秒进行重绘(当然用线程实现更好)
画面有点卡顿,不过双缓冲技术可以很好地解决闪屏问题
制作过程中遇到的比较麻烦的地方
就是判断小豆人和小怪兽运动方向能否执行
之前写的代码一直有bug,
if条件中考虑的情况不全和各条件的顺序不对
各种穿墙不移动数组越界,真的是改到绝望了
不过还好后来发现了并修复了这些bug
现在的游戏我还是很满意的
在游戏开始之前加入了登录界面
类似于QQ的登录界面
使用了动态gif图片作为背景
嗯画面挺漂亮的
密码使用了JPasswordField做的
当时以为获得密码框中文本要用getText()
结果一直报空指针异常
查了API文档才发现要用getPassword()
emmmm……
后续:
本来是想做Tap Tap Dash(点点冲刺)的
不过游戏对灵敏度和画面流畅要求比较高
Java的Timer和多线程很难满足要求
细节实现起来也比较难
所以,很遗憾吧
等以后学习了前端语言,再慢慢写吧
写完这个才发现,做这类游戏的套路基本是一致的
做完吃豆豆,坦克大战飞机大战贪吃蛇之类的游戏都能自己做了
游戏还有待改善,比如吃了某种水果就能使小怪兽暂停什么的
或者给三个小怪兽设置独立的人格……
附键盘监听器的代码
mc.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {int key = e.getKeyCode();if (flag[player.p_y / 30][player.p_x / 30] == 0) {flag[player.p_y / 30][player.p_x / 30] = 1;}switch (key) {case KeyEvent.VK_LEFT:player.p_image = Player.im1;if(player.p_x==0)break;if ((player.p_x % 30 != 0|| (player.p_y % 30 != 0 && Data.point[player.p_y / 30 + 1][player.p_x / 30 - 1] == 1 && Data.point[player.p_y / 30][player.p_x / 30 - 1] == 1)|| (player.p_y % 30 == 0 && Data.point[player.p_y / 30][player.p_x / 30 - 1] == 1))) {player.p_x -= 5;}break;case KeyEvent.VK_RIGHT:player.p_image = Player.im3;if(player.p_x>=570)break;if ((player.p_x % 30 != 0|| (player.p_y % 30 != 0 && Data.point[player.p_y / 30 + 1][player.p_x / 30 + 1] == 1 && Data.point[player.p_y / 30][player.p_x / 30 + 1] == 1)|| (player.p_y % 30 == 0 && Data.point[player.p_y / 30][player.p_x / 30 + 1] == 1))) {player.p_x += 5;}break;case KeyEvent.VK_UP:player.p_image = Player.im5;if (player.p_y>0 && (player.p_y % 30 != 0|| (player.p_x % 30 != 0 && Data.point[player.p_y / 30 - 1][player.p_x / 30 + 1] == 1 && Data.point[player.p_y / 30 - 1][player.p_x / 30] == 1)|| (player.p_x % 30 == 0 && Data.point[player.p_y / 30 - 1][player.p_x / 30] == 1)) ){player.p_y -= 5;}break;case KeyEvent.VK_DOWN:player.p_image = Player.im2;if (player.p_y<570 && (player.p_y % 30 != 0|| (player.p_x % 30 != 0 && Data.point[player.p_y / 30 + 1][player.p_x / 30 + 1] == 1&& Data.point[player.p_y / 30 + 1][player.p_x / 30] == 1)|| (player.p_x % 30 == 0 && Data.point[player.p_y / 30 + 1][player.p_x / 30] == 1)) ){player.p_y += 5;}break;case KeyEvent.VK_ENTER:time.start();break;case KeyEvent.VK_SPACE:time.stop();break;}}});
差不多整个项目有500-600行代码吧
学习的路还有很长,加油!
阅读全文
2 0
- 吃豆豆--Java小游戏
- java吃豆豆游戏-1控制按钮编写
- 吃豆豆进度条
- 1930: [Shoi2003]pacman 吃豆豆
- Hust oj 2157 吃豆豆
- BZOJ1930: [Shoi2003]pacman 吃豆豆
- 吃豆豆进度条_完整版
- bzoj1930: [Shoi2003]pacman 吃豆豆
- bzoj1930 [Shoi2003]pacman 吃豆豆
- BZOJ1930 [Shoi2003]pacman 吃豆豆 费用流
- bzoj1930: [Shoi2003]pacman 吃豆豆 费用流
- BZOJ P1930[Shoi2003]pacman 吃豆豆
- 吃金币小游戏笔记
- 小游戏----吃豆子
- 吃豆子的小游戏
- 小游戏吃饭,睡觉,打豆豆,亲
- createjs-打豆豆小游戏制作(1)
- createjs-打豆豆小游戏制作(2)
- 定时器alarm函数
- VB6.0软件调用VS C++ DLL问题解决
- 开始写blog
- Tr A
- 数组中出现的次数超过数组长度的一半的数字
- 吃豆豆--Java小游戏
- 文件操作——File
- 剑指offer面试题11 数值的整数次方 java实现
- 二分图匹配
- Python小记--文件读写简洁方案
- fzu2282 wand 排列组合 错排
- Android开发中嵌套fragment的实现
- HDU 5869 Different GCD Subarray Query
- tensorflow的运行流程与核心关键概念含义介绍