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

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

?? snakegame.java

?? 利用java編寫的貪吃蛇源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
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; 
} 
} 
break; 
} 
} 
} 


//*************//
 class ConfigDialog extends JDialog 
{ 
private Container c; 
private JFrame owner; 
private OwnPanel[] panel = new OwnPanel[4]; 
Box box1, box2; 
private JButton commitButton, cancelButton; 
Color[] color = new Color[4]; 
public ConfigDialog( Frame owner ) 
{ 
this.owner = (JFrame) owner; 
this.setSize( 400, 200 ); 
this.setResizable( false ); 
this.setTitle( "Config Your Game" ); 
this.c = this.getContentPane(); 
this.c.setBackground( Color.WHITE ); 
this.c.setLayout( new FlowLayout() ); 
this.box1 = Box.createVerticalBox(); 
for( int i = 0; i < panel.length; i++ ) 
{ 
panel[i] = new OwnPanel(); 
panel[i].addActionListener( new ActionHandler() ); 
this.box1.add( panel[i] ); 
this.box1.add( Box.createVerticalStrut( 4 ) ); 
} 
this.panel[0].setText( " Background" ); 
this.panel[1].setText( " Snake" ); 
this.panel[2].setText( " Bean" ); 
this.panel[3].setText( " EatedBean" ); 
this.panel[0].setBack( ColorGroup.COLOR_BACK ); 
this.panel[1].setBack( ColorGroup.COLOR_SNAKE ); 
this.panel[2].setBack( ColorGroup.COLOR_BEAN ); 
this.panel[3].setBack( ColorGroup.COLOR_EATEDBEAN ); 
this.box2 = Box.createHorizontalBox(); 
this.commitButton = new JButton( "確定" ); 
this.commitButton.setFont( Font.getFont( "Fixedsys" ) ); 
this.commitButton.addActionListener( new ActionHandler() ); 
this.cancelButton = new JButton( "取消" ); 
this.cancelButton.setFont( Font.getFont( "Fixedsys" ) ); 
this.cancelButton.addActionListener( new ActionHandler() ); 
this.box2.add( this.commitButton ); 
this.box2.add( Box.createHorizontalStrut( 20 ) ); 
this.box2.add( this.cancelButton ); 
this.box1.add( this.box2 ); 
this.c.add( this.box1, BorderLayout.NORTH ); 
this.setLocation( ( this.getToolkit().getScreenSize().width - this.getWidth() )/2, 
( this.getToolkit().getScreenSize().height - this.getHeight() )/2 ); 
this.setVisible( true ); 
} 
public void setOwnerColor( Color temp ) 
{ 
this.owner.getContentPane().setBackground( temp ); 
} 
private class ActionHandler implements ActionListener 
{ 
public void actionPerformed( ActionEvent e ) 
{ 
for( int i = 0; i < color.length; i++ ) 
{ 
if( e.getSource() == panel[i].reButton() ) 
{ 
color[i] = JColorChooser.showDialog( ConfigDialog.this, 
"Choose BackGround Color", 
Color.WHITE ); 
if( color[i] != null ) 
{ 
panel[i].setBack( color[i] ); 
} 
} 
} 
if( e.getSource() == commitButton ) 
{ 
color[0] = (color[0]==null?ColorGroup.COLOR_BACK:color[0]); 
color[1] = (color[1]==null?ColorGroup.COLOR_SNAKE:color[1]); 
color[2] = (color[2]==null?ColorGroup.COLOR_BEAN:color[2]); 
color[3] = (color[3]==null?ColorGroup.COLOR_EATEDBEAN:color[3]); 
ConfigDialog.this.setVisible( false ); 
ColorGroup.setCOLOR_BACK( color[0] ); 
owner.getContentPane().setBackground( color[0] ); 
ColorGroup.setCOLOR_SNAKE( color[1] ); 
ColorGroup.setCOLOR_BEAN( color[2] ); 
ColorGroup.setCOLOR_EATEDBEAN( color[3] ); 
ConfigDialog.this.dispose(); 
} 
else if( e.getSource() == cancelButton ) 
{ 
ConfigDialog.this.setVisible( false ); 
ConfigDialog.this.dispose(); 
} 

} 
} 
} 

class OwnPanel extends JPanel 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
伦理电影国产精品| 国产999精品久久久久久绿帽| 777午夜精品视频在线播放| 免费视频最近日韩| 中文字幕免费在线观看视频一区| 成人免费视频视频| 午夜国产精品一区| 国产人久久人人人人爽| 欧美色网站导航| 国产成人免费在线观看不卡| 一区二区三区欧美亚洲| 91麻豆精品国产自产在线 | 久久国产福利国产秒拍| 国产精品乱码妇女bbbb| 欧美日韩国产精品自在自线| 国产成人自拍网| 午夜影视日本亚洲欧洲精品| 亚洲国产电影在线观看| 在线电影一区二区三区| av资源站一区| 久久国产剧场电影| 午夜精品福利一区二区三区av| 久久久精品tv| 日韩一区二区三区在线| 91成人国产精品| 成人一级片在线观看| 亚洲成va人在线观看| 日韩毛片在线免费观看| 26uuu欧美| 欧美一区二区三级| 色婷婷久久久久swag精品| 国产成人亚洲精品青草天美| 日韩精品国产精品| 一区二区三区不卡在线观看| 久久蜜桃av一区二区天堂| 日韩一二在线观看| 精品视频1区2区| 在线视频一区二区三区| 成人亚洲一区二区一| 激情欧美一区二区| 蜜臀av一级做a爰片久久| 国产精品无圣光一区二区| 日韩女优电影在线观看| 91精品婷婷国产综合久久性色| 欧美综合一区二区三区| 色94色欧美sute亚洲线路一久| av中文字幕亚洲| 国产一区视频网站| 韩国av一区二区| 久久精品国产免费看久久精品| 奇米影视在线99精品| 午夜精品一区二区三区三上悠亚| 亚洲一二三四在线观看| 亚洲国产成人av| 亚洲高清免费在线| 亚洲人成网站精品片在线观看| 欧美国产一区在线| 国产精品欧美极品| 久久麻豆一区二区| 亚洲国产精品ⅴa在线观看| 国产偷v国产偷v亚洲高清| 中文在线一区二区 | 亚洲品质自拍视频| 一区二区三区中文免费| 亚洲精品一卡二卡| 亚洲图片你懂的| 亚洲国产精品成人综合| 亚洲人成网站精品片在线观看 | 精品1区2区在线观看| 亚洲精品在线观看视频| 在线成人免费视频| 91麻豆精品国产91久久久久久久久 | 国产传媒日韩欧美成人| 懂色一区二区三区免费观看| 成人免费高清在线| 在线观看免费亚洲| 欧美精品粉嫩高潮一区二区| 日韩你懂的在线播放| 欧美国产国产综合| 亚洲欧美日韩人成在线播放| 毛片不卡一区二区| 国产+成+人+亚洲欧洲自线| 波多野结衣中文一区| 色88888久久久久久影院按摩| 欧美猛男男办公室激情| 久久久精品2019中文字幕之3| 最新欧美精品一区二区三区| 亚洲福利一区二区| 夫妻av一区二区| 欧美亚洲日本一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91蝌蚪porny九色| 欧美高清dvd| 亚洲激情校园春色| 欧美成人一级视频| 国产精品一区二区在线播放 | 国产精品天天看| 一区二区三区波多野结衣在线观看| 日韩成人一区二区| 国产69精品一区二区亚洲孕妇| 色国产综合视频| 欧美岛国在线观看| 亚洲欧洲制服丝袜| 蜜臀av亚洲一区中文字幕| 福利视频网站一区二区三区| 在线观看视频一区二区欧美日韩| 欧美mv日韩mv国产网站| 亚洲欧美日韩小说| 精品一区二区三区影院在线午夜 | 国产在线播放一区三区四| 91麻豆视频网站| 精品久久久久久久久久久久包黑料| 国产精品网曝门| 日本不卡一二三| 91蝌蚪国产九色| 久久九九影视网| 三级影片在线观看欧美日韩一区二区| 紧缚捆绑精品一区二区| 91久久精品国产91性色tv| 久久蜜桃香蕉精品一区二区三区| 亚洲国产色一区| 不卡电影一区二区三区| 欧美tickle裸体挠脚心vk| 国产精品另类一区| 蜜臀a∨国产成人精品| 色偷偷成人一区二区三区91 | 久久se这里有精品| 欧美三级电影在线看| 国产精品视频你懂的| 精品一区二区三区免费观看 | 亚洲国产色一区| 91碰在线视频| 欧美国产亚洲另类动漫| 精品在线一区二区三区| 欧美日韩久久久一区| 亚洲欧洲在线观看av| 国产精品一区二区黑丝| 精品国产精品一区二区夜夜嗨| 亚洲h精品动漫在线观看| 色综合天天综合狠狠| 欧美高清在线精品一区| 国产一区不卡在线| 久久综合狠狠综合| 久久99精品国产| 日韩免费电影网站| 精品一二三四在线| 日韩一区二区麻豆国产| 亚洲一区二区三区在线播放| 91麻豆swag| 亚洲色图欧美偷拍| www.在线欧美| 国产精品不卡一区| 99精品桃花视频在线观看| 中文字幕一区二区三区不卡| 成人av在线网| 亚洲人成亚洲人成在线观看图片| 99久久精品免费观看| 亚洲欧美国产高清| 欧美影院精品一区| 午夜激情综合网| 欧美本精品男人aⅴ天堂| 国产成人精品影视| 亚洲免费av观看| 日韩一区二区三区电影在线观看| 国产激情视频一区二区在线观看| 中文字幕一区二区三区视频| 欧美日韩国产大片| 国产成人鲁色资源国产91色综| 一区二区三区不卡视频| 欧美精品一区二区三区在线播放 | 国产婷婷一区二区| 欧美亚男人的天堂| 精彩视频一区二区| 亚洲欧美另类图片小说| 91精品国产黑色紧身裤美女| 国产成人精品影视| 日韩精品五月天| 国产精品网友自拍| 欧美一区二区啪啪| 不卡视频在线看| 裸体在线国模精品偷拍| ...中文天堂在线一区| 日韩欧美国产电影| 欧美在线高清视频| 国产不卡免费视频| 免费人成黄页网站在线一区二区| 国产精品家庭影院| 精品国产伦理网| 欧美性生交片4| av毛片久久久久**hd| 美女视频一区二区| 亚洲一区二区三区四区五区中文| 久久综合成人精品亚洲另类欧美 | 最新不卡av在线| 日韩免费视频一区二区| 精品污污网站免费看| 成人福利在线看| 精品无人码麻豆乱码1区2区| 亚洲国产美国国产综合一区二区| 久久久久久久久久久久电影|