Java实现俄罗斯方块小游戏。(附完整源代码)

丈夫志四海,万里犹比邻。这篇文章主要讲述Java实现俄罗斯方块小游戏。(附完整源代码)相关的知识,希望能为你提供帮助。
【Java实现俄罗斯方块小游戏。(附完整源代码)】


一、游戏背景俄罗斯方块是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。



规则说明:


由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。
二、功能实现开发工具:idea、jdk8
技术汇总:java基础知识、数组、面向对象、多线程、IO流、Swing。
整体代码分为三个模块:方格模块,七种图形模块,俄罗斯方块主模块。
小方块类:Cell
public class Cell
// 行
private int row;
// 列
private int col;
private BufferedImage image;

public Cell()


public Cell(int row, int col, BufferedImage image)
this.row = row;
this.col = col;
this.image = image;


public int getRow()
return row;


public void setRow(int row)
this.row = row;


public int getCol()
return col;


public void setCol(int col)
this.col = col;


public BufferedImage getImage()
return image;


public void setImage(BufferedImage image)
this.image = image;


@Override
public String toString()
return "Cell" +
"row=" + row +
", col=" + col +
", image=" + image +
;


@Override
public boolean equals(Object o)
if (this == o)
return true;


if (!(o instanceof Cell))
return false;

Cell cell = (Cell) o;
return getRow() == cell.getRow() & &
getCol() == cell.getCol() & &
Objects.equals(getImage(), cell.getImage());


@Override
public int hashCode()
return Objects.hash(getRow(), getCol(), getImage());


//左移动一格
public void left()
col--;


//右移动一格
public void right()
col++;


//下移动一格
public void down()
row++;



  四方格图形的父类:Tetromino
public class Tetromino

public Cell[] cells = new Cell[4];

//旋转的状态
protected State[] states;
//声明旋转次数
protected int count = 10000;


//左移方法
public void moveLeft()
for (Cell cell : cells)
cell.left();



//右移方法
public void moveRight()
for (Cell cell : cells)
cell.right();



//单元格下落
public void moveDrop()
for (Cell cell : cells)
cell.down();



//编写随机生成四方格
public static Tetromino randomOne()
int num = (int) (Math.random() * 7);
Tetromino tetromino = null;
switch (num)
case 0:
tetromino = new I();
break;
case 1:
tetromino = new J();
break;
case 2:
tetromino = new L();
break;
case 3:
tetromino = new O();
break;
case 4:
tetromino = new S();
break;
case 5:
tetromino = new T();
break;
case 6:
tetromino = new Z();
break;


return tetromino;


//顺时针旋转的方法
public void rotateRight()
if (states.length == 0)
return;


//旋转次数+1
count++;
State s = states[count % states.length];
Cell cell = cells[0];
int row = cell.getRow();
int col = cell.getCol();
cells[1].setRow(row + s.row1);
cells[1].setCol(col

    推荐阅读