可能是由于上学期期末的原因,加上开学以来一直蛮忙的,感觉很久没有写过博客了。今天,回顾下寒假期间做的线程游戏,也顺便谈谈自己的心得与体会。
首先我们是以一个简单的马里奥模型为背景,结合之前学习的多线程的知识,展开对线程游戏具体学习。首先,做游戏,必须要选择比较好的素材,素材对于一个游戏的主观评分是有很大影响的。其次,既然要获得好的素材,不可能千篇一律的从网上获得,而是要自己用Photoshop来p图,比如我,是将从网上找到的一组gif图分别按不同形状截图,再重新在ps里p出一个新的gif图片,这就是我的游戏里的人物模型,当然还有各种障碍物,都是我从网上找的图片,扣掉一些没必要的部分再将背景设置透明化从而获得所有的障碍物。
有了素材之后,真正的工作才算正式开始。首先我应该理清楚我的游戏玩法是什么,我这里做的是一款简单的跑酷类游戏,既人物不断往前跑,想方法躲避各种来自天上地下的障碍物,对操作还是有一定的要求的。那么,理清楚玩法之后,我应该分清楚了游戏里有哪些实际存在的东西。奔跑的人物对象和不断移动的障碍物这两类。本来想把地板也设为一类对象的,但之后我的处理有些不同,所以改完以后就没有这么做了,这个放在之后再说。既然分清楚有了哪些对象,那设计思路就很清晰明了了,简单的来说就是-——人在奔跑的过程中不断的躲避障碍物,当然为了丰富游戏的可玩性还可以添加一系列宝贝之类实现某些对人物有好的功能。
理清楚了游戏的设计思路,游戏的制作就很简单了——一个继承的窗体类,一个继承的面板类,一个人物类,一个障碍物类,一个键盘监听类。主要分为这5部分。当然这中间还涉及到地图该怎么写入的问题,我这里是写了一个ReadMap类给他一个静态方法,通过文件输入流把自己配置好的二维数组以数字的方式保存在文件中写入地图。这种方式下可以把障碍物和对应在二维数组中的位置完全匹配,从而实现了二维数组与实际障碍物一一对应的关系。我的这部分代码如下;
其次我觉得比较重要的就是对人物动作尤其是跳跃的处理和碰撞的检测问题,碰撞检测本来是想用二维数组的下标来比较的,后来调用了Rectangle的包含方法来判断的,人物跳跃动作则是给他加了一层线程,还有就是解决键位冲突的问题,因为本身的按键监听只能同时对一个按键监听,那么比如一起按左上就会产生问题,所以我定义了几个布尔型的变量作为按键的开关,当各种不同的条件,满足不同的监听,具体代码如下:
具体游戏运行图片如下,

线程小游戏制作的心得与体会相关推荐

  1. Java飞机小游戏制作简单实现详细小结

    567881@ftJava小游戏开发 Java飞机小游戏制作简单实现小结 本人原来是个技术小白,寒假我跟着高淇老师的Java300集开始自学Java,跟着做了一个飞机大战小游戏,已经实现了飞机的自由移 ...

  2. 基于pygame的射击小游戏制作(一)让飞船动起来

    基于pygame的射击小游戏制作(一)让飞船动起来 一.文件结构 alien_invasion.py 是整个系统的主文件,用来创建游戏中的一系列对象,ai_settings存储设置.screen存储显 ...

  3. 微信小游戏制作坦克大战(四)添加敌方坦克,敌方坦克可以随机移动

    微信小游戏制作坦克大战(四)添加敌方坦克,敌方坦克可以随机移动 首先导入敌方坦克素材 重命名为敌方坦克1 敌方坦克也移动到屏幕外面,后面使用克隆体来显示. 我们给敌方坦克添加事件 好的,现在敌方坦克已 ...

  4. 微信小游戏制作坦克大战(六)碰撞检测,主角坦克碰到敌方坦克、炮弹爆炸

    微信小游戏制作坦克大战(六)碰撞检测,主角坦克碰到敌方坦克.炮弹爆炸 导入坦克爆炸效果的图片和声音素材 给主角坦克添加事件 给爆炸动画添加事件 当主角坦克碰到敌方坦克或者炮弹时显示爆炸效果 下一篇文章 ...

  5. unity小游戏制作之见缝插针

    unity小游戏制作之见缝插针 先看效果图这个游戏是一个入门的小游戏,主要技术就是圆盘的旋转,针跟随圆盘旋转以及分数累加等 游戏先拖入一个圆,更改格式为2D然后建立脚本使其转动 public clas ...

  6. 微信小游戏制作坦克大战(五)敌方坦克可以发射炮弹

    微信小游戏制作坦克大战(五)敌方坦克可以发射炮弹 在资源管理器中复制炮弹,重命名为敌人坦克的炮弹. 修改敌方坦克的积木 给敌方坦克炮弹添加事件 现在,敌方坦克已经可以自动发射炮弹啦. 下一篇文章:微信 ...

  7. 贪吃蛇小游戏制作(5)

    贪吃蛇小游戏制作(5)-给游戏场景添加可视的边界

  8. 微信小游戏制作坦克大战(九)切换场景,游戏重新开始

    微信小游戏制作坦克大战(九)切换场景,游戏重新开始 新建一个游戏结束场景 主角坦克爆炸后切换到游戏结束场景 添加背景音乐 好了,至此坦克大战小游戏基本做好,小伙伴们可以继续完善哈. 体验地址:

  9. 微信小游戏制作坦克大战(八)统计得分

    微信小游戏制作坦克大战(八)统计得分 导入数字图片素材 新建得分变量 给数字添加事件 敌方坦克发生爆炸时,数字增加1 实现效果 下一篇文章:微信小游戏制作坦克大战(九)切换场景,游戏重新开始

最新文章

  1. [JS] 事件冒泡,阻止事件冒泡,事件的三个阶段(捕获,目标,冒泡)
  2. 谈谈Android重打包--架构
  3. SpringBoot随笔
  4. PHP单引号和双引号的区别
  5. leetcode 解压缩_leetcode之字符串压缩
  6. python题目推荐_python题目
  7. python人工智能入门优达视频_机器学习:优达教你搭建Python 环境的正确姿势
  8. 单例模式之恶汉模式(详解)
  9. matlab画gds图,如何将图片转换为.gds文件?(转)
  10. php curl 下载图片 花,PHP curl下载图片的方法
  11. ios 横向滚轮效果_iOS列表滚动视差效果
  12. php实现弱类型,PHP内核探索:弱类型变量的实现
  13. 新工作 Day15 周四
  14. xp如何修改SID.
  15. Java编一个收银小票_Java编程打印购物小票实现代码
  16. PPT设置自动保存时间 mac_你对着PPT抓狂的那几秒,像极了爱情(1)
  17. Matlab中tic和toc用法
  18. 旭凤锦覓虐心 恋只愿共赴鸿蒙,香蜜:锦觅与旭凤4次同床,1次酒醉灵修,1次再续前缘,1次虐心!...
  19. 锅炉如何实现物联网云平台方案
  20. 【推导】线性变换与在基下的矩阵一一对应

热门文章

  1. 将Json转换过来的带T的字符串格式的时间转换成正常时间,并通过指定格式输出
  2. 【Java8 Stream】:探秘Stream实现的核心:Collector,模拟Stream的实现
  3. 创业第12天,百度竞价助手3.0正式发布,上传各大软件下载站
  4. OFD开发系列(一)-添加水印
  5. 像专家一样思考,像专家一样实践
  6. 本科学计算机专业当海军可以分配什么兵种,海军五大院校欢迎高中毕业生加入海军...
  7. 开发一个delphi写的桌面图标管理代码
  8. MTK_Ralink_ApSoc_SDK编译总结
  9. 游戏热加载、即时加载、热更新、热补丁原理流程图
  10. 管理利器:远程控制任我行