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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? greedysnake.java

?? java環(huán)境下對(duì)于游戲貪吃蛇的實(shí)現(xiàn),對(duì)蛇的碰撞檢測(cè)做出了修正
?? JAVA
字號(hào):
/* 
 *12.24日,完成了蛇撞到自己的檢測(cè).修改方法是在蛇的初始化的時(shí)候,用雙循環(huán)來(lái)置FALSE;
 * 在重寫代碼的時(shí)候,我借鑒了別人的思路:將整個(gè)游戲的界面定義為一個(gè)布爾型的二維數(shù)組.
 * 用一個(gè)LinkedList來(lái)儲(chǔ)存蛇.當(dāng)蛇移動(dòng)的時(shí)候,在蛇的頭部增加一個(gè)節(jié)點(diǎn),然后刪除最后一個(gè)節(jié)點(diǎn).
 * 因?yàn)橹皇亲鼍毩?xí),所以沒(méi)做游戲界面,比如菜單欄,計(jì)分欄什么的.另外還有一個(gè)問(wèn)題,就是當(dāng)兩次點(diǎn)擊回車時(shí),蛇的移動(dòng)速度會(huì)變快
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class GreedySnake {
	public static void main(String args[]) {
		GameFrame frame = new GameFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.show();
		JOptionPane.showMessageDialog(null, "上,下左,右控制蛇的方向\n回車開始,S暫停");
	}
}

class GameFrame extends JFrame {
	public GameFrame() {
		setSize(294, 482);
		setTitle("貪吃蛇DEMO");
		this.setLocation(360, 100);
		Container c = getContentPane();
		GamePanel panel = new GamePanel();
		c.add(panel, BorderLayout.CENTER);
	}
}

class GamePanel extends JPanel implements KeyListener {
	static int panelWidth = 294;

	static int panelHeight = 450;

	int rectX = 15;

	int rectY = 15;

	Snake snake;

	Node n;

	public GamePanel() {
		snake = new Snake(this, panelWidth / rectX, panelHeight / rectY);
		setBackground(Color.WHITE);
		setSize(panelWidth, panelHeight);
		setFocusable(true);
		addKeyListener(this);
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		LinkedList list = snake.snakeList;
		Iterator it = list.iterator();
		g2.setColor(Color.black);
		while (it.hasNext()) {
			n = (Node) it.next();
			drawNode(g2, n);
		}
		g2.setColor(Color.ORANGE);
		Node f = snake.food;
		drawNode(g2, f);
		snake.drawMap(g2);// 繪制地圖
	}

	public void keyPressed(KeyEvent e) {
		int keycode = e.getKeyCode();
		if (keycode == KeyEvent.VK_ENTER) {
			begin();
		} else if (keycode == KeyEvent.VK_UP) {
			snake.changeDirection(Snake.up);
		} else if (keycode == KeyEvent.VK_DOWN) {
			snake.changeDirection(Snake.down);
		} else if (keycode == KeyEvent.VK_LEFT) {
			snake.changeDirection(Snake.left);
		} else if (keycode == KeyEvent.VK_RIGHT) {
			snake.changeDirection(Snake.right);
		} else if (keycode == KeyEvent.VK_S) {
			Snake.run = false;
		}
	}

	public void keyReleased(KeyEvent e) {
	}

	public void keyTyped(KeyEvent e) {
	}

	public void drawNode(Graphics2D g, Node n) {
		g.fillRect(n.x * rectX, n.y * rectY, rectX - 2, rectY - 2);
	}

	public void begin() {
		Snake.run = true;
		SnakeThread thread = new SnakeThread(snake);
		thread.start();
	}
}

class Node {
	int x;

	int y;

	public Node(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

class SnakeThread extends Thread {
	Snake snake;

	public SnakeThread(Snake s) {
		snake = s;
	}

	public void run() {
		Snake.run = true;

		while (Snake.run) {
			try {
				snake.move();
				sleep(200);
			} catch (InterruptedException e) {
			}
		}
		Snake.run = false;
	}
}

class Snake {
	GamePanel panel;

	Node food;

	boolean[][] all;

	public static boolean run;

	int maxX;

	int maxY;

	public static int left = 1;

	public static int up = 2;

	public static int right = 3;

	public static int down = 4;

	int direction = 4;

	LinkedList snakeList = new LinkedList();

	public Snake(GamePanel p, int maxX, int maxY) {
		panel = p;
		this.maxX = maxX;
		this.maxY = maxY;
		all = new boolean[maxX][maxY];
		for (int i = 0; i < maxX; i++) {
			for (int j = 0; j < maxY; j++) {
				all[i][j] = false;
			}
		}
		int arrayLength = maxX > 20 ? 10 : maxX / 2;
		for (int i = 0; i < arrayLength; i++) {
			int x = maxX / 10 + i;
			int y = maxY / 10;
			snakeList.addFirst(new Node(x, y));
			all[x][y] = true;
		}
		food = createFood();
		all[food.x][food.y] = true;
	}

	// 蛇移動(dòng)的方法
	public void move() {
		Node n = (Node) snakeList.getFirst();
		int x = n.x;
		int y = n.y;

		if (direction == 3) {
			x++;
		} else if (direction == 4) {
			y++;
		} else if (direction == 1) {
			x--;
		} else if (direction == 2) {
			y--;
		}
		// 實(shí)現(xiàn)對(duì)蛇撞到自身的檢測(cè)
		if ((0 <= x && x <= GamePanel.panelWidth / 15 - 1)
				&& (0 <= y && y <= GamePanel.panelHeight / 15 - 1)) {
			if (all[x][y]) {
				if (x == food.x && y == food.y) {
					snakeList.addFirst(food);
					food = createFood();
					all[food.x][food.y] = true;
				} else {
					JOptionPane.showMessageDialog(null, "你撞到自己了");
					System.exit(0);
				}
			} else {
				snakeList.addFirst(new Node(x, y));
				all[x][y] = true;
				Node l = (Node) snakeList.getLast();
				snakeList.removeLast();
				all[l.x][l.y] = false;
			}
		} else {
			JOptionPane.showMessageDialog(null, "越界了,游戲結(jié)束");
			System.exit(0);
		}
		panel.repaint();
	}

	public Node createFood() {
		int x = 0;
		int y = 0;
		do {
			Random r = new Random();
			x = r.nextInt(maxX - 10);
			y = r.nextInt(maxY - 10);

		} while (all[x][y]);
		return new Node(x, y);
	}
//設(shè)置蛇不能回頭
	public void changeDirection(int newDirection) {
		if (direction % 2 != newDirection % 2) {
			direction = newDirection;
		}
	}

	public void drawMap(Graphics2D g) {
		for (int i = 0; i < maxX; i++) {
			for (int j = 0; j < maxY; j++) {
				if (all[i][j] == true) {
					g.setColor(Color.red);
					g.fillRect(i, j, 4, 4);
				}
			}
		}
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜亚洲国产au精品一区二区| 国产成人免费视频| 亚洲精品国产第一综合99久久| 中文字幕一区在线| 欧美国产精品一区二区三区| 久久久久久久久久久久久女国产乱| 日韩欧美一区在线| 日韩欧美国产综合一区| 日韩欧美一级精品久久| 欧美一级欧美三级| 日韩欧美国产一区在线观看| 精品三级av在线| 国产午夜精品久久久久久免费视| 国产午夜亚洲精品羞羞网站| 国产精品私人自拍| 中文字幕在线一区| 一区二区在线观看av| 亚洲一区二区三区四区五区黄| 亚洲五码中文字幕| 天天综合天天综合色| 日韩国产欧美一区二区三区| 日韩av成人高清| 麻豆久久久久久| 成人在线一区二区三区| 99在线视频精品| 91久久精品国产91性色tv| 欧美日韩大陆在线| 欧美成人女星排名| 久久久久亚洲蜜桃| 日韩一区在线看| 亚洲一二三区视频在线观看| 午夜影院久久久| 黑人巨大精品欧美一区| 白白色亚洲国产精品| 色狠狠av一区二区三区| 91精品国产综合久久精品图片| 精品国产伦一区二区三区观看方式| 国产欧美日韩亚州综合 | 日韩一级免费观看| 精品91自产拍在线观看一区| 国产精品美女www爽爽爽| 一区二区三区丝袜| 男男gaygay亚洲| 不卡av电影在线播放| 在线亚洲一区二区| 日韩欧美国产麻豆| 中文字幕一区二区三区在线观看| 亚洲一区二区av在线| 寂寞少妇一区二区三区| 91丨国产丨九色丨pron| 91精品国产综合久久蜜臀| 日本一二三不卡| 午夜精品久久久| 国产一区二区三区蝌蚪| 91久久精品一区二区| 亚洲日本乱码在线观看| 首页亚洲欧美制服丝腿| 成人性视频免费网站| 欧美一区欧美二区| 中文字幕一区二区日韩精品绯色| 三级欧美在线一区| 成人午夜在线视频| 欧美精品第1页| 亚洲欧洲一区二区在线播放| 秋霞电影一区二区| 色综合久久综合| 精品国产乱码久久久久久影片| 亚洲综合色噜噜狠狠| 国产成人综合亚洲91猫咪| 欧美午夜视频网站| 国产精品乱码人人做人人爱 | 亚洲国产视频网站| 国产福利一区在线| 欧美一区二区三区性视频| 1000精品久久久久久久久| 国内精品免费在线观看| 欧美精品在线视频| 亚洲激情图片一区| 成人性视频免费网站| xnxx国产精品| 日韩主播视频在线| 色偷偷久久人人79超碰人人澡| 久久蜜臀中文字幕| 老司机精品视频线观看86| 欧美中文字幕一区| **性色生活片久久毛片| 高潮精品一区videoshd| 日韩精品一区二区三区中文不卡 | 亚洲精品日韩综合观看成人91| 国产精品自在在线| 日韩久久久久久| 五月天一区二区| 在线精品视频小说1| 最新热久久免费视频| 成人深夜视频在线观看| 国产午夜亚洲精品午夜鲁丝片 | 国产丶欧美丶日本不卡视频| 日韩亚洲欧美中文三级| 五月天国产精品| 欧美亚男人的天堂| 亚洲一区二区三区在线播放| 91啪亚洲精品| 亚洲免费观看高清完整版在线观看 | 国产精品中文有码| 精品av久久707| 韩国v欧美v日本v亚洲v| 欧美成人在线直播| 狠狠色狠狠色综合系列| 精品成人一区二区三区四区| 国产综合成人久久大片91| 欧美精品一区二区三区一线天视频 | 日韩亚洲欧美在线观看| 免费在线视频一区| 日韩欧美国产一二三区| 国产乱码精品1区2区3区| 国产日韩一级二级三级| 国产aⅴ综合色| 国产精品久久99| 色久综合一二码| 午夜国产不卡在线观看视频| 宅男在线国产精品| 国产中文一区二区三区| 久久久亚洲精华液精华液精华液| 成人一道本在线| 17c精品麻豆一区二区免费| 91影视在线播放| 一区二区三区在线观看欧美| 欧美日韩国产成人在线免费| 蜜桃视频在线观看一区| 久久久精品免费免费| 99精品久久99久久久久| 亚洲一级二级三级在线免费观看| 欧美精品在线观看一区二区| 国产中文字幕一区| 136国产福利精品导航| 欧美日韩免费在线视频| 精品夜夜嗨av一区二区三区| 国产日韩欧美一区二区三区乱码| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲成人免费观看| 精品久久久久一区| 国产aⅴ综合色| 亚洲大尺度视频在线观看| 日韩亚洲欧美成人一区| 福利91精品一区二区三区| 一区二区三区四区不卡视频| 日韩精品一区二区三区在线| 成人18视频日本| 婷婷开心久久网| 国产精品视频看| 欧美色图激情小说| 国产乱码精品一区二区三区五月婷| 亚洲欧美一区二区三区久本道91| 欧美一区三区四区| 99视频精品免费视频| 日精品一区二区| 国产精品不卡在线观看| 日韩三区在线观看| 91在线播放网址| 国产一区二区在线视频| 亚洲一区av在线| 久久美女高清视频| 欧美日韩一区二区三区四区五区| 国产酒店精品激情| 亚洲18女电影在线观看| 欧美国产日产图区| 日韩一区二区三区av| 91久久免费观看| 国产91对白在线观看九色| 日本亚洲欧美天堂免费| 亚洲六月丁香色婷婷综合久久| 欧美mv和日韩mv的网站| 欧美日韩三级在线| av不卡免费在线观看| 黄色成人免费在线| 水野朝阳av一区二区三区| 中文字幕在线不卡国产视频| 精品国产一区二区国模嫣然| 欧美私模裸体表演在线观看| www.在线成人| 国产美女娇喘av呻吟久久| 日韩电影在线观看网站| 有坂深雪av一区二区精品| 国产精品亲子伦对白| 欧美精品一区二| 制服丝袜一区二区三区| 欧美色爱综合网| 91麻豆免费看| 成人永久免费视频| 国产传媒欧美日韩成人| 免费三级欧美电影| 午夜久久福利影院| 亚洲韩国一区二区三区| 亚洲人成在线播放网站岛国| 欧美经典一区二区三区| 久久久久久久久久久99999| 精品国产欧美一区二区| 日韩欧美你懂的| 日韩一区二区在线免费观看| 在线观看91精品国产麻豆|