📄 mainframe.java
字号:
break;
if(flagBlocks[rows[0]][cols[0]-1]!=0)
break;
clear();
rows[0]--;
rows[2]++;
rows[3]--;
cols[0]++;
cols[2]--;
cols[3]--;
status=3;
show();
break;
case 3:
clear();
rows[0]--;
rows[2]++;
rows[3]++;
cols[0]--;
cols[2]++;
cols[3]--;
status=4;
show();
break;
case 4:
if(cols[0]>=9)
break;
if(flagBlocks[rows[0]][cols[0]+1]!=0)
break;
clear();
rows[0]++;
rows[2]--;
rows[3]++;
cols[0]--;
cols[2]++;
cols[3]++;
status=1;
show();
break;
}
}
}
//类型7方块
class BlockSeven extends Block{
public BlockSeven() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 1;
rows[3] = 1;
cols[0] = 3;
cols[1] = 4;
cols[2] = 5;
cols[3] = 6;
color = Color.red;
}
public void turn() {
switch(status){
case 1:
clear();
rows[0]+=2;
rows[1]++;
rows[3]--;
cols[0]+=2;
cols[1]++;
cols[3]--;
status=2;
show();
break;
case 2:
if(cols[0]<=1||cols[0]>=9)
break;
if(flagBlocks[rows[0]][cols[0]-1]!=0)
break;
if(flagBlocks[rows[0]][cols[0]+1]!=0)
break;
clear();
rows[0]-=2;
rows[1]--;
rows[3]++;
cols[0]-=2;
cols[1]--;
cols[3]++;
status=1;
show();
break;
}
}
}
//游戏主线程
class TetrisThread extends Thread {
int blockType=0;
int count=0;
public void run() {
while (true) {
//判断游戏状态
if(block.getIsBottom()&&(!block.getIsTop())){
//获取当前方块类型
blockType = nextBlockType;
//创建方块
switch (blockType) {
case 0:
block = new BlockOne();
break;
case 1:
block = new BlockTwo();
break;
case 2:
block = new BlockThree();
break;
case 3:
block = new BlockFour();
break;
case 4:
block = new BlockFive();
break;
case 5:
block = new BlockSix();
break;
case 6:
block = new BlockSeven();
break;
default:
block = new BlockOne();
}
//随机生成下一方块类型
nextBlockType=(int) (Math.random() * 1000%7);
//在方块提示区中显示下一方块
showNextBlock(nextBlockType);
}
if(block.getIsTop())
{//判断方块是否到顶,如果是则设置游戏结束标志
isEnd=true;
}
//获取方块当前动作,并进行相应的操作。
switch(block.getDirection()){
case 1://左移
block.left();
block.setDirection(block.NORMAL);
break;
case 2://右移
block.right();
block.setDirection(block.NORMAL);
break;
case 3://翻转
block.turn();
block.setDirection(block.NORMAL);
break;
case 4://下落到底部
block.downToBottom();
block.setDirection(block.NORMAL);
break;
default://正常下落
if (!isEnd && !isPause) {
try {
Thread.sleep(speed/50);
}
catch (Exception ex) {}
if( count<50)
count++;
else
{
block.downOneLine();
count=0;
}
}
}
}
}
}
void jMenuItem1_mouseClicked(MouseEvent e) {
start();
}
void jMenuItem1_actionPerformed(ActionEvent e) {
start();
}
//键盘事件处理
void this_keyPressed(KeyEvent e) {
//判断游戏状态
if(!isEnd&&!isPause){
//根据键值设置方块动作
if (e.getKeyCode() == KeyEvent.VK_UP) {
block.setDirection(block.TURN);
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
block.setDirection(block.DOWN);
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
block.setDirection(block.LEFT);
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
block.setDirection(block.RIGHT);
}
}
}
void jMenuItem2_actionPerformed(ActionEvent e) {
if(isPause){
isPause=false;
jMenuItem2.setText("暂停");
}else{
isPause=true;
jMenuItem2.setText("继续");
}
}
void jRadioButtonMenuItem1_actionPerformed(ActionEvent e) {
initLevel = 1;
initSpeed = 500;
}
void jRadioButtonMenuItem2_actionPerformed(ActionEvent e) {
initLevel = 2;
initSpeed = 450;
}
void jRadioButtonMenuItem3_actionPerformed(ActionEvent e) {
initLevel = 3;
initSpeed = 400;
}
void jRadioButtonMenuItem4_actionPerformed(ActionEvent e) {
initLevel = 4;
initSpeed = 350;
}
void jRadioButtonMenuItem5_actionPerformed(ActionEvent e) {
initLevel = 5;
initSpeed = 300;
}
void jRadioButtonMenuItem6_actionPerformed(ActionEvent e) {
initLevel = 6;
initSpeed = 250;
}
void jRadioButtonMenuItem7_actionPerformed(ActionEvent e) {
initLevel = 7;
initSpeed = 200;
}
void jRadioButtonMenuItem8_actionPerformed(ActionEvent e) {
initLevel = 8;
initSpeed = 150;
}
void jRadioButtonMenuItem9_actionPerformed(ActionEvent e) {
initLevel = 9;
initSpeed = 100;
}
void jRadioButtonMenuItem10_actionPerformed(ActionEvent e) {
initLevel = 10;
initSpeed = 50;
}
}
class MainFrame_jMenuItem1_mouseAdapter extends java.awt.event.MouseAdapter {
MainFrame adaptee;
MainFrame_jMenuItem1_mouseAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.jMenuItem1_mouseClicked(e);
}
}
class MainFrame_jMenuItem1_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jMenuItem1_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem1_actionPerformed(e);
}
}
class MainFrame_this_keyAdapter extends java.awt.event.KeyAdapter {
MainFrame adaptee;
MainFrame_this_keyAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent e) {
adaptee.this_keyPressed(e);
}
}
class MainFrame_jMenuItem2_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jMenuItem2_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuItem2_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem1_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem1_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem1_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem2_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem2_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem2_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem3_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem3_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem3_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem4_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem4_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem4_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem5_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem5_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem5_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem6_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem6_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem6_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem7_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem7_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem7_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem8_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem8_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem8_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem9_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem9_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem9_actionPerformed(e);
}
}
class MainFrame_jRadioButtonMenuItem10_actionAdapter implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_jRadioButtonMenuItem10_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jRadioButtonMenuItem10_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -