1,分析游戏界面,通过游戏界面,抽象出来几种类型

2,定义类型

Cell:

公共特征:行号,列号,图片

共同行为:向左,向右,向下移动,提供JavaBean相关的规范

Tetromino类型,其七种组合的父类

共同特征,cells——四格方块(用数组表示)-——权限修饰词protect

共同行为:向左,向右,向下移动,提供JavaBean相关规范

添加randomOne()用来随机生成一个四格方块

根据父类,定义出来七种子类:T ,Z,O,I,L,J,S

给属性附具体元素

主类Tetris------extends JPanel

提供静态属性,加载静态资源

1,面板会自动调用绘制方法paint(Graphics g)

2,重写paint方法,绘制图片背景,

,   3,绘制网格和嵌入墙中的方块paintWall(Graphics g)提供属性wall ----是一个Cell类型的二维数组,20行,10列,属性Cell_SIZE-----一个方法的宽度

4,提供属性,

CurrentOne----正在下降的四方格

5,提供绘制正在下落的方块的方法

PaintCurrentOne(Graphics g)

6,在重写的paint方法中调用

1)在paint方法中平移坐标轴到相应的位置

2)调用paintWall()方法,且完成里面的功能

3)画下一个下落的四方格到右上角相应的位置,paintNextOne()

7,写一个start方法,用JPanel的对象调用此方法,在此方法中实现游戏的主要逻辑

1)先用while(true)死循环中加入下落的方法来实现四方格的下落,每下落一次都要重新画,通过调用repaint()方法来实现,repaint()方法也是JPanel中的,且repaint()会自己调用paint()方法

2)加入键盘监听事件,用键盘来控制四方格的移送

3)KeyListener l=new KeyAdapter() {}匿名内部类中 //开启键盘监听事件,且是键盘按下去所调用

int code=e.getKeyCode()获取down键,left键,Right键的编号

通过switch()case调用相应的方法来实现移动(其中KeyEvent.VK_DOWN是常量值==down键的编号, KeyEvent.VK_LEFT==left键的编号,KeyEvent.VK_RIGHT==Right键的编号)

4)再外类中写softDropAction()方法来实现down键控制下落

在其中会调用canDrop()方法,来判断是否能继续下落

若能下落currentOne调用Tetromino指向的子类中的softDrop()方法来实现下落

5)在外类中写moveLeft()方法来实现left键控制左移

先执行一次左移currentOne.moveLeft(),currentOne调用Tetromino指向的子类中的moveLeft()方法来实现;

再调用noMove()和coincide()方法,来判断是否需要右移来抵消多左移的一次

因为noMove()代表是否出最左边的线,coincide()代表是否与已有的方块重合,若返回true则通过currentOne.moveRight()来抵消

5)在外类中写moveRight()方法来实现left键控制左移

实现和外类中的moveLeft()类似

6)注意:在moveLeft()和moveRight()方法的判断条件是noMove与coincide或的关系,一定要把noMove()写在      coincide()的前面,这样可以防止在coincide()方法中出现数组下标越界的异常

备注:javaBean规范,就是程序员在定义类时,默认遵守的一种规范

如:(1)添加两个构造器

(2)属性一般都是私有化

(3) 提供共有的get/set方法

(4)重写toString方法,用来描述属性的信息

(5)重写equals方法和hasCode方法

java俄罗斯方块总结_java写的俄罗斯方块的心得相关推荐

  1. php开发俄罗斯方块,用JavaScript写一个俄罗斯方块

    曾经用 Turbo C++ 3.0 写过 DOS 下的俄罗斯方块,不久之后又用 VB 写了另一个版本.这次决定用 JavaScript 再写一个并非完全心血来潮,从技术上来说,主要是想尝试使用 web ...

  2. java 俄罗斯方块简易_Java实现简易俄罗斯方块

    本文实例为大家分享了Java实现简易俄罗斯方块的具体代码,供大家参考,具体内容如下 一.将对象抽象为类 首先考虑俄罗斯方块游戏中含有哪些具体的对象,对象中含有哪些具体属性和方法,然后用代码来实现. 建 ...

  3. java 编辑二进制文件_java写二进制文件,不能直接编辑,该怎么操作?

    java写二进制文件,不能直接编辑,该怎么操作? 关注:138  答案:3  mip版 解决时间 2021-01-14 21:48 提问者醒不来的梦 2021-01-14 07:45 我现在想做写一个 ...

  4. java 移动图片_Java写的一个简单的图片移动小程序

    前两天,有一个小姑娘让帮忙给其写一个小玩意,就是在Panel上绘制一个图片,然后通过键盘的方向键进行控制移动.虽然比较简单,这里还是希望和大家分享一下,里面有两点特别需要注意的知识点,这里一并加以说明 ...

  5. java 数独算法_JAVA写的数独,附带生成唯一解和各种难度的算法

    [实例简介] 自己用GUI写的一个数独小游戏..可选择难度,生成一个只有唯一解的数独..可显示答案,玩家也可以自己做题.代码+算法全在里面 [实例截图] [核心代码] Sudoku ├── Sudok ...

  6. java 分子 分母_Java写一个类表示分数。分数由分子和分母组成。

    写一个类表示分数.分数由分子和分母组成. 写一个方法,实现分数相乘. 写一个方法,显示分数的值. 利用这个类:求分数 1/3 和 2/5 的乘积,并显示最终结果. public class zhouc ...

  7. java银行取款_Java写简单的银行取钱系统

    按ctrl+a 选中所有的代码删除,再复制下面的代码输入即可 import java.util.Scanner; public class 简单的银行取钱系统 //class的名字可以自己新建和这个一 ...

  8. Java做诗_Java写诗程序

    import java.util.Random; public class test_word { public static void main(String[] args) { System.ou ...

  9. python编的俄罗斯方块游戏下载_python写的俄罗斯方块游戏

    python写的俄罗斯方块游戏 功能包括:记录所花费时间;消去的总行数;总分;排行榜,最高记录查看等. 排行榜中包含一系列的统计功能,如单位时间消去的行数,单位时间得分等. from Tkinter ...

最新文章

  1. 分页技巧_实现第一个分页功能(回复列表中的分页)
  2. Window Mobile SmartPhone智能手机软件开发vs2005 简体中文版 设置指南!
  3. Input.GetAxis
  4. POJ 1028: Web Navigation
  5. 斯坦福CS231n项目实战(三):Softmax线性分类
  6. linux命令大全增删改查,crudini命令
  7. Asp.Net的Forms验证,解决Cookie和Seesion失效时间。
  8. @propertysource 读不到properties_敢不敢来挑战,读对一班就是学霸
  9. C#效率优化(2)-- 方法内联
  10. java web 学习计划
  11. 屏幕录像大师如何把LXE文件转换为EXE文件
  12. SXF2019IP段合并
  13. 滑雪问题(dfs+dp)
  14. 微信小程序怎么开发自己的小程序?
  15. redis内存占用过高的问题排查
  16. 【opencv450-samples】delaunay 三角剖分和 voronoi 细分
  17. 解决:记事本打开无乱码而用UE打开乱码现象
  18. java jwt 用户认证_jwt身份验证
  19. 品牌笔记本正规与非正规维修上的差别
  20. 当你明白无常,你就不会张扬

热门文章

  1. 2023兔年新春好友送祝福微信小程序源码
  2. 基于Springboot+Netty实现Web聊天室【网络通信编程】
  3. IE Canvas的颜色问题
  4. 维特比算法(Viterbi)
  5. 问题解决:pvcreate过程中错误Device /dev/sdb not found (or ignored by filtering)
  6. 网易2019笔试牛牛找工作Java解法
  7. 定制table2excel插件,支持自定义列,导出excel
  8. 数据预处理-样本分布(正态分布、偏态分布)
  9. 蝉花与冬虫夏草的比较
  10. HAWQ个人学习笔记(一)——HAWQ介绍