java俄罗斯方块总结_java写的俄罗斯方块的心得

本文总结了使用Java编写俄罗斯方块游戏的过程,包括分析游戏界面,抽象出Cell和Tetromino类,实现各个方块类型的移动,以及在主类Tetris中进行绘制和游戏逻辑控制。详细讨论了键盘监听、四方格的下落、左右移动以及JavaBean规范的应用。
摘要由CSDN通过智能技术生成

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方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值