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

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

?? gameframe.java

?? greedy snake!greedy snake!
?? JAVA
字號:
//GameFrame.java
//package SnakeGame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
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;			
		}		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色激情网站| 中文字幕一区二区不卡| 久久综合久久99| 一区精品在线播放| 青青草国产成人99久久| 成人av在线资源| 欧美一个色资源| 亚洲乱码国产乱码精品精的特点| 美女视频黄 久久| 91丨porny丨在线| 国产日韩v精品一区二区| 日韩av中文字幕一区二区| 91免费在线视频观看| 国产人成亚洲第一网站在线播放 | 成人app下载| 欧美成人艳星乳罩| 视频一区二区不卡| 在线一区二区三区四区| 国产精品毛片无遮挡高清| 亚洲摸摸操操av| 成人性色生活片免费看爆迷你毛片| 美女被吸乳得到大胸91| 国产精品美女久久久久久久久| 免费看黄色91| 欧美日韩一级视频| 一区二区三区在线不卡| 99久久婷婷国产综合精品 | 韩国成人精品a∨在线观看| 欧美日韩中文字幕精品| 亚洲青青青在线视频| 国产福利91精品一区二区三区| 91精品国产乱码久久蜜臀| 亚洲aaa精品| 欧美亚洲愉拍一区二区| 亚洲伦在线观看| 91色婷婷久久久久合中文| 中文字幕在线观看一区二区| 东方aⅴ免费观看久久av| 久久女同精品一区二区| 国产精品一区二区久久不卡| 久久久综合激的五月天| 国产毛片精品视频| 国产欧美一区二区精品婷婷 | 国产盗摄一区二区| 久久亚洲影视婷婷| 粉嫩欧美一区二区三区高清影视| 国产色产综合色产在线视频| 成人av网在线| 亚洲伦在线观看| 欧美麻豆精品久久久久久| 视频在线观看一区| 欧美va亚洲va| 成人精品电影在线观看| 综合激情网...| 欧美日产在线观看| 免费成人在线播放| 国产日产欧美一区| 99综合影院在线| 视频一区二区三区在线| 精品第一国产综合精品aⅴ| 成人精品视频一区二区三区尤物| 综合久久久久久| 4438x亚洲最大成人网| 精品在线一区二区三区| 国产精品美日韩| 欧美亚洲动漫另类| 精品一区二区av| 亚洲欧洲成人精品av97| 欧美精选一区二区| 国产一区二区精品久久99 | 欧美va亚洲va在线观看蝴蝶网| 国产麻豆精品95视频| 亚洲视频一二三区| 日韩免费视频一区| 色综合夜色一区| 久久爱www久久做| 一区二区三区四区不卡视频| 欧美一区二区三区四区在线观看| 风间由美一区二区三区在线观看 | 在线观看日韩精品| 激情图片小说一区| 亚洲免费观看视频| 欧美精品一区二区三| 一本大道久久a久久综合婷婷| 久久成人羞羞网站| 亚洲图片欧美综合| 国产精品区一区二区三区| 日韩一区二区中文字幕| 成人午夜激情影院| 蜜桃视频一区二区三区在线观看| 国产精品乱码人人做人人爱 | 91视频在线看| 国产一区二区在线看| 亚洲成人免费在线| 亚洲精品视频免费看| 2023国产精品视频| 欧美一级日韩不卡播放免费| 色欲综合视频天天天| 成人激情文学综合网| 另类小说一区二区三区| 午夜久久福利影院| 亚洲乱码日产精品bd| 日本一区二区视频在线| 精品剧情在线观看| 欧美一区二区三区电影| 欧美日韩国产不卡| 91豆麻精品91久久久久久| 不卡视频在线观看| 成人综合激情网| 韩国精品在线观看| 黑人巨大精品欧美黑白配亚洲| 青青青爽久久午夜综合久久午夜| 亚洲一区二区三区四区五区中文 | 亚洲一区二区三区四区五区中文 | 久久久综合视频| 亚洲精品在线免费播放| 精品欧美一区二区久久 | 国产女人18毛片水真多成人如厕| 日韩精品一区二区三区中文不卡 | 亚洲靠逼com| 自拍视频在线观看一区二区| 中文字幕五月欧美| 亚洲激情综合网| 亚洲大型综合色站| 亚洲mv在线观看| 免费成人结看片| 激情深爱一区二区| 成人在线综合网站| 成人黄色一级视频| 色综合欧美在线视频区| 欧美系列亚洲系列| 欧美一级片在线观看| 精品久久久久久久久久久久久久久久久 | 欧美一卡在线观看| 日韩欧美亚洲国产另类| 欧美不卡123| 国产精品亲子伦对白| 亚洲人成网站在线| 日本亚洲一区二区| 国产一级精品在线| 99视频在线精品| 欧美日韩国产综合久久| 欧美一级高清片在线观看| 久久久亚洲精华液精华液精华液| 国产农村妇女精品| 中文字幕在线观看一区| 亚洲v日本v欧美v久久精品| 黑人精品欧美一区二区蜜桃| 粉嫩av一区二区三区| 在线亚洲+欧美+日本专区| 欧美一区二区三区免费观看视频| 久久精品日产第一区二区三区高清版| 国产精品福利av| 亚洲一区av在线| 国产一区在线观看视频| 91色婷婷久久久久合中文| 91精品国产高清一区二区三区 | 欧美在线一二三| 精品噜噜噜噜久久久久久久久试看 | 久久精品99国产国产精| 波多野结衣中文字幕一区二区三区| 欧美在线短视频| 久久久精品蜜桃| 亚洲美女免费在线| 久久精品国产一区二区三区免费看| bt欧美亚洲午夜电影天堂| 欧美一区永久视频免费观看| 国产欧美日韩在线看| 一二三四区精品视频| 成熟亚洲日本毛茸茸凸凹| 欧美高清视频一二三区 | 韩国精品主播一区二区在线观看 | 99久久婷婷国产综合精品电影| 日韩欧美中文字幕制服| 亚洲美女偷拍久久| 国产麻豆成人精品| 欧美猛男gaygay网站| 国产精品网曝门| 久久99热99| 欧美老年两性高潮| 亚洲视频狠狠干| 国产91精品入口| 久久综合九色综合欧美就去吻| 婷婷综合在线观看| 色综合久久中文字幕综合网 | 日韩一区二区三区在线| 亚洲精品中文字幕在线观看| 成人高清免费观看| 欧美精品一区二区三区蜜桃| 日本网站在线观看一区二区三区 | 成人高清免费观看| 国产日韩精品一区| 国产麻豆午夜三级精品| 精品久久久三级丝袜| 日日夜夜精品视频天天综合网| 色综合色狠狠综合色| 中文字幕亚洲欧美在线不卡| av一本久道久久综合久久鬼色| 国产亚洲欧美在线| 国产激情一区二区三区桃花岛亚洲|