本文实例讲述了java编写的简单移动方块小游戏代码。分享给大家供大家参考,具体如下:
运行效果截图如下:
第一次用java编写图形化的界面,还是有些青涩。。以后继续努力!!具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
//Little Box Game by AlexYui
//Game.java By 1093710210@ HIT
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.*;
import java.util.*;
public class Game{
public static void main(String[] agrs){
MyFrame gameframe = new MyFrame();
gameframe.setTitle( "Java Box Game By AlexYui" );
gameframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameframe.setVisible( true );
}
}
//框架
class MyFrame extends JFrame {
private int flag = 0 ;
protected double x[] = { 0 , 0 , 270 , 0 , 270 };
protected double y[] = { 0 , 0 , 0 , 270 , 270 };
protected int winner[]={ 0 , 0 , 0 , 0 , 0 };
public static final int DEFAULT_WIDTH = 317 ;
public static final int DEFAULT_HEIGHT = 339 ;
public MyFrame(){
MyPanel a = new MyPanel();
addKeyListener( new MyKeyListener());
this .add(a);
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
}
class MyPanel extends JPanel{
public MyPanel(){}
public void paint(Graphics g){
super .paint(g);
Graphics2D g2 = (Graphics2D)g;
Rectangle2D rect1 = new Rectangle2D.Double(x[ 1 ],y[ 1 ],30f,30f);
Rectangle2D rect2 = new Rectangle2D.Double(x[ 2 ],y[ 2 ],30f,30f);
Rectangle2D rect3 = new Rectangle2D.Double(x[ 3 ],y[ 3 ],30f,30f);
Rectangle2D rect4 = new Rectangle2D.Double(x[ 4 ],y[ 4 ],30f,30f);
//画中间的四个方框
g2.setPaint(Color.RED);
g2.drawRect( 120 , 120 , 30 , 30 );
g2.drawRect( 120 , 150 , 30 , 30 );
g2.drawRect( 150 , 120 , 30 , 30 );
g2.drawRect( 150 , 150 , 30 , 30 );
//填充四个角上的方块
g2.setPaint(Color.BLUE);
if (winner[ 1 ] == 0 )g2.fill(rect1);
if (winner[ 2 ] == 0 )g2.fill(rect2);
if (winner[ 3 ] == 0 )g2.fill(rect3);
if (winner[ 4 ] == 0 )g2.fill(rect4);
g2.setPaint(Color.RED);
//将已经选择的方块涂成红色
if (flag == 1 ) g2.fill(rect1);
if (flag == 2 ) g2.fill(rect2);
if (flag == 3 ) g2.fill(rect3);
if (flag == 4 ) g2.fill(rect4);
g2.setPaint(Color.BLUE);
if (winner[ 1 ] == 1 )g2.fill(rect1);
if (winner[ 2 ] == 1 )g2.fill(rect2);
if (winner[ 3 ] == 1 )g2.fill(rect3);
if (winner[ 4 ] == 1 )g2.fill(rect4);
g2.setPaint(Color.RED);
if (winner[ 1 ] == 1 && winner[ 2 ] == 1 && winner[ 3 ] == 1 && winner[ 4 ] == 1 )
g2.drawString( "Succes! You Won!" , 100 , 75 );
//保持边框的颜色
g2.drawRect( 120 , 120 , 30 , 30 );
g2.drawRect( 120 , 150 , 30 , 30 );
g2.drawRect( 150 , 120 , 30 , 30 );
g2.drawRect( 150 , 150 , 30 , 30 );
repaint();
}
}
class MyKeyListener implements KeyListener{
//overide
public void keyPressed(KeyEvent event){
int keyCode = event.getKeyCode();
if (keyCode == KeyEvent.VK_1){flag = 1 ;}
if (keyCode == KeyEvent.VK_2){flag = 2 ;}
if (keyCode == KeyEvent.VK_3){flag = 3 ;}
if (keyCode == KeyEvent.VK_4){flag = 4 ;}
if (keyCode == KeyEvent.VK_UP){move( 0 ,- 30 ,flag);win();}
if (keyCode == KeyEvent.VK_DOWN){move( 0 , 30 ,flag);win();}
if (keyCode == KeyEvent.VK_LEFT){move(- 30 , 0 ,flag);win();}
if (keyCode == KeyEvent.VK_RIGHT){move( 30 , 0 ,flag);win();}
}
public void keyReleased(KeyEvent event){}
public void keyTyped(KeyEvent event){}
}
//用于判别基本规则,移动方块
void move( int mx, int my, int mflag){
int i;
boolean teller = false ;
x[mflag] +=mx;
y[mflag] +=my;
if (! ((x[flag] >= 0 && x[flag]<= 270 )&&(y[flag] >= 0 && y[flag]<= 270 ))){
x[mflag] -=mx;
y[mflag] -=my;
}
for (i = 1 ;i< 5 ;i++){
if (mflag != i)
if (x[mflag] == x[i] && y[mflag] == y[i])
teller = true ;
}
if (teller == true ){
x[mflag] -= mx;
y[mflag] -= my;
}
}
//用于判别已经进入符合条件区域的方块
void win(){
int j1,j2;
for (j1= 1 ;j1< 5 ;j1++)
if ((x[j1]<= 150 &&x[j1]>= 120 )&&(y[j1]<= 150 &&y[j1]>= 120 ))
winner[j1]= 1 ;
for (j2= 1 ;j2< 5 ;j2++)
if (!((x[j2]<= 150 &&x[j2]>= 120 )&&(y[j2]<= 150 &&y[j2]>= 120 )))
winner[j2]= 0 ;
}
}
|
希望本文所述对大家Java程序设计有所帮助。