Java小游戏之俄罗斯方块

前言:基于别人的作品上进行分析

1、划分对象

(1)小方块:Cell对象

(2)4个小方块组成的图形:Tetromino对象

(3)游戏面板:TetrisPanel对象

2、分析对象中应包含的属性和方法

(1)Cell类

private int row;//当前方块所在的行;方块的高度是行高,方块的宽度是列宽

private int col;//当前方块所在的列

private Image image;//当前方块的贴图

moveRight();//右移一步

moveLeft();//左移一步

moveDown();//下移一步

(2)Tetromino类

public Cell[] cells = new Cell[4]; //每一个图形对象都是由4个方块对象组成

public State[] states;//状态数组存放图形的旋转状态,比如T形状图形,有4种状态

randomTetromino();//随机生成图形的方法

softDrop();//图形下移一步的方法

moveRight();//图形右移一步的方法

moveLeft();//图形左移一步的方法

rotateRight();//图形向右旋转一步的方法

rotateLeft(); //若向右旋转超出了面板强,则可以用该方法及时矫正

对该类的其它设计:

State类可以作为Tetromino类的内部类:int row0,col0,row1,col1,row2,col2,row3,col3;//每一种状态由8个参数确定,对应每个

方块在面板中的横纵坐标

随机生成的图形一共有七种,因此Tetromino类可以有七个子类分别对应这七种图形,子类的构造方法要设计好自己的cells和

states数组。

(3)TetrisPanel类

private Tetromino tetromino;  //正在下落图形

private Tetromino nextOne;  //下一个下落图形

public static final int ROWS = 20;//面板的行数 

public static final int COLS = 10; //面板的列数 

private Cell[][] wall = new Cell[ROWS][COLS]; //面板墙 

private int lines; //消掉的行数

private int score;//分数 

public static final int CELL_SIZE = 26;//表示方块是宽高都为26像素的正方块

private static Image background;//面板的背景图片

public static Image I;//每一种图形都有一张背景图填充它

public static Image J;

public static Image L;

public static Image S;

public static Image Z;

public static Image O;

public static Image T;

绘制面板涉及的方法:

ImageIO.read(url); //读取磁盘上的图片到内存,存放到各个变量中

paint(Graphics g); //绘制面板的方法

        g.drawImage(background, 0, 0, null);//将背景图添加到面板中

        g.translate(15, 15);//平移绘图坐标系,使(0,0)坐标在面板墙的左上角

        paintTetromino(g);//绘制正在下落的方块

        paintWall(g);//绘制面板墙

        paintNextOne(g);//绘制下一个要下落的方块

        paintScore(g);//绘制分数

图形下落过程涉及的方法:

softDropAction();//图形自动下落过程

       tetrominoCanDrop();//检查当前的图形能否继续下落

       tetrominoLandToWall();//让当前图形着陆

       destroyLines();//是否删除一行,计算得分的方法

                   fullCells(int row); //判断一行是否满了

                   deleteRow(int row); //删除给出行,即让上一行取代给出行

       checkGameOver();//检查游戏是否结束的方法

控制图形的方法:

moveRightAction(); //图形向右移动的过程,右键

moveLeftAction(); //图形向左移动的过程,左键

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值