亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 123.txt

?? 這是一套簡單得實現貪吃蛇功能得源代碼
?? TXT
字號:
import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
public class SnakeGame{ 
public static void main(String[] args){ 
SnakeFrame frame = new SnakeFrame(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true); 
} 
} 
//----------記錄狀態的線程 
class StatusRunnable implements Runnable{ 
public StatusRunnable(Snake snake,JLabel statusLabel,JLabel scoreLabel){ 
this.statusLabel = statusLabel; 
this.scoreLabel = scoreLabel; 
this.snake = snake; 
} 
public void run(){ 
String sta = ""; 
String spe = ""; 
while(true){ 

switch(snake.status){ 
case Snake.RUNNING: 
sta = "Running";break; 
case Snake.PAUSED: 
sta = "Paused";break; 
case Snake.GAMEOVER: 
sta = "GameOver";break; 
} 
statusLabel.setText(sta); 
scoreLabel.setText(""+snake.score); 
try{ 
Thread.sleep(100); 
} 
catch(Exception e){ 
} 
} 
} 
private JLabel scoreLabel; 
private JLabel statusLabel; 
private Snake snake; 
} 
//----------蛇運動以及記錄分數的線程 
class SnakeRunnable implements Runnable{ 
public SnakeRunnable(Snake snake,Component component){ 
this.snake = snake; 
this.component = component; 
} 
public void run(){ 
while(true){ 
try{ 
snake.move(); 
component.repaint(); 
Thread.sleep(snake.speed); 
} 
catch(Exception e){ 
} 
} 
} 
private Snake snake; 
private Component component; 
} 
class Snake{ 
boolean isRun;//---------是否運動中 
ArrayList<Node> body;//-----蛇體 
Node food;//--------食物 
int derection;//--------方向 
int score ; 
int status; 
int speed; 
public static final int SLOW = 500; 
public static final int MID = 300; 
public static final int FAST = 100; 
public static final int RUNNING = 1; 
public static final int PAUSED = 2; 
public static final int GAMEOVER = 3; 
public static final int LEFT = 1; 
public static final int UP = 2; 
public static final int RIGHT = 3; 
public static final int DOWN = 4; 
public Snake(){ 
speed = Snake.SLOW; 
score = 0; 
isRun = false; 
status = Snake.PAUSED; 
derection = Snake.RIGHT; 
body = new ArrayList<Node>(); 
body.add(new Node(60,20)); 
body.add(new Node(40,20)); 
body.add(new Node(20,20)); 
makeFood(); 
} 
//------------判斷食物是否被蛇吃掉 
//-------如果食物在蛇運行方向的正前方,并且與蛇頭接觸,則被吃掉 
private boolean isEaten(){ 
Node head = body.get(0); 
if(derection == Snake.RIGHT && (head.x+Node.W) == food.x&&head.y == food.y ) 
return true; 
if(derection == Snake.LEFT && (head.x-Node.W) == food.x&&head.y == food.y ) 
return true; 
if(derection == Snake.UP && head.x == food.x&&(head.y-Node.H) == food.y ) 
return true; 
if(derection == Snake.DOWN && head.x == food.x&&(head.y+Node.H) == food.y ) 
return true; 
else return false; 
} 
//----------是否碰撞 
private boolean isCollsion(){ 
Node node = body.get(0); 
//------------碰壁 
if(derection == Snake.RIGHT && node.x == 280) 
return true; 
if(derection == Snake.UP && node.y == 0) 
return true; 
if(derection == Snake.LEFT && node.x == 0) 
return true; 
if(derection == Snake.DOWN && node.y == 380) 
return true; 
//--------------蛇頭碰到蛇身 
Node temp = null; 
int i = 0; 
for(i = 3;i<body.size();i++) 
{ 
temp = body.get(i); 
if(temp.x == node.x && temp.y==node.y) 
break; 
} 
if(i < body.size()) 
return true; 
else return false; 
} 
//-------在隨機的地方產生食物 
public void makeFood(){ 
Node node = new Node(0,0); 
boolean isInBody = true; 
int x = 0,y = 0; 
int X = 0,Y = 0; 
int i = 0; 
while(isInBody){ 
x = (int)(Math.random()*15); 
y = (int)(Math.random()*20); 
X = x*Node.W; 
Y = y*Node.H; 
for(i = 0;i < body.size();i ++){ 
if( X == body.get(i).x && Y == body.get(i).y) 
break; 
} 
if(i < body.size()) 
isInBody = true; 
else 
isInBody = false; 
} 
food = new Node(X,Y); 
} 
//---------改變運行方向 
public void changeDerection(int newDer){ 
if(derection%2 != newDer%2)//-------如果與原來方向相同或相反,則無法改變 
derection = newDer; 
} 
public void move(){ 
if(isEaten()){//-----如果食物被吃掉 
body.add(0,food);//--------把食物當成蛇頭成為新的蛇體 
score += 10; 
makeFood();//--------產生食物 
} 
else if(isCollsion())//---------如果碰壁或自身 
{ 
isRun = false; 
status = Snake.GAMEOVER;//-----結束 
} 
else if(isRun){//----正常運行(不吃食物,不碰壁,不碰自身) 
Node node = body.get(0); 
int X = node.x; 
int Y = node.y; 
//------------蛇頭按運行方向前進一個單位 
switch(derection){ 
case 1: 
X-=Node.W; 
break; 
case 2: 
Y-=Node.H; 
break; 
case 3: 
X+=Node.W; 
break; 
case 4: 
Y+=Node.H; 
break; 
} 
body.add(0,new Node(X,Y)); 
//---------------去掉蛇尾 
body.remove(body.size()-1); 
} 
} 
} 
//---------組成蛇身的單位,食物 
class Node 
{ 
public static final int W = 20; 
public static final int H = 20; 
int x; 
int y; 
public Node(int x,int y){ 
this.x = x; 
this.y = y; 
} 
} 
//------畫板 
class SnakePanel extends JPanel{ 
Snake snake; 
public SnakePanel(Snake snake){ 
this.snake = snake; 
} 
public void paintComponent(Graphics g){ 
super.paintComponent(g); 
Node node = null; 
for(int i = 0;i < snake.body.size();i++){//---紅藍間隔畫蛇身 
if(i%2 == 0) 
g.setColor(Color.blue); 
else g.setColor(Color.yellow); 
node = snake.body.get(i); 
g.fillRect(node.x,node.y,node.H,node.W);//*******************試用********************* 
} 
node = snake.food; 
g.setColor(Color.red); 
g.fillRect(node.x,node.y,node.H,node.W); 
} 
} 
class SnakeFrame extends JFrame{ 
private JLabel statusLabel; 
private JLabel speedLabel; 
private JLabel scoreLabel; 
private JPanel snakePanel; 
private Snake snake; 
private JMenuBar bar; 
JMenu gameMenu; 
JMenu helpMenu; 
JMenu speedMenu; 
JMenuItem newItem; 
JMenuItem pauseItem; 
JMenuItem beginItem; 
JMenuItem helpItem; 
JMenuItem aboutItem; 
JMenuItem slowItem; 
JMenuItem midItem; 
JMenuItem fastItem; 

public SnakeFrame(){ 
init(); 
ActionListener l = new ActionListener(){ 
public void actionPerformed(ActionEvent e){ 
if(e.getSource()==pauseItem) 
snake.isRun = false; 
if(e.getSource()==beginItem) 
snake.isRun = true; 
if(e.getSource()==newItem) 
{ newGame(); 
} 
//------------菜單控制運行速度 
if(e.getSource()==slowItem) 
{ 
snake.speed = Snake.SLOW; 
speedLabel.setText("Slow"); 
} 
if(e.getSource()==midItem) 
{ 
snake.speed = Snake.MID; 
speedLabel.setText("Mid"); 
} 
if(e.getSource()==fastItem) 
{ 
snake.speed = Snake.FAST; 
speedLabel.setText("Fast"); 
} 
} 
}; 
pauseItem.addActionListener(l); 
beginItem.addActionListener(l); 
newItem.addActionListener(l); 
aboutItem.addActionListener(l); 
slowItem.addActionListener(l); 
midItem.addActionListener(l); 
fastItem.addActionListener(l); 
addKeyListener(new KeyListener(){ 
public void keyPressed(KeyEvent e){ 
switch(e.getKeyCode()){ 
//------------方向鍵改變蛇運行方向 
case KeyEvent.VK_DOWN:// 
snake.changeDerection(Snake.DOWN); 
break; 
case KeyEvent.VK_UP:// 
snake.changeDerection(Snake.UP); 
break; 
case KeyEvent.VK_LEFT:// 
snake.changeDerection(Snake.LEFT); 
break; 
case KeyEvent.VK_RIGHT:// 
snake.changeDerection(Snake.RIGHT); 
break; 
//空格鍵,游戲暫停或繼續 
case KeyEvent.VK_SPACE:// 
if(snake.isRun == true) 
{snake.isRun = false;snake.status = Snake.PAUSED;break;} 
if(snake.isRun == false) 
{snake.isRun = true; snake.status = Snake.RUNNING;break;} 
} 
} 
public void keyReleased(KeyEvent k){ 
} 
public void keyTyped(KeyEvent k){ 
} 
}); 
} 
private void init(){ 
speedLabel = new JLabel(); 
snake = new Snake(); 
setSize(380,460); 
setLayout(null); 
this.setResizable(false); 
bar = new JMenuBar(); 
gameMenu = new JMenu("Game"); 
newItem= new JMenuItem("New Game"); 
gameMenu.add(newItem); 
pauseItem = new JMenuItem("Pause"); 
gameMenu.add(pauseItem); 
beginItem = new JMenuItem("Continue"); 
gameMenu.add(beginItem); 
helpMenu = new JMenu("Help"); 
aboutItem = new JMenuItem("About"); 
helpMenu.add(aboutItem); 
speedMenu = new JMenu("Speed"); 
slowItem = new JMenuItem("Slow"); 
fastItem = new JMenuItem("Fast"); 
midItem = new JMenuItem("Middle"); 
speedMenu.add(slowItem); 
speedMenu.add(midItem); 
speedMenu.add(fastItem); 
bar.add(gameMenu); 
bar.add(helpMenu); 
bar.add(speedMenu); 
setJMenuBar(bar); 
statusLabel = new JLabel(); 
scoreLabel = new JLabel(); 
snakePanel = new JPanel(); 
snakePanel.setBounds(0,0,300,400); 
snakePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray)); 
add(snakePanel); 
statusLabel.setBounds(300,25,60,20); 
add(statusLabel); 
scoreLabel.setBounds(300,20,60,20); 
add(scoreLabel); 
JLabel temp = new JLabel("狀態"); 
temp.setBounds(310,5,60,20); 
add(temp); 
temp = new JLabel("分數"); 
temp.setBounds(310,105,60,20); 
add(temp); 
temp = new JLabel("速度"); 
temp.setBounds(310,55,60,20); 
add(temp); 
speedLabel.setBounds(310,75,60,20); 
add(speedLabel); 
} 
private void newGame(){ 
this.remove(snakePanel); 
this.remove(statusLabel); 
this.remove(scoreLabel); 
speedLabel.setText("Slow"); 
statusLabel = new JLabel(); 
scoreLabel = new JLabel(); 
snakePanel = new JPanel(); 
snake = new Snake(); 
snakePanel = new SnakePanel(snake); 
snakePanel.setBounds(0,0,300,400); 
snakePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray)); 
Runnable r1 = new SnakeRunnable(snake,snakePanel); 
Runnable r2 = new StatusRunnable(snake,statusLabel,scoreLabel); 
Thread t1 = new Thread(r1); 
Thread t2 = new Thread(r2); 
t1.start(); 
t2.start(); 
add(snakePanel); 
statusLabel.setBounds(310,25,60,20); 
add(statusLabel); 
scoreLabel.setBounds(310,125,60,20); 
add(scoreLabel); 
} 

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产裸拍裸体视频在线观看乱了 | 日韩美女在线视频| 国产欧美一区二区在线| 一区二区久久久| 国产最新精品精品你懂的| 一本一道久久a久久精品| 精品成人一区二区三区四区| 亚洲欧美电影院| 国产久卡久卡久卡久卡视频精品| 欧洲人成人精品| 国产精品午夜免费| 久草中文综合在线| 欧美精选一区二区| 亚洲欧美韩国综合色| 国产精品一区免费在线观看| 欧美精品九九99久久| 亚洲欧美电影院| 成人av在线资源| 久久精品一区二区三区四区| 日韩 欧美一区二区三区| 欧日韩精品视频| 亚洲男人的天堂在线观看| 成人午夜又粗又硬又大| 久久久欧美精品sm网站| 精品在线免费观看| 日韩一区二区三区在线| 天天综合日日夜夜精品| 欧美三级韩国三级日本三斤| 亚洲精品乱码久久久久久黑人| 国产91精品久久久久久久网曝门 | 日韩欧美一级特黄在线播放| 亚洲一区二三区| 一本色道久久加勒比精品| 成人免费小视频| av在线一区二区| 国产精品美女视频| 成人激情av网| 中文字幕欧美一区| 一本一本大道香蕉久在线精品| 亚洲人成网站精品片在线观看| 99在线精品观看| 亚洲人123区| 日本韩国视频一区二区| 一区二区三区精品| 欧美福利电影网| 轻轻草成人在线| 精品久久久久香蕉网| 国产一区二区电影| 国产精品护士白丝一区av| 99re亚洲国产精品| 亚洲高清免费视频| 日韩一区二区在线播放| 国产精品亚洲第一区在线暖暖韩国| 久久久精品2019中文字幕之3| 国产成人一区在线| 亚洲欧美精品午睡沙发| 91麻豆精品国产自产在线观看一区 | 久久久午夜电影| 91天堂素人约啪| 五月婷婷另类国产| 精品毛片乱码1区2区3区| 国产成人精品一区二区三区四区 | 日韩精品影音先锋| 成人综合激情网| 亚洲人成影院在线观看| 91精品婷婷国产综合久久竹菊| 国产一区二区91| 一区二区三区毛片| 26uuu国产一区二区三区| 播五月开心婷婷综合| 五月开心婷婷久久| 久久久精品黄色| 欧美性做爰猛烈叫床潮| 韩国欧美国产一区| 一区二区三区资源| 欧美精品一区二区三区在线| 色综合天天综合网天天狠天天 | 一二三四区精品视频| 日韩欧美一区二区不卡| 91亚洲国产成人精品一区二三| 日韩电影在线免费看| 国产精品欧美一区喷水| 欧美一区二区三区四区高清| 波多野结衣中文字幕一区二区三区| 午夜精品久久久久久久久| 久久免费偷拍视频| 欧美群妇大交群的观看方式| 国产成人免费视频一区| 首页国产欧美日韩丝袜| 亚洲欧洲中文日韩久久av乱码| 日韩欧美激情在线| 欧美影院精品一区| a级高清视频欧美日韩| 精品亚洲porn| 日韩**一区毛片| 亚洲高清中文字幕| 中文字幕综合网| 久久久噜噜噜久久中文字幕色伊伊| 欧美特级限制片免费在线观看| 成人免费高清视频| 另类综合日韩欧美亚洲| 一区二区三区蜜桃网| 国产精品久久久久久久久动漫| 亚洲精品在线观看网站| 欧美一区二区精品| 91麻豆精品国产91久久久久久| 色噜噜狠狠色综合欧洲selulu| 成人一级片网址| 国产成人精品三级| 国产麻豆视频精品| 激情图区综合网| 久色婷婷小香蕉久久| 日韩不卡免费视频| 亚洲成av人片在www色猫咪| 亚洲激情图片小说视频| 最新成人av在线| 亚洲精品亚洲人成人网| 亚洲激情一二三区| 一区二区三区中文字幕精品精品| 亚洲丝袜精品丝袜在线| 最新热久久免费视频| 亚洲人成小说网站色在线| 亚洲品质自拍视频网站| 亚洲男人电影天堂| 一个色妞综合视频在线观看| 亚洲综合图片区| 天天爽夜夜爽夜夜爽精品视频| 五月天国产精品| 久久9热精品视频| 国产精品一区二区久激情瑜伽| 国产成人亚洲综合a∨婷婷图片| 成人深夜福利app| 91碰在线视频| 欧美日韩国产一二三| 日韩欧美亚洲国产另类| 国产亚洲va综合人人澡精品 | 国产不卡视频在线观看| 成人精品一区二区三区四区| 91蝌蚪porny成人天涯| 欧美网站一区二区| 日韩欧美国产高清| 欧美激情在线看| 亚洲一区二区三区中文字幕| 三级久久三级久久| 国内精品在线播放| 99精品视频在线观看免费| 一本大道久久a久久精二百| 8x福利精品第一导航| 久久久蜜桃精品| 亚洲一区二区三区四区在线免费观看| 亚洲成人福利片| 国产精品一区二区在线看| 91麻豆免费视频| 精品噜噜噜噜久久久久久久久试看| 国产精品网曝门| 午夜在线电影亚洲一区| 国产成人免费xxxxxxxx| 欧洲一区二区三区免费视频| 精品国产一区二区亚洲人成毛片 | 亚洲女同ⅹxx女同tv| 美女诱惑一区二区| 99久久er热在这里只有精品15 | 奇米影视一区二区三区小说| 高清视频一区二区| 91精品国产欧美日韩| 最新不卡av在线| 国产乱人伦偷精品视频免下载| 欧美在线观看一二区| 国产欧美日韩亚州综合| 日韩电影免费一区| 色老汉av一区二区三区| 久久综合狠狠综合久久激情| 亚洲风情在线资源站| gogogo免费视频观看亚洲一| 日韩欧美一区在线| 亚洲午夜久久久久久久久电影网| 福利视频网站一区二区三区| 欧美一级欧美三级在线观看| 有码一区二区三区| 成人国产电影网| 日精品一区二区| 99精品国产一区二区三区不卡 | 欧美色综合网站| 国产精品久久久久久久久免费樱桃 | 亚洲一区二区三区中文字幕在线| 国v精品久久久网| 26uuu欧美| 精品一区二区三区香蕉蜜桃| 精品污污网站免费看| 亚洲欧洲日韩在线| 成人av网在线| 国产精品伦理在线| 国产激情偷乱视频一区二区三区 | 久久精品亚洲精品国产欧美| 免费久久99精品国产| 欧美精品第1页| 亚洲成av人片一区二区| 在线一区二区三区做爰视频网站| 一色屋精品亚洲香蕉网站| 不卡的av网站|