JAVA编写俄罗斯方块

JAVA编写俄罗斯方块

一.分析游戏界面

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

1.Cell类型

2.Tetromino类型(七种组合的父类)

3.根据父类定义出七种T,O,I,J,L,S,Z子类型(七种组合各自成一个类都继承于父类Tetromino)

4.主类Tetris---extends JPanel(提供静态属性,加载静态资源)

二.Cell类

1.Cell类---俄罗斯方块中最小的最小单位。

2.每个方格都有行号,列号和图片,我们以行号和列号区分方格,所以将共同特征抽象出来定义成属性。

row---行号   col---列号   image---对应的图片

3.同理,以相同的行为定义为方法。

向左移动---left()

向右移动---right()

向下移动---drop()


4.JAVABEAN规范提供无参和有参构造器,get/set方法,toString()方法。




三.Tetromino类型(七种组合的父类)

1.四格方块属性:
cells----对应四格小方块
Cell[] cells =  new Cell[4];

2.对应行为(方法):

向左移动---moveLeft()

向右移动---moveRight()

向下移动---softDrop()

3.使用for循环让每一个方块向左,向右,向下移动


四.根据父类定义出七种T,O,I,J,L,S,Z子类型(七种组合各自成一个类都继承于父类Tetromino).

1 T,O,I,J,L,S,Z子类型:

1.T类型:

提供构造器,进初始化,T型的四格方块的位置.(其他6种同理)


2.图片加载

图片只需加载一次,用static{}静态块加载,下面定义一个主类,写在主方法里。

五.主类Tetris---extends JPanel(提供静态属性,加载静态资源)

1.定义静态属性(加载图片)加载图片

2.用static{}块加载图片(用try...catch()捕捉异常)

备注:getResource(String url),url :加载图片的路径,相对位置同包下。


3.启动程序的入口   游戏开始

1.创建一个游戏窗口

2.俄罗斯方块的主类:前提:必须是一块面板JPanel,可以嵌入窗口。

创建游戏界面,即面板

Tetris panel = new Tetris();

将面板嵌入窗口

frame.add(panel);

3.面板上自带一个画笔,有一个功能:自动绘制(其实是调用了JPanel里的paint())

重写Jpanel类中的paint(graphtcs g)绘制背景:

public void paint(Graphics g) {

  }


4.定义面板两个属性:

5.随机生成一个四格方块:

6.绘制墙:属性:墙,20行 10列的 表格 宽度为26

private Cell[][] wall  = new Cell[20][10];


7.绘制正方体


8.提供绘制正在下落currentOne的方块:



9.绘制一下个将要下落的四格方块:paintNextOne(g)

10.游戏的主要逻辑封装在start方法里:panel.start()

public void start(){

}

11.四格方块自动下落

12.定义方法canDrop()和landTowall():



13.开启键盘监听事件:

14.使用Left键,Right键,Down键控制行为:

Down键:

Left键:

Right键:


以上代码结果:


               

   









  • 17
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值