




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目实战俄罗斯方块,主讲:贾宗维,程序演示,从什么地方入手,涉及到几个对象(类) 每个类有什么方法,游戏的显示面板,GamePanel 类 void display();/ 显示,方块,Shape 类 void moveLeft(); / 左移 void moveRight(); / 右移 void moveDown();/ 下移 void rotate(); / 旋转(变形) void drawMe(); / 显示 自己能定时下移,private class ShapeDriver implements Runnable Override public void run() / TODO A
2、uto-generated method stub while(true) moveDown(); listener.shapeMoveDown(Shape.this); try Thread.sleep(1000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); ,图形工厂,ShapeFactory 类(图形工厂) Shape getShape();/ 生产出不同形状的图形,Ground,Ground类 void accept(Shape);/ 接受图形, 把图形变成
3、障碍物 void drawMe(); / 显示,类之间的关系,Shape 定时下落,Controller,处理按键事件,处理逻辑,GamePanel,显示,ShapeFactory 图形工厂,Ground,创建一个监听器接口,图形定时下落, 每下落一次后都需要重新显示 图形移动和变形后,也需要重新显示 它又不能直接操控GamePanel,怎么办呢 ?,Controller,通过事件监听建立联系,Shape 定时下落,GamePanel,ShapeListener,处理按键事件,触发按键事件,重新显示,事件源,事件源,下落后,触发事件,shapeMovedDown,状态改变 需要重新显示,Sha
4、peListener,ShapeListener : void shapeMovedDown(Shape);,基本概念: 怎么表示图形, 障碍物,可以把显示区域想象成一个大大表格,一个格子可以代表一个障碍物,几个连在一起的格子可以组成一个图形。 怎么区分格子呢(怎么表示这个格子呢)? 用坐标,每个格子有它自己的坐标,左上角的那个格子的坐标是 (0,0),基本概念: 怎么表示图形, 障碍物,y 坐 标,x 坐标,重要概念: 怎么表示图形的状态,可以用一个 4 4 的方阵表示,每一个图形都可以有多种状态。 如下所示,为什么用44 的方阵表示? 因为最宽的和最高的图形就是4个宽或4个高(杠子),图形
5、变形,变形就是显示下一个状态,表示图形的状态,用一个数组表示, 左图用如下数组表示 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,图形的多种状态,一个图形可以有多种状态,左边的图形可以这样表示: 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 1, 1,
6、0, 0, 0, 0, 0, 0 ,图形的移动,图形类里面要保存自己的位置信息, 用left 表示图形到左边界的距离,top 表示图形到上边界的距离 图形移动就是改变left 和 top 的值,基本概念: 图形绝对坐标和相对坐标,y 坐 标,x 坐标,(0, 0),left,top,图形的移动,y 坐 标,x 坐标,向上移动 top 减 1 向左移动 left 减 1 向下移动 top 加 1 向右移动 left 加 1,top,left,画图形,把组成图形的格子画出来: 画方阵中标志为1 的格子,标志为0 的不画。 图形中的格子的在显示区域中的位置为: x 坐标: left + 格子的x 相
7、对坐标 y 坐标: top + 格子的y 相对坐标 (相对坐标是格子在方阵中的坐标),格子的宽度和高度,像素坐标 (x, y),矩形(格子)的宽度 CELL_WIDTH,矩形(格子)的高度 CELL_HEIGHT,格子坐标和像素坐标,这个点的像素坐标为 x 坐标: left * 一个格子的宽度 y 坐标: top * 一个格子的高度,left 是这个格子距左边界的距离 top 是这个格子距上边界的距离,图形的移动或变形,按键以后,图形是否就一定能够移动或变形? 不一定, 如果下一步的动作会使图形超出边界或有的点与障碍物重叠,则不允许图形做这个动作。,图形的移动或变形,y 坐 标,x 坐标,(0
8、, 0),现在这个状态, 图形只可以向左移动。因为向右图形就超出边界,向下就会与障碍物重叠,如果下一步的动作是向下,则这个图形应该是变成障碍物,而不是继续向下落。,Controller,通过事件监听建立联系(完善后),Shape 定时下落,GamePanel,下落前, 询问一下 是否可以下落,isShapeMoveDownable,(处理完事件后 需要重新显示),ShapeListener,处理按键事件,处理 isShapeMoveDownable 事件(问Ground, 返回结果),触发按键事件,重新显示,事件源,事件源,事件源,下落后,触发事件,shapeMoveDown,状态改变 需要重
9、新显示,怎么存储和表示障碍物,用一个和 显示区域的格子 相对应的 二维数组 保存障碍物的位置信息 如果对应的位置是障碍物, 则这个数组中相应的元素就为1,不是则为0,怎么把图形变成障碍物,把属于图形的格子对应的位置都变成障碍物,判断时要注意,是指图形的身体超出边界或与障碍物重叠,而不是表示这个图形的 4 4 的方阵,因为方阵中的点并不都是图形的身体,消除满行,这一行没有空白,则这一行就是满行 满的那行 上面所有的行 整体下移一行 就是消除这个满行,判断游戏是否结束,如果有的障碍物超出了上边界(容器满了),就是游戏结束 (如果图形的初始位置为第一行, 则用这个逻辑: 第一行如果有障碍物, 就是游戏结束),完善后的Ground,Ground类 boolean isMoveable(Shape, action);/ 图形下一步的动作是否会被允许(边界,障碍物) void accept(Shape);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度工地施工期间应急预案与响应协议
- 二零二五年度车库买卖合同附新能源汽车充电服务合同
- 2025年度明星参与综艺节目票房对赌协议合同
- 2025年广东年货运从业资格证考试试题题库
- 2025年珠海道路运输从业资格考试下载
- 出国游学夏令营合同
- 2025年南京货运资格证考试口诀
- 三农村土地整治与利用实施方案
- 三农村电商网络舆情监控指南
- 2025年合肥货运从业资格证模拟考试试题及答案解析
- DGJ32 J 67-2008 商业建筑设计防火规范
- 2024年上海交通大学招考聘用高频考题难、易错点模拟试题(共500题)附带答案详解
- 浙江省金华市2024年初中毕业升学适应性检测 科学试题卷
- 延长石油招聘笔试试题
- DB-T 29-22-2024 天津市住宅设计标准
- 2024年赣州职业技术学院单招职业适应性测试题库及答案解析
- DL∕T 5209-2020 高清版 混凝土坝安全监测资料整编规程
- 2024年山东省潍坊市中考数学真题试题(含答案及解析)
- 开票税点自动计算器
- 2024年江苏农牧科技职业学院单招职业适应性测试题库及参考答案
- 医疗器械质量安全风险会商管理制度
评论
0/150
提交评论