该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class gamewin extends JPanel implements ActionListener,KeyListener{
JButton newGame = new JButton("开始");
JButton endGame = new JButton("退出");
int fenshu = 0,speed = 0;
gameAct[] act = new gameAct[4];
Random r = new Random();
boolean start = false;
public gamewin(){
for(int i = 0;i
act[i] = new gameAct();
}
setLayout(new FlowLayout(FlowLayout.RIGHT));
add(newGame);
add(endGame);
newGame.addActionListener(this);
endGame.addActionListener(this);
addKeyListener(this);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(9, 10, 200, 360);
g.drawString("分数"+fenshu, 220, 60);
g.drawLine(220, 65, 360, 65);
g.drawString("速度"+speed, 220, 90);
g.drawLine(220, 95, 360, 95);
g.drawString("下一个方块", 260, 120);
g.drawString("俄罗斯方块1.0v", 220, 330);
g.drawString("胡氏出品,必是精品", 220, 360);
if(start){
g.setColor(new Color(255,0,0));
for(int i=0;i<4;i++){
g.fillRect(10+act[i].x*20,10+act[i].y*20, 20, 20);
}
}
}
private boolean newAct(){
int temp = r.nextInt(7);
switch(temp){
case 0:
act[0].x=1;act[0].y=0;
act[1].x=2;act[1].y=0;
act[2].x=3;act[2].y=0;
act[3].x=4;act[3].y=0;
break;
case 1:
act[0].x=2;act[0].y=0;
act[1].x=3;act[1].y=0;
act[2].x=2;act[2].y=1;
act[3].x=3;act[3].y=1;
break;
case 2:
act[0].x=2;act[0].y=0;
act[1].x=2;act[1].y=1;
act[2].x=2;act[2].y=2;
act[3].x=3;act[3].y=2;
break;
case 3:
act[0].x=3;act[0].y=0;
act[1].x=3;act[1].y=1;
act[2].x=3;act[2].y=2;
act[3].x=2;act[3].y=2;
break;
case 4:
act[0].x=3;act[0].y=0;
act[1].x=2;act[1].y=1;
act[2].x=3;act[2].y=1;
act[3].x=4;act[3].y=1;
break;
case 5:
act[0].x=2;act[0].y=0;
act[1].x=3;act[1].y=0;
act[2].x=3;act[2].y=1;
act[3].x=4;act[3].y=1;
break;
case 6:
act[0].x=3;act[0].y=0;
act[1].x=4;act[1].y=0;
act[2].x=2;act[2].y=1;
act[3].x=3;act[3].y=1;
break;
}
return true;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newGame){
if(e.getActionCommand().equals("开始")){
newGame.setText("重置");
requestFocus(true);
start = true;
if(!newAct()){
//这是失败的情况
return;
}else{
repaint();//继续生成
}
}else{
start = false;
newGame.setText("开始");
}
}
if(e.getSource()==endGame){
System.exit(0);
}
}
public void Move(int x,int y){
if(minYes(x,y)){
for(int i = 0;i < 4;i++){
act[i].x+=x;
act[i].y+=y;
}
}
repaint();
}
public boolean minYes(int x,int y){
for(int i=0;i<4;i++){
if(!minYes(act[i].x+x,act[i].y+y)){
return false;
}
}
return true;
}
public boolean maxYes(int x,int y){
if(x<0||x>=10||y<0||y>=10){
return false;
}
return true;
}
public void keyPressed(KeyEvent e) {
if(start){
switch(e.getKeyCode()){
case KeyEvent.VK_DOWN:
Move(0,1);
System.out.println("1");
break;
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_LEFT:
Move(-1,0);
break;
case KeyEvent.VK_RIGHT:
Move(1,0);
break;
default:
break;
}
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}