游戏代码

master
puzv3cxoa 2 years ago
parent c1d0d507ee
commit 72c38db98d

@ -48,11 +48,14 @@ public class Tetris extends JPanel {
public static final int STOP = 1;
public static final int OVER = 2;
//当前游戏状态值
private int game_state;
private static int game_state;
//显示游戏状态
String[] show_state = {"P[pause]", "C[continue]", "S[replay]"};
//创建对象sound
Sound sound = new Sound();
//创建对象sound1
Sound1 sound1 = new Sound1();
//载入方块图片
public static BufferedImage I;
public static BufferedImage J;
@ -96,47 +99,71 @@ public class Tetris extends JPanel {
}
public void start() {
game_state = PLING;
sound.play("music\\俄罗斯方块BGM.wav");//调用音乐播放
KeyListener l = new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
switch (code) {
//直接结束游戏
case KeyEvent.VK_G:
if (game_state == PLING) {
game_state = OVER;
}
//停止播放第一个音乐
sound.stop();
//游戏结束播放第二个音乐
sound1.run();
break;
//向下
case KeyEvent.VK_DOWN:
sortDropActive();
break;
//向左
case KeyEvent.VK_LEFT:
moveleftActive();
break;
//向右
case KeyEvent.VK_RIGHT:
moveRightActive();
break;
//变形
case KeyEvent.VK_UP:
rotateRightActive();
break;
//瞬间下落
case KeyEvent.VK_SPACE:
hadnDropActive();
break;
//暂停
case KeyEvent.VK_P:
//判断当前游戏状态
if (game_state == PLING) {
game_state = STOP;
}
sound.stop();//停止播放音乐
break;
case KeyEvent.VK_C:
if (game_state == STOP) {
game_state = PLING;
}
//再次调用第一段音乐
sound.run();
break;
case KeyEvent.VK_S:
//重新开始
game_state = PLING;
wall = new Cell[14][10];
game_state = PLING;//让游戏处于运行状态
wall = new Cell[14][9];
currentOne = Tetromino.randomOne();
nextOne = Tetromino.randomOne();
totalScore = 0;
totalLine = 0;
//重新开始让第二个音乐停止
sound1.stop();
//重新开始音乐再次播放
sound.run();
break;
}
}
};
@ -159,6 +186,8 @@ public class Tetris extends JPanel {
destroyLine();
if (isGameOver()) {
game_state = OVER;
//游戏结束播放第二个音乐
sound1.run();
} else {
//游戏没有结束
currentOne = nextOne;
@ -278,6 +307,7 @@ public class Tetris extends JPanel {
//判断游戏是否结束
public boolean isGameOver() {
Cell[] cells = nextOne.cells;
for (Cell cell : cells) {
int row = cell.getRow();
int col = cell.getCol();
@ -288,6 +318,7 @@ public class Tetris extends JPanel {
return false;
}
private void paintState(Graphics g) {
g.setColor(Color.orange);
if (game_state == PLING) {
@ -295,7 +326,9 @@ public class Tetris extends JPanel {
} else if (game_state == STOP) {
g.drawString(show_state[STOP], 500, 660);
} else {
sound.stop();//游戏结束音乐停止
g.drawString(show_state[OVER], 500, 660);
g.setColor(Color.RED);
g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 60));
@ -303,8 +336,9 @@ public class Tetris extends JPanel {
g.setColor(Color.blue);
g.drawString("哥们再来一把!",30,500);
g.drawString("I am lzj", 100, 600);
//sound1.run();//游戏结束播放第二个音乐
}
}
private void paintSource(Graphics g) {
@ -405,13 +439,8 @@ public class Tetris extends JPanel {
jFrame.setLocationRelativeTo(null);
//设置窗口关闭时停止
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//调用音乐开始播放
BGM bgm = new BGM("E:\\Temp\\Tetris\\music\\城南花已开.mp3");
bgm.start();
// 游戏主要开始逻辑
panel.start();
// panel.isGameOver();
}
}

Loading…
Cancel
Save