-
如图
package test;
import .*;
import Event;
import Listener;
import nt;
import tener;
import .*;
import
public
class Tetris extends JFrame {
public Tetris() {
Tetrisblok a = new Tetrisblok();
addKeyListener(a);
add(a);
}
public static void main(String[] args)
{
Tetris frame = new Tetris();
JMenuBar menu = new JMenuBar();
nuBar(menu);
JMenu game =
new JMenu(
游戏
JMenuItem newgame =
(
新游戏
JMenuItem pause
= (
暂停
JMenuItem goon
= (
继续
JMenuItem exit
= (
退出
JMenu help =
new JMenu(
帮助
JMenuItem about =
(
关于
(game);
(help);
ationRelativeTo(null);
aultCloseOperation(_ON_CLOSE);
e(220, 275);
le(
内测版
//
ecorated(true);
ible(true);
izable(false);
}
}
//
创建一个俄罗斯方块类
class
Tetrisblok extends JPanel implements KeyListener {
// blockType
代表方块类型
//
turnState
代表方块状态
private int blockType;
private int score = 0;
private int turnState;
private int x;
private int y;
private int i = 0;
int j = 0;
int flag = 0;
//
定义已经放下的方块
x=0-11,y=0-21;
int[][] map = new int[13][23];
//
方块的形状
第一组代表方块类型有<
/p>
S
、
Z
、
L
、
J
、
I
、
O
、
T 7
种
第二组
代表旋转几
次
第三四组为
方块矩阵
private final
int shapes[][][] = new int[][][] {
//
i
{ { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{
0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }
},
// s
{ { 0, 1, 1, 0,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{
1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 1, 0, 0, 0, 1, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 } },
//
z
{ { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 1, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{
0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }
},
// j
{ { 0, 1, 0, 0,
0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
{
1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0 } },
//
o
{ { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 1, 1, 0, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 0,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{
1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
},
// l
{ { 1, 0, 0, 0,
1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
{
1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0 },
{ 0, 0, 1, 0, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0 } },
//
t
{ { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{
0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }
};
//
生成新方块的方法
public void newblock() {
blockType = (int) (() * 1000) % 7;
turnState = (int) (() * 1000) % 4;
x = 4;
y = 0;
if (gameover(x, y) == 1) {
newmap();
drawwall();
score = 0;
ssageDialog(null,
}
}
//
画围墙
public void
drawwall() {
for (i = 0; i < 12; i++) {
map[i][21] = 2;
}
for
(j = 0; j < 22; j++) {
map[11][j] = 2;
map[0][j] = 2;
}
}
//
初始化地图
public void newmap() {
for
(i = 0; i < 12; i++) {
for (j = 0; j <
22; j++) {
map[i][j] = 0;
}
}
}
//
初始化构造方法
Tetrisblok() {
newblock();
newmap();
drawwall();
Timer timer = new Timer(1000, new
TimerListener());
();
}
//
旋转的方法
public void turn() {
int
tempturnState = turnState;
turnState =
(turnState + 1) % 4;
if (blow(x, y,
blockType, turnState) == 1) {
}
if (blow(x, y, blockType, turnState) ==
0) {
turnState = tempturnState;
}
repaint();
}
//
左移的方法
public void left() {
-
-
-
-
-
-
-
-
-
上一篇:丁元英-的语言魅力和思维魅力
下一篇:软件工程课程设计俄罗斯方块