俄罗斯方块Java编写精髓.ppt

上传人:jun****875 文档编号:9390078 上传时间:2020-04-05 格式:PPT 页数:26 大小:1.23MB
返回 下载 相关 举报
俄罗斯方块Java编写精髓.ppt_第1页
第1页 / 共26页
俄罗斯方块Java编写精髓.ppt_第2页
第2页 / 共26页
俄罗斯方块Java编写精髓.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
项目评审 俄罗斯方块 主讲人 雷凯组员 沈唯唯 李有宁 田园田亮 尹亮 界面展示 程序运行成功后 进入游戏界面 如左图所示 游戏暂停 按下键盘按键 P pause 游戏进入停止状态 等待用户按下 C Continue 键继续游戏 退出游戏 按下键盘按键 Q Quit 弹出系统提示框 选择是否要退出游戏 游戏结束 当方框到达顶端时 Wall 0 4 null 判定游戏结束 按下 S 可重新初始化界面开始游戏 具体实现 Cell 格子类 Tetromino 四格方块类 7个子类 T I O S Z J L 一个内部类 State 存放四个方块旋转时的坐标状态 Tetris 俄罗斯方块类 extendsJpanel逻辑处理及方法的具体实现 Cell 属性 row col Image方法 drop 向下降落一个单位leftMove 向左移动一个单位rightMove 向右移动一个单位 Tetromino Cell cells newCell 4 State states 旋转状态Index 旋转下标ProtectedclassState 旋转状态类 内部类 7个子类7种方块rotateRight 向右旋转rotateLeft 向左旋转softDrop 下落moveLeft 左移moveRight 右移RandomOne 随机生成一个四格方块 Tetris paint Graphicsg 重写绘图方法paintWall Graphicsg 绘制墙action 通过调用该方法启动软件Quit 退出pauseAction 暂停continueAction 继续paintTetromino Graphicsg 绘制四格方块paintNextOne Graphicsg 绘制下一个方块paintScore Graphicsg 绘制成绩paintLines Graphicsg 绘制已消除行数paintPause Graphicsg 绘制暂 继续停提示 softDropAction 下落控制方法canDrop 判断是否能够继续下落landToWall 着陆到墙destroyLines 销毁的行数fullCells introw 判断一行是否满了deleteLine introw 删除一行checkGameOver 检查游戏结束状态moveLeftAction 判断左移是否出界moveRightAction 判断右移是否出界rotateRightAction 判断旋转是否出界outOfBounds 检查是否出界coincide 判断是否重合hardDropAction 瞬间下降startAction 开始动作流程 简单工厂模式实例化四格方块T I O S Z J L 田亮 将7个子类封装到类Tetromino 在构造方法里初始化四格方块的初始位置 row col 和相对位置 初始位置 cell 0 0 4 cell 1 0 3 cell 2 0 5 cell 3 1 3 以 L 型四格方块为例 以编号为 0 的格子为旋转轴 计算其他格子的相对坐标 states 0 0 0 0 1 0 1 1 1 states 1 0 0 1 0 1 0 1 1 states 2 0 0 0 1 0 1 1 1 states 3 0 0 1 0 1 0 1 1 states 0 states 1 states 2 states 3 旋转 左移 右移 沈唯唯 privateintIndex 10000 表示旋转状态下标 设置为10000防止旋转次数过多而使游戏无法正常进行 在Tetromino类中添加内部类State属性 row0 col0 row1 col1 row2 col2 row3 col3以上8个属性表示4个方块的相对坐标 构造方法 publicState introw0 旋转 rotateRight 下标Index自增rotateLeft 下标Index自减States states index states length 当前状态s为四格方块旋转 index states length 次的状态 以cells 0 为旋转轴 根据初始化的相对坐标cells 1 setRow cells 0 getRow s row1 cells 1 setCol cells 0 getCol s col1 cells 2 setRow cells 0 getRow s row2 cells 2 setCol cells 0 getCol s col2 cells 3 setRow cells 0 getRow s row3 cells 3 setCol cells 0 getCol s col3 左移 右移 moveLeftAction 左移先调用tetromino moveLeft 如果出界 或者重合再调用tetromino moveRight 在moveLeft方法中遍历当前对象cells中所有cell对象循环调用cell leftMove moveRightAction 右移的原理同上 下落 李有宁 softDropAction 一步一步下落if canDrop 为true 检查当前方块是否能够继续下落 则调用tetromino softDrop 在softDrop 中遍历cells对象调用cell drop hardDropAction 瞬间下降while canDrop 为true 检查当前方块是否能够继续下落 则调用tetromino softDrop 在softDrop 中遍历cells对象调用cell drop 否则调用方法 landToWall 着陆到墙destroyLines 销毁行数checkGameOver 检查游戏是否结束 landToWall 着陆到墙Cell cells tetromino cells 遍历当前四格方块对象将每一个格子对象赋值给墙wall cell getRow cell getCol celldestroyLines 销毁行数遍历每行的格子 如果fullCells row 遍历当前行的各自是否是满的 为true 调用deleteLine row 消除这行 lines 最后加成绩this score scoreTable lines scoreTable 为得分表 判断方法 暂停 继续 退出 田园 checkGameOver 检查游戏是否结束如果wall 0 4 null成立 调用timer cancle 关闭计时器 游戏结束 outOfBounds 出界检查方法Cell cells tetromino cells 遍历当前四格方块对象的每个格子如果 cell getCol COLS cell getRow ROWS 成立 方块是否出了长方形界面 返回true coincide 判断重合方法Cell cells tetromino cells 遍历当前四格方块对象的每个格子如果 cell getCol 0 将暂停标记设置为true continueAction 继续游戏pause false 设置暂停标记为falsetimer newTimer 创建一个新的计时器对象timer schedule newTimerTask publicvoidrun softDropAction repaint inteval inteval schedule TimerTasktask longdelay longperiod 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行Inteval为间隔时间800ms 绘图方法 尹亮 paint Graphicsg 重写绘图方法g drawImage background 0 0 null 画背景g translate 15 15 将图形上下文的原点平移到当前坐标系中的点 x y 绘制墙 四格方块 下一个方块 成绩 已消除行数 暂停 继续提示如果游戏结束标记为true 绘制游戏结束的图片paintWall Graphicsg 绘制墙将长方形区域划分成20行 10列 遍历每个方块对象 若cell不为空g drawImage cell getImage x 1 y 1 null 图像大小x 1 y 1是图形看起来顺眼 paintTetromino Graphicsg 绘制四格方块如果没有正在下落的方块就不绘制 否则遍历四格方块对象的四个小格子并绘制 paintNextOne Graphicsg 绘制下一个方块如果没有正在下落的方块 就不绘制 否则遍历随机生成的下一个四格方块的四个小格子并绘制 paintScore Graphicsg 绘制成绩paintLines Graphicsg 绘制已消除行数paintPause Graphicsg 绘制暂停 继续提示以上3个方法均是先设置字体格式 颜色 位置再绘制 程序启动方法 雷凯 通过静态代码块将背景图片 7种方块图片和游戏结束图片加载进来 这会节省很多时间 static Classcls Tetris class background ImageIO read cls getResource image 可以读取图片文件到内存中的对象 该静态代码块需捕捉异常 IOException action 启动软件调用startAction 开始动作流程 创建键盘按键监听对象newKeyAdapter keyPressed KeyEvente 如果有按键按下完成时候 pressed 就会执行VK Q quit 退出VK S startAction 重新开始游戏VK C continueAction 继续游戏VK P pauseAction 暂停游戏VK DOWN softDropAction 下落一格VK UP rotateRightAction 旋转VK SPACE hardDropAction 下落到底部VK LEFTmoveLeftAction 左移一格VK RIGHT moveRightAction 右移一格 startAction 开始动作流程pause false gameOver false score 0 lines 0 清空墙 遍历所有行 填充数据为null 初始化对象tetromino nextOne生成随机四格方块 timer newTimer 创建一个新的计时器对象TimerTasktask newTimerTask publicvoidrun softDropAction repaint 创建一个新的计时器任务 timer schedule task inteval inteval 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行 谢谢观赏
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!