吃豆豆

项目总结,要求用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行代码吧
学习的路还有很长,加油!

吃豆豆--Java小游戏相关推荐

  1. 王思聪吃热狗--java小游戏百度云源码

    此是闲暇之余敲的飞机大战java版,提供给大家学习和吐槽☺ https://pan.baidu.com/s/11PViK5Lk6cIrzvRrJMjK7g 提取码:9xrc

  2. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  3. 用JAVA实现吃豆人小游戏

    用JAVA实现吃豆人小游戏 游戏运行效果 Model.java Pacman.java 完整的游戏代码及资源文件 游戏运行效果 Model.java package pacman;import jav ...

  4. java小游戏-java小游戏-大鱼吃小鱼

    java小游戏-java小游戏-大鱼吃小鱼 1 创建窗口 2 添加背景图 3 启动封面 4 启动页面的点击事件 5 游戏开始时的背景添加 6 双缓存解决闪屏问题 7 地方第一条小鱼的添加 8 敌方左方 ...

  5. Java小游戏——贪吃蛇

    Java小游戏之贪吃蛇 系统目标 贪吃蛇是一个益智类游戏,通过本游戏的设计和实现,可以提升Java技术能力,提升自己独立开发的能力及掌握项目的开发流程. 开发环境 系统环境:Windows 开发工具: ...

  6. 各种经典java小游戏_Java是这个世界上最好的语言!

    为什么? 请看TIOBE最新发布的编程语言排行榜: TIOBE开发语言排行榜每月更新一次,其结果可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的. ...

  7. Java小游戏:模仿微信群发红包

    Java小游戏:模仿微信群发红包 微信群主发普通红包,普通红包规则: 群主的一笔金额,从群主余额中扣除,平均分成n等分,让群员领取. 成员领取红包后,保存到余额中. 请根据规则,完成案例中所有类的定义 ...

  8. 《Java小游戏实现》:坦克大战

    <Java小游戏实现>:坦克大战 前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用. 这个游戏的完成,我们也是分步完成,逐步累加,一个一个 ...

  9. 基于C++控制台(Windows平台)的一个吃豆人小游戏

    PacManX --南京大学2019秋季学期 "高级程序设计 "课程设计一 基于C++控制台(Windows平台)的一个吃豆人小游戏 已实现的目标: 地图支持自定义编辑(可编辑地图 ...

  10. 整活~使用webAI做一个网页AR吃豆人小游戏

    一个好习惯,先给结论 使用网页端深度学习框架识别人脸,做一个AR吃豆人小游戏.吃豆人会随着人脸在镜头内的移动而移动,吃完全部豆子即为获胜. 在线体验地址:点我预览 代码地址:点我github 本文首发 ...

最新文章

  1. html5 FileReader初识
  2. jquery如何调用后台的方法
  3. 常看 Shell: 文本文件操作
  4. [yc]详解link
  5. java如何把string转化E_java将string转为代码执行
  6. 【转】WPF从我炫系列3---内容控件的用法
  7. POJ2503 Babelfish(二分)
  8. 关于 Java 性能监控您不知道的 5 件事,第 1 部分
  9. React 深度学习:React Core
  10. 排序算法之九 基数排序(C++版本)
  11. Deploy Apache Flink Natively on YARN/Kubernetes
  12. 拓端tecdat|二手闲置物品交易数据快照
  13. 离散数学期末复习总结
  14. 使用echarts实现半圆饼图
  15. 程序员的表白文,加点不一样的料!
  16. javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)...
  17. 如何评价范冰新书《增长黑客》?
  18. Crack:Stimulsoft BI Server 2022.4.5
  19. 面向对象分析与设计--遛狗玩
  20. 病原微生物高通量测序:第二节 应用场景

热门文章

  1. JS生成uuid的四种方法
  2. 怎么把ide改成ahci_怎么IDE改成AHCI
  3. 数字图像处理_05_(图像锐化与边缘检测——Premittt算子、Roberts算子、Sobel算子、Scharr算子、Laplacian算子、LoG算子、Canny算子)
  4. spring动态代理之cglib动态代理
  5. android ts流解码,DVB开发之TS流的接收,解码与播放
  6. 尚学堂马士兵struts2 课堂笔记(二)
  7. 操作系统原理:文件系统
  8. 百度影音盒插入论坛帖子自动播放代码及方法
  9. 10倍性能提升!英伟达新卡皇降临,图灵架构GTX 20系列发布
  10. 设置网页title旁边的小图标详解