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

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

?? java小游戲-貪吃蛇.txt

?? 一個很好玩的小游戲
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

   java小游戲-貪吃蛇 
 
SnakeGame.java 

package SnakeGame; 

import javax.swing.*; 
public class SnakeGame 
{ 
public static void main( String[] args ) 
{ 
JDialog.setDefaultLookAndFeelDecorated( true ); 
GameFrame temp = new GameFrame(); 
} 
} 


Snake.java 

package SnakeGame; 

import java.awt.*; 
import java.util.*; 

class Snake extends LinkedList 
{ 
public int snakeDirection = 2; 
public int snakeReDirection = 4; 
public Snake() 
{ 
this.add( new Point( 3, 3 ) ); 
this.add( new Point( 4, 3 ) ); 
this.add( new Point( 5, 3 ) ); 
this.add( new Point( 6, 3 ) ); 
this.add( new Point( 7, 3 ) ); 
this.add( new Point( 8, 3 ) ); 
this.add( new Point( 9, 3 ) ); 
this.add( new Point( 10, 3 ) ); 
} 
public void changeDirection( Point temp, int direction ) 
{ 
this.snakeDirection = direction; 
switch( direction ) 
{ 
case 1://up 
this.snakeReDirection = 3; 
this.add( new Point( temp.x, temp.y - 1 ) ); 
break; 
case 2://right 
this.snakeReDirection = 4; 
this.add( new Point( temp.x + 1, temp.y ) ); 
break; 
case 3://down 
this.snakeReDirection = 1; 
this.add( new Point( temp.x, temp.y + 1 ) ); 
break; 
case 4://left 
this.snakeReDirection = 2; 
this.add( new Point( temp.x - 1, temp.y ) ); 
break; 
} 
} 
public boolean checkBeanIn( Point bean ) 
{ 
Point temp = (Point) this.getLast(); 
if( temp.equals( bean ) ) 
{ 
return true; 
} 
return false; 
} 

public void removeTail() 
{ 
this.remove( 0 ); 
} 

public void drawSnake( Graphics g, int singleWidthX, int singleHeightY, int cooPos ) 
{ 
g.setColor( ColorGroup.COLOR_SNAKE ); 
Iterator snakeSq = this.iterator(); 
while ( snakeSq.hasNext() ) 
{ 
Point tempPoint = (Point)snakeSq.next(); 
this.drawSnakePiece( g, tempPoint.x, tempPoint.y, 
singleWidthX, singleHeightY, cooPos ); 
} 
} 

public void drawSnakePiece( Graphics g, int temp1, int temp2, 
int singleWidthX, int singleHeightY, int cooPos ) 
{ 
g.fillRoundRect( singleWidthX * temp1 + 1, 
singleHeightY * temp2 + 1, 
singleWidthX - 2, 
singleHeightY - 2, 
cooPos, 
cooPos ); 
} 
public void clearEndSnakePiece( Graphics g, int temp1, int temp2, 
int singleWidthX, int singleHeightY, int cooPos ) 
{ 
g.setColor( ColorGroup.COLOR_BACK ); 
g.fillRoundRect( singleWidthX * temp1 + 1, 
singleHeightY * temp2 + 1, 
singleWidthX - 2, 
singleHeightY - 2, 
cooPos, 
cooPos ); 
} 
} 

GameFrame.java 

package SnakeGame; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 
import java.awt.geom.*; 

class GameFrame extends JFrame 
{ 
private Toolkit tempKit; 
private int horizontalGrid, verticalGrid; 
private int singleWidthX, singleHeightY; 
private int cooPos; 
private Snake mainSnake; 
private LinkedList eatedBean; 
{ 
eatedBean = new LinkedList(); 
} 
private Iterator snakeSq; 
public javax.swing.Timer snakeTimer; 
private int direction = 2; 
private int score; 
private String info; 
private Point bean, eatBean; 
{ 
bean = new Point(); 
} 
private boolean flag; 
private JMenuBar infoMenu; 
private JMenu[] tempMenu; 
private JMenuItem[] tempMenuItem; 
private JRadioButtonMenuItem[] levelMenuItem, versionMenuItem; 
private JLabel scoreLabel; 
{ 
scoreLabel = new JLabel(); 
} 
private Graphics2D g; 
private ImageIcon snakeHead; 
{ 
snakeHead = new ImageIcon( "LOGO.gif" ); 
} 
private ConfigMenu configMenu; 
private boolean hasStoped = true; 
public GameFrame() 
{ 

this.tempKit = this.getToolkit(); 
this.setSize( tempKit.getScreenSize() ); 
this.setGrid( 60, 40, 5 ); 
this.getContentPane().setBackground( ColorGroup.COLOR_BACK ); 
this.setUndecorated( true ); 
this.setResizable( false ); 
this.addKeyListener( new KeyHandler() ); 
GameFrame.this.snakeTimer = new javax.swing.Timer( 80, new TimerHandler() ); 
this.getContentPane().add( scoreLabel, BorderLayout.SOUTH ); 
this.scoreLabel.setFont( new Font( "Fixedsys", Font.BOLD, 15 ) ); 
this.scoreLabel.setText( "Pause[SPACE] - Exit[ESC]" ); 
this.configMenu = new ConfigMenu( this ); 
this.setVisible( true ); 

} 
public void setGrid( int temp1, int temp2, int temp3 ) 
{ 
this.horizontalGrid = temp1; 
this.verticalGrid = temp2; 
this.singleWidthX = this.getWidth() / temp1; 
this.singleHeightY = this.getHeight() / temp2; 
this.cooPos = temp3; 
} 

private class KeyHandler extends KeyAdapter 
{ 
public void keyPressed( KeyEvent e ) 
{ 
if( e.getKeyCode() == 27 ) 
{ 
snakeTimer.stop(); 
if( JOptionPane.showConfirmDialog( null, "Are you sure to exit?" ) == 0 ) 
{ 
System.exit( 0 ); 
} 
snakeTimer.start(); 
} 
else if( e.getKeyCode() == 37 && mainSnake.snakeDirection != 2 )//left 
{ 
direction = 4; 
} 
else if( e.getKeyCode() == 39 && mainSnake.snakeDirection != 4 )//right 
{ 
direction = 2; 
} 
else if( e.getKeyCode() == 38 && mainSnake.snakeDirection != 3 )//up 
{ 
direction = 1; 
} 
else if( e.getKeyCode() == 40 && mainSnake.snakeDirection != 1 )//down 
{ 
direction = 3; 
} 
else if( e.getKeyCode() == 32 ) 
{ 
if( !hasStoped ) 
{ 
if( !flag ) 
{ 

snakeTimer.stop(); 
configMenu.setVisible( true ); 
configMenu.setMenuEnable( false ); 
flag = true; 
} 
else 
{ 
snakeTimer.start(); 
configMenu.setVisible( false ); 
configMenu.setMenuEnable( true ); 
flag = false; 
} 
} 
} 
} 
} 

private class TimerHandler implements ActionListener 
{ 
public synchronized void actionPerformed( ActionEvent e ) 
{ 
Point temp = (Point) mainSnake.getLast(); 
snakeSq = mainSnake.iterator(); 
while ( snakeSq.hasNext() ) 
{ 
Point tempPoint = (Point)snakeSq.next(); 
if( temp.equals( tempPoint ) && snakeSq.hasNext() != false ) 
{ 
snakeTimer.stop(); 
stopGame(); 
JOptionPane.showMessageDialog( null, 
"Your Score is " + score + "\n\nYou Loss!" ); 
} 
} 
System.out.println( temp.x + " " + temp.y ); 
if( (temp.x == 0 && direction == 4) || 
(temp.x == horizontalGrid-1 && direction == 2) || 
(temp.y == 0 && direction == 1) || 
(temp.y == verticalGrid-1 && direction == 3) ) 
{ 
snakeTimer.stop(); 
stopGame(); 
JOptionPane.showMessageDialog( null, 
"Your Score is " + score + "\n\nYou Loss!" ); 
} 
if( direction != mainSnake.snakeReDirection ) 
{ 
moveSnake( direction ); 
} 
mainSnake.drawSnake( getGraphics(), singleWidthX, singleHeightY, cooPos ); 
drawBeanAndEBean( getGraphics() ); 
} 
} 


public void stopGame() 
{ 
this.hasStoped = true; 
this.snakeTimer.stop(); 
Graphics2D g = (Graphics2D) GameFrame.this.getGraphics(); 
g.setColor( ColorGroup.COLOR_BACK ); 
super.paint( g ); 
configMenu.setVisible( true ); 
} 

public void resetGame() 
{ 
System.gc(); 
this.hasStoped = false; 
Graphics2D g = (Graphics2D) GameFrame.this.getGraphics(); 
g.setColor( ColorGroup.COLOR_BACK ); 
super.paint( g ); 
this.mainSnake = new Snake(); 
this.createBean( bean ); 
this.eatedBean.clear(); 
mainSnake.drawSnake( getGraphics(), singleWidthX, singleHeightY, cooPos ); 
this.snakeTimer.start(); 
this.direction = 2; 
this.score = 0; 
this.scoreLabel.setText( "Pause[SPACE] - Exit[ESC]" ); 
} 

private void moveSnake( int direction ) 
{ 
if( mainSnake.checkBeanIn( this.bean ) ) 
{ 
this.score += 100; 
this.scoreLabel.setText( this.info + " Current Score:" + this.score ); 
this.eatedBean.add( new Point(this.bean) ); 
this.createBean( this.bean ); 
} 
mainSnake.changeDirection( (Point) mainSnake.getLast(), direction ); 
Point temp = (Point) mainSnake.getFirst(); 
if( eatedBean.size() != 0 ) 
{ 
if( eatedBean.getFirst().equals( temp ) ) 
{ 
eatedBean.remove( 0 ); 
} 
else 
{ 
mainSnake.clearEndSnakePiece( getGraphics(), temp.x, temp.y, 
singleWidthX, singleHeightY, cooPos ); 
mainSnake.removeTail(); 
} 
} 
else 
{ 
mainSnake.clearEndSnakePiece( getGraphics(), temp.x, temp.y, 
singleWidthX, singleHeightY, cooPos ); 
mainSnake.removeTail(); 
} 
} 

private void drawBeanAndEBean( Graphics g ) 
{ 
g.setColor( ColorGroup.COLOR_BEAN ); 
this.drawPiece( g, this.bean.x, this.bean.y ); 
g.setColor( ColorGroup.COLOR_EATEDBEAN ); 
snakeSq = eatedBean.iterator(); 
while ( snakeSq.hasNext() ) 
{ 
Point tempPoint = (Point)snakeSq.next(); 
this.drawPiece( g, tempPoint.x, tempPoint.y ); 
} 
} 

private void drawPiece( Graphics g, int x, int y ) 
{ 
g.fillRoundRect( this.singleWidthX * x + 1, 
this.singleHeightY * y + 1, 
this.singleWidthX - 2, 
this.singleHeightY - 2, 
this.cooPos, 
this.cooPos ); 
} 

private void createBean( Point temp ) 
{ 
LP: 
while( true ) 
{ 
temp.x = (int) (Math.random() * this.horizontalGrid); 
temp.y = (int) (Math.random() * this.verticalGrid); 
snakeSq = mainSnake.iterator(); 
while ( snakeSq.hasNext() ) 
{ 
if( snakeSq.next().equals( new Point( temp.x, temp.y ) ) ) 
{ 
continue LP; 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆日韩欧美久久| 久久国产精品一区二区| 国产精品国产自产拍高清av| 久久久不卡影院| 久久老女人爱爱| 国产午夜精品福利| 国产欧美日韩视频在线观看| 国产欧美日韩另类视频免费观看| 国产欧美日韩在线视频| 国产精品久久久久久久久图文区| 亚洲国产高清不卡| 伊人夜夜躁av伊人久久| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美第一区第二区| 91精品国产福利| 久久久久久久久久久久久久久99 | 综合激情网...| 最新热久久免费视频| 亚洲摸摸操操av| 日日夜夜精品视频免费| 看电影不卡的网站| 波多野结衣在线aⅴ中文字幕不卡| 成人性生交大片免费看中文| 91免费观看视频在线| 欧美精品日韩综合在线| 国产精品久久久久久妇女6080 | 91免费版在线| 欧美夫妻性生活| 国产日韩三级在线| 亚洲精品v日韩精品| 久久成人精品无人区| 成人免费看视频| 欧美电影在线免费观看| 精品粉嫩超白一线天av| 亚洲卡通欧美制服中文| 麻豆专区一区二区三区四区五区| 成人国产在线观看| 日韩美女在线视频| 亚洲品质自拍视频| 国产一区二区精品久久99| 在线观看欧美精品| 国产精品久久久久7777按摩| 日韩精品电影一区亚洲| 99精品1区2区| 精品国产免费久久| 亚洲高清不卡在线观看| 成av人片一区二区| 久久久青草青青国产亚洲免观| 一区二区三区精品在线| 国产.精品.日韩.另类.中文.在线.播放| 91成人免费电影| 中文字幕不卡在线| 激情欧美日韩一区二区| 91精品国产综合久久婷婷香蕉| 国产精品麻豆一区二区| 国产一区二区三区四区五区入口| 欧美高清视频www夜色资源网| 国产精品久久久久影院色老大| 美女诱惑一区二区| 色屁屁一区二区| 国产精品久久久一本精品| 国产在线精品一区在线观看麻豆| 精品视频全国免费看| 亚洲男人电影天堂| 99v久久综合狠狠综合久久| www国产精品av| 精品亚洲免费视频| 日韩一区二区三区高清免费看看 | 精品免费一区二区三区| 日韩国产在线观看| 欧美喷潮久久久xxxxx| 亚洲一区二区av电影| 一本到不卡免费一区二区| 亚洲婷婷在线视频| 91蝌蚪国产九色| 亚洲特级片在线| 91在线porny国产在线看| 中文字幕制服丝袜成人av| 国产91综合网| 亚洲欧洲99久久| 一本色道久久综合狠狠躁的推荐| 国产精品理伦片| 色悠悠亚洲一区二区| 一区二区三区视频在线观看| 在线一区二区三区做爰视频网站| 亚洲精品久久7777| 欧美日韩黄色影视| 日韩福利电影在线观看| 精品久久久久久最新网址| 国产精品一区二区久久精品爱涩 | 亚洲夂夂婷婷色拍ww47| 欧美性色黄大片| 麻豆国产精品777777在线| 久久久久99精品国产片| 色婷婷亚洲一区二区三区| 一区二区三区在线免费视频| 欧美日本乱大交xxxxx| 久久99精品国产麻豆婷婷| 中文字幕制服丝袜一区二区三区 | 宅男噜噜噜66一区二区66| 久久91精品国产91久久小草 | 国产精品免费免费| 欧美最猛黑人xxxxx猛交| 免费国产亚洲视频| 国产精品视频第一区| 欧美性感一类影片在线播放| 精品亚洲porn| 亚洲免费观看在线观看| 日韩欧美中文字幕一区| 成人夜色视频网站在线观看| 亚洲国产wwwccc36天堂| 欧美精品一区二区蜜臀亚洲| 色欧美日韩亚洲| 国产资源在线一区| 亚洲国产视频在线| 国产午夜精品一区二区三区嫩草 | 亚洲一卡二卡三卡四卡五卡| 日韩美女一区二区三区四区| www.久久精品| 久久国产免费看| 亚洲一卡二卡三卡四卡| 亚洲国产精品av| 精品国产区一区| 欧美日韩和欧美的一区二区| 成人黄色电影在线| 韩国毛片一区二区三区| 亚洲影视在线观看| 国产精品人成在线观看免费| 欧美日韩国产影片| 91网址在线看| 成人小视频免费观看| 青青国产91久久久久久| 亚洲第一av色| 亚洲综合另类小说| 亚洲国产中文字幕| 亚洲欧美日韩在线播放| 国产日韩在线不卡| 国产偷v国产偷v亚洲高清| 欧美电影精品一区二区| 日韩一区二区三免费高清| 欧美在线免费视屏| 欧美无砖砖区免费| 欧美在线综合视频| 日本二三区不卡| 91视频免费播放| jvid福利写真一区二区三区| 国产福利一区二区三区视频在线| 久久99精品国产91久久来源| 日韩精品电影在线观看| 日韩av电影免费观看高清完整版 | 在线观看日韩毛片| 在线免费观看视频一区| 色狠狠综合天天综合综合| 91玉足脚交白嫩脚丫在线播放| eeuss鲁片一区二区三区在线观看| 国产精品99久久久久久久女警| 开心九九激情九九欧美日韩精美视频电影 | 久久久久免费观看| 国产三级一区二区| 亚洲国产高清aⅴ视频| 国产精品区一区二区三区| 国产精品美女久久久久高潮| 欧美激情一区二区三区不卡| 国产精品国产三级国产aⅴ入口 | 成人动漫一区二区| 不卡电影一区二区三区| 99精品欧美一区二区三区小说| a美女胸又www黄视频久久| 91亚洲精华国产精华精华液| 91麻豆swag| 7777精品伊人久久久大香线蕉完整版| 欧美日韩视频第一区| 欧美一级高清片| 中文字幕不卡在线| 亚洲福利一区二区| 久久国产精品第一页| 国产成人综合网| 在线精品视频免费观看| 欧美日韩你懂得| 久久久久久亚洲综合影院红桃 | 日韩欧美色电影| 中文一区在线播放| 亚洲一区二区三区四区中文字幕| 日韩国产欧美在线观看| 国产福利91精品| 欧美天堂亚洲电影院在线播放| 日韩天堂在线观看| 国产精品美女久久久久久久久| 亚瑟在线精品视频| 成人美女视频在线看| 欧美曰成人黄网| 久久免费偷拍视频| 亚洲一本大道在线| 国产福利91精品一区| 欧美疯狂性受xxxxx喷水图片| 精品国产青草久久久久福利| 亚洲精品自拍动漫在线| 久久国产精品99精品国产| 91丨porny丨国产| 久久综合色婷婷|