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

Posted 百思不得小赵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现俄罗斯方块小游戏。(附完整源代码)相关的知识,希望对你有一定的参考价值。


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

一、游戏背景

俄罗斯方块是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文: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++;

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

 四方格图形的父类: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 java如何用图形界面显示二维数组俄罗斯方块

团队作业

java的俄罗斯方块代码

Linux下c语言实现有色界面俄罗斯方块

Android 安卓原生UI实现游戏《俄罗斯方块》,算法太多,把我写崩溃了,附源码

Android 安卓原生UI实现游戏《俄罗斯方块》,算法太多,把我写崩溃了,附源码