---------------------- <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(); //显示自己的方法
---------------------- <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>
分享到:
相关推荐
黑马程序员——Android移动开发源码
黑马程序员汤阳光老师所讲的java贪吃蛇源码,大家可以学习一下
黑马程序员贪吃蛇学习资料,打开文件,点击链接进去即可查看资料
NULL 博文链接:https://xianglachigen.iteye.com/blog/1564376
layui ajax 没有node.js功能都可用,高度类似。 黑马刘龙彬老师主讲的大事件项目,整体看完,给...最后,再次给黑马程序员和刘老师点个赞。 说明--ShowDoc https://www.showdoc.com.cn/escook?page_id=3707158761215217
感谢黑马,这是一次自己在学习黑马中慢慢自己跟着做起来的项目,是黑马SSM最后阶段的一次小的整合mybais项目
|--Activity不允许横竖屏切换 |--Activity常用小技巧 |--Activity按返回直接回到桌面 |--aidl之结合反射获取应用缓存大小等空间占用 |--aidl调用系统service未公开的方法挂电话 |--aidl调用系统未公开的方法代码示例...
黑马程序员入学Java知识——精华总结
黑马程序员分布式优品电商项目完整视频资料
黑马程序员Javaweb教材源代码,适合学习配套使用
2018年下半年黑马程序员课改之后最新Java企业级项目—学成在线学习平台。包含所有的资料和代码
《JavaWeb程序设计任务教程》一书源代码,中国工信出版社出版,黑马程序员编著,传智播客旗下高端教育品牌“黑马程序员”项目实战配套用书
正在自学黑马程序员Java全套,目前只学了Javase,接下来是Javaweb,把自己整理的笔记分享一下。
黑马程序员 C语言提高课程配套课件 黑马程序员 C语言提高课程配套课件
黑马程序员,C++核心编程
黑马程序员c++配套课件 《轻松搞定c++语言》 黑马程序员c++配套课件 《轻松搞定c++语言》
Javaweb基础全课程笔记,黑马程序员上课笔记,主要涉及前端 jsp和servlet等
黑马程序员 shh框架-crm项目源码-分享一下供大家下载使用
黑马程序员入学面试题,复习必备,事半功倍。
黑马程序员JavaEE49期