例毕巧如创建一个最简单的GUI程序,新建一个 java 工程,添加一个class, 类名为 App, 添加如下代码:
// 文件名 App.java// 最简的GUI程序
import javax.swing.JFrame
public class App extends JFrame {
private static final long serialVersionUID 笑数祥= 1L
public App() {
this.setTitle("最简单的GUI程序")
this.setSize(300, 200)
this.setLocationRelativeTo(null)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
public static void main(String args[]) {
new App().setVisible(true)
}
}
然的运行。
运行结果:碰搏
importjava.awt.*importjavax.swing.*
importjava.awt.event.*
importjava.util.*
publicclassSnakeGameextendsJFrameimplementsKeyListener{
privateintstat=1,direction=0,bodylen=6,headx=7,heady=8,
tailx=1,taily=8,tail,foodx,foody,food//初始化定义变量碰族
publicfinalintEAST=1,WEST=2,SOUTH=3,NORTH=4//方向常量
int[][]fillblock=newint[20][20]//定义蛇身所占位置
publicSnakeGame(){//构造函数
super("贪吃蛇")
setSize(510,510)
setVisible(true)//设定窗口属性
addKeyListener(this)//添加监听
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
for(inti=1i<=7i++)fillblock[i][8]=EAST//初始化蛇身属性
direction=EAST//方向初始化的设颂正置
FoodLocate()//定位食物
while(stat==1){
fillblock[headx][heady]=direction
switch(direction){
case1:headx++break
case2:headx--break
case3:heady++break
case4:heady--break
}//蛇头的前进
if(heady>19||headx>19||tailx>19||taily>19||heady<0||headx<笑樱弊0||tailx<0||taily<0||fillblock[headx][heady]!=0){
stat=0
break
}//判断游戏是否结束
try{
Thread.sleep(150)}
catch(InterruptedExceptione){}//延迟
fillblock[headx][heady]=direction
if(headx==foodx&&heady==foody){//吃到食物
FoodLocate()
food=2
try{
Thread.sleep(100)}
catch(InterruptedExceptione){}//延迟
}
if(food!=0)food--
else{tail=fillblock[tailx][taily]<br/>fillblock[tailx][taily]=0//蛇尾的消除<br/>switch(tail){<br/>case1:tailx++break<br/>case2:tailx--break<br/>case3:taily++break<br/>case4:taily--break<br/>}//蛇尾的前进
}
repaint()
}
if(stat==0)
JOptionPane.showMessageDialog(null,"GAMEOVER","GameOver",JOptionPane.INFORMATION_MESSAGE)
}
publicvoidkeyPressed(KeyEvente){//按键响应
intkeyCode=e.getKeyCode()
if(stat==1)switch(keyCode){
caseKeyEvent.VK_UP:if(direction!=SOUTH)direction=NORTHbreak
caseKeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTHbreak
caseKeyEvent.VK_LEFT:if(direction!=EAST)direction=WESTbreak
caseKeyEvent.VK_RIGHT:if(direction!=WEST)direction=EASTbreak
}
}
publicvoidkeyReleased(KeyEvente){}//空函数
publicvoidkeyTyped(KeyEvente){}//空函数
publicvoidFoodLocate(){//定位食物坐标
do{
Randomr=newRandom()
foodx=r.nextInt(20)
foody=r.nextInt(20)
}while(fillblock[foodx][foody]!=0)
}
publicvoidpaint(Graphicsg){//画图
super.paint(g)
g.setColor(Color.BLUE)
for(inti=0i<20i++)
for(intj=0j<20j++)
if(fillblock[i][j]!=0)
g.fillRect(25*i+5,25*j+5,24,24)
g.setColor(Color.RED)
g.fillRect(foodx*25+5,foody*25+5,24,24)
}
publicstaticvoidmain(String[]args){//主程序
SnakeGameapplication=newSnakeGame()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)