---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

第一步:从什么地方入手

1、 设计到几个对象(类)

2、 每个类有什么方法

游戏的显示面板

GamePanel类

Void display();//显示

方块

Shape类

void moveLeft();           //左移

void moveRight();         //右移

void moveDown();        //下移

void rotate();                //旋转(变形)

void drawMe();             //显示

自己能定时下移

图形工厂

ShapeFactory类(图形工厂)

Shape getShape();           //生产出不同形状的图形

Ground类

Void accept(Shape);              //接受图形,把图形变成障碍物

Void drawMe();                    //显示

需要一个Controller类

处理GamePanel激发的按键事件

根据不同的情况、向Shape、ShapeFactory、Ground或GamePanel发出不同的指令

第二步:过程设计分析:

图形定时下落,每下落一次后都需要重新显示

图形移动和变形后,也需要重新显示

它又不能直接操控GamePanel,怎么办呢?

Shape定时下落(事件源)——(shapeMovedDown)下落后,触发事件——Controller(状态改变需要重新显示)

Shape的监听器ShapeListener

ShapeListener

Void shapeMovedDown(Shape);

第三步:图形设计,及游戏过程设计

基本概念:怎么表示图形,障碍物

1、可以把显示区域想象成一个大大表格,一个格子可以代表一个障碍物,几个连在一起的格子可以组成一个图形。

2、怎么区分格子呢(怎么表示这个格子呢?)

用坐标,每个格子有它自己的坐标,左上角的那个格子的坐标是(0,0)

重要概念:怎么表示图形的状态

1、 图形变形:变形就是显示下一个状态

2、 表示图形的状态

图形的多种状态

3、 图形的移动

图形类里面要保存自己的位置信息,用left表示图形到左边界的距离,top表示图形到上边界的距离

图形移动就是改变left和top的值

基本概念:图形绝对坐标和相对坐标

图形的移动

4、画图形

把组成图形的格子画出来:

画方阵中标志为1的格子,标志为0的不画。

图形中的格子在显示区域中的位置为:

X坐标:left + 格子的x相对坐标

Y坐标:top + 格子的y相对坐标

(相对坐标是格子在方阵中的坐标)

格子的宽度和高度

格子坐标和像素坐标

图形的移动或变形

按键以后,图形是否就一定能够移动或变形?

不一定,如果下一步的动作会使图形超出边界或有的点与障碍物重叠,则不允许图形做这个动作。

5、 怎么存储和表示障碍物

用一个和显示区域的格子相对应的二维数组保存障碍物的位置信息

如果对应的位置是障碍物,则这个数组中相应的元素就为1,不是则为0

6、 怎么把图形变成障碍物

把属于图形的格子对应的位置都变成障碍物

判断时要注意

是指图形的身体超出边界或与障碍物重叠,而不是表示这个图形的4 x 4的方阵,因为方阵中的点并不都是图形的身体

7、消除满行

这个一行没有空白,则这一行就是满行

满的那行,上面所有的行,整体下移一行,就是消除这个满行

8、 判断游戏是否结束

如果有的障碍物超出了上边界(容器满了),就是游戏结束

完善后的Ground

Ground类

BooleanisMoveable(Shape,action);              //图形下一步的动作是否会被允许(边界、障碍物)

Voidaccept(Shape);        //接受图形(把图形变成障碍物)

VoiddeleteFullLine();     //扫描并删除满行

Boolean isFull();     //是否还可以接受图形(是否满了)

Void drawMe();              //显示自己的方法

附录:俄罗斯、贪吃蛇游戏-项目视频及源代码下载http://www.itcast.cn/itcast_static/snakeVideo.htm

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima</a>

黑马程序员——贪吃蛇游戏项目分析过程相关推荐

  1. 黑马程序员--迷宫小游戏

    ------- android培训.java培训.期待与您交流! ---------- 在黑马ios的基础课视频上,有个迷宫小游戏,感觉挺有趣,然后我就在此基础上,稍稍改了点,记下,留着可以和别人共同 ...

  2. python小游戏课程设计报告_贪吃蛇游戏课程设计报告

    贪吃蛇游戏程序设计 一.课程设计任务 贪吃蛇小游戏程序设计 二.设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固 C 语言中所学的知识,合理的运 用资料,实现理论与实际相结合. ( 1 ) . ...

  3. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  4. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  5. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏

    基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的贪吃蛇游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  6. 单片机8×8点阵显示简单汉字的程序_干货 | 浅析单片机制作贪吃蛇游戏

    为了让大家更深入地了解底层的原理,在讲解时特意选择了51单片机(而非STM系列),另外16*16点阵由译码器和移位缓存器直接驱动(而非MAX系列芯片),摇杆也利用ADC功能判断方向. 那如何让单片机驱 ...

  7. python设计贪吃蛇游戏论文_用Python写一个贪吃蛇AI,让程序自己玩游戏

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  8. 结对-贪吃蛇游戏-开发环境搭建过程

    结对编程成员:赵建辉,马壮 搭建环境: 会 html,css,以及java开发知识. 会应用sublime,dw等编辑软件 编写程序阶段: 1.利用html搭建前端页面,构建游戏的页面框架 2.利用j ...

  9. x x x x c程序语言,C语言写个贪吃蛇游戏

    贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的. 我试了说 ...

最新文章

  1. Pycharm中Python PEP8 的警告
  2. 记录一个无水印 免费的录屏软件 【需要登录哔哩哔哩账号】
  3. 二叉树的前序遍历,中序遍历,后序遍历学习 (原)
  4. 我程序中用到的第一个递归算法
  5. JUnit+EclEmma进行覆盖测试
  6. oracle之 Got minus one from a read call 与 ORA-27154: post/wait create failed
  7. 表示和描述-边界追踪
  8. [css] 使用css将图片转换成黑白的效果
  9. Online开发初体验——Jeecg-Boot 在线设计流程
  10. 成为java架构师需要具备那些技能?
  11. python字典默认排序_Python字典练习:设置默认获取排序,小,知识点,setdefaultgetsorted...
  12. 闲鱼Flutter混合工程持续集成的最佳实践
  13. mysql innodb cluster服务器搭建
  14. 【边缘计算】移动边缘计算中延迟和能量约束任务卸载的最优拍卖
  15. 申请高德地图开发者key
  16. 为什么有些人拒绝别人的方式是说谎而不是直接说不?
  17. 一篇文章上手docker(原理,部署,使用,坑)
  18. karabiner改键教程
  19. 读查理·芒格---《穷查理宝典》
  20. iPad 上能播放局域网高清片源影音播放利器XBMC使用体会

热门文章

  1. 指定时间几个月(自然月)之后的时间
  2. 什么是SWOT分析?怎样进行SWOT分析?
  3. 精彩十年(3)——初露锋芒
  4. 接触网机器人:设计和控制由两个四旋翼飞行器驱动的电缆(Matlab代码实现)
  5. 那些年啊,那些事——一个程序员的奋斗史 ——37
  6. 【必收藏】2021全网最火全套IT编程语言百度网盘学习资源汇总 !!!
  7. 网页设计师如何设计精美的网站设计作品
  8. C语言3位~7位水仙花数(加强版)
  9. Windows Media Player播放器(VC++ 2008)
  10. luogu P2221 [HAOI2012]高速公路