成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java障礙物貪吃蛇代碼,簡單的貪吃蛇java代碼

JAVA貪吃蛇游戲每隔幾秒重新出現(xiàn)一個障礙物如何實現(xiàn)

調(diào)用Thread.sleep(5000);行了;

站在用戶的角度思考問題,與客戶深入溝通,找到金林網(wǎng)站設(shè)計與金林網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋金林地區(qū)。

例如

//產(chǎn)生一個障礙物

Thread.sleep(5000);

//產(chǎn)生一個障礙物

就這樣子

不過 Thread.sleep(5000);是要拋出異常的,捕獲一下而已。

求貪吃蛇JAVA代碼

import?java.awt.Color;??

import?java.awt.Graphics;??

import?java.awt.Graphics2D;??

import?java.awt.Rectangle;??

import?java.awt.event.KeyAdapter;??

import?java.awt.event.KeyEvent;??

import?java.awt.image.BufferedImage;??

import?java.util.ArrayList;??

import?java.util.List;??

import?javax.swing.JFrame;??

public?class?InterFace?extends?JFrame?{??

public?static?final?int?WIDTH?=?800,?HEIGHT?=?600,?SLEEPTIME?=?20,?L?=?1,R?=?2,?U?=?3,?D?=?4;??

BufferedImage?offersetImage=?new?BufferedImage(WIDTH,?HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;??

Rectangle?rect?=?new?Rectangle(20,?40,?15?*?50,?15?*?35);??

Snake?snake;??

Node?node;??

public?InterFace()?{??

snake?=?new?Snake(this);??

createNode();??

this.setBounds(100,?100,?WIDTH,?HEIGHT);??

this.addKeyListener(new?KeyAdapter()?{??

public?void?keyPressed(KeyEvent?arg0)?{??

System.out.println(arg0.getKeyCode());??

switch?(arg0.getKeyCode())?{??

case?KeyEvent.VK_LEFT:??

snake.dir?=?L;??

break;??

case?KeyEvent.VK_RIGHT:??

snake.dir?=?R;??

break;??

case?KeyEvent.VK_UP:??

snake.dir?=?U;??

break;??

case?KeyEvent.VK_DOWN:??

snake.dir?=?D;??

}??

}??

});??

this.setTitle("貪吃蛇?0.1???By?:?Easy");??

this.setDefaultCloseOperation(EXIT_ON_CLOSE);??

this.setVisible(true);??

new?Thread(new?ThreadUpadte()).start();??

}??

public?void?paint(Graphics?g)?{??

Graphics2D?g2d?=?(Graphics2D)?offersetImage.getGraphics();??

g2d.setColor(Color.white);??

g2d.fillRect(0,?0,?WIDTH,?HEIGHT);??

g2d.setColor(Color.black);??

g2d.drawRect(rect.x,?rect.y,?rect.width,?rect.height);??

if?(snake.hit(node))?{??

createNode();??

}??

snake.draw(g2d);??

node.draw(g2d);??

g.drawImage(offersetImage,?0,?0,?null);??

}??

class?ThreadUpadte?implements?Runnable?{??

public?void?run()?{??

while?(true)?{??

try?{??

Thread.sleep(SLEEPTIME);??

repaint();??

}?catch?(InterruptedException?e)?{??

e.printStackTrace();??

}??

}??

}??

}??

public?void?createNode()?{??

int?x?=?(int)?(Math.random()?*?650)?+?50,y?=?(int)?(Math.random()?*?500)?+?50;??

Color?color?=?Color.blue;??

node?=?new?Node(x,?y,?color);??

}??

public?static?void?main(String?args[])?{??

new?InterFace();??

}??

}??

class?Node?{??

int?x,?y,?width?=?15,?height?=?15;??

Color?color;??

public?Node(int?x,?int?y,?Color?color)?{??

this(x,?y);??

this.color?=?color;??

}??

public?Node(int?x,?int?y)?{??

this.x?=?x;??

this.y?=?y;??

this.color?=?color.black;??

}??

public?void?draw(Graphics2D?g2d)?{??

g2d.setColor(color);??

g2d.drawRect(x,?y,?width,?height);??

}??

public?Rectangle?getRect()?{??

return?new?Rectangle(x,?y,?width,?height);??

}??

}??

class?Snake?{??

public?ListNode?nodes?=?new?ArrayListNode();??

InterFace?interFace;??

int?dir=InterFace.R;??

public?Snake(InterFace?interFace)?{??

this.interFace?=?interFace;??

nodes.add(new?Node(20?+?150,?40?+?150));??

addNode();??

}??

public?boolean?hit(Node?node)?{??

for?(int?i?=?0;?i??nodes.size();?i++)?{??

if?(nodes.get(i).getRect().intersects(node.getRect()))?{??

addNode();??

return?true;??

}??

}??

return?false;??

}??

public?void?draw(Graphics2D?g2d)?{??

for?(int?i?=?0;?i??nodes.size();?i++)?{??

nodes.get(i).draw(g2d);??

}??

move();??

}??

public?void?move()?{??

nodes.remove((nodes.size()?-?1));??

addNode();??

}??

public?synchronized?void?addNode()?{??

Node?nodeTempNode?=?nodes.get(0);??

switch?(dir)?{??

case?InterFace.L:??

if?(nodeTempNode.x?=?20)?{??

nodeTempNode?=?new?Node(20?+?15?*?50,?nodeTempNode.y);??

}??

nodes.add(0,?new?Node(nodeTempNode.x?-?nodeTempNode.width,??

nodeTempNode.y));??

break;??

case?InterFace.R:??

if?(nodeTempNode.x?=?20?+?15?*?50?-?nodeTempNode.width)?{??

nodeTempNode?=?new?Node(20?-?nodeTempNode.width,?nodeTempNode.y);??

}??

nodes.add(0,?new?Node(nodeTempNode.x?+?nodeTempNode.width,??

nodeTempNode.y));??

break;??

case?InterFace.U:??

if?(nodeTempNode.y?=?40)?{??

nodeTempNode?=?new?Node(nodeTempNode.x,?40?+?15?*?35);??

}??

nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?-?nodeTempNode.height));??

break;??

case?InterFace.D:??

if?(nodeTempNode.y?=?40?+?15?*?35?-?nodeTempNode.height)?{??

nodeTempNode?=?new?Node(nodeTempNode.x,40?-?nodeTempNode.height);??

}??

nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?+?nodeTempNode.height));??

break;??

}??

}??

}

求java貪吃蛇的編程,并有注釋

J2ME貪吃蛇源代碼——200行左右,包含詳細注釋 package snake;import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;public class SnakeMIDlet extends MIDlet {

SnakeCanvas displayable = new SnakeCanvas();

public SnakeMIDlet() {

Display.getDisplay(this).setCurrent(displayable);

}public void startApp() {}public void pauseApp() {}public void destroyApp(boolean unconditional) {}}//文件名:SnakeCanvas.javapackage snake;import java.util.*;

import javax.microedition.lcdui.*;/**

* 貪吃蛇游戲

*/

public class SnakeCanvas extends Canvas implements Runnable{

/**存儲貪吃蛇節(jié)點坐標,其中第二維下標為0的代表x坐標,第二維下標是1的代表y坐標*/

int[][] snake = new int[200][2];

/**已經(jīng)使用的節(jié)點數(shù)量*/

int snakeNum;

/**貪吃蛇運動方向,0代表向上,1代表向下,2代表向左,3代表向右*/

int direction;

/*移動方向*/

/**向上*/

private final int DIRECTION_UP = 0;

/**向下*/

private final int DIRECTION_DOWN = 1;

/**向左*/

private final int DIRECTION_LEFT = 2;

/**向右*/

private final int DIRECTION_RIGHT = 3;/**游戲區(qū)域?qū)挾?/

int width;

/**游戲區(qū)域高度*/

int height;/**蛇身單元寬度*/

private final byte SNAKEWIDTH = 4;/**是否處于暫停狀態(tài),true代表暫停*/

boolean isPaused = false;

/**是否處于運行狀態(tài),true代表運行*/

boolean isRun = true;/**時間間隔*/

private final int SLEEP_TIME = 300;

/**食物的X坐標*/

int foodX;

/**食物的Y坐標*/

int foodY;

/**食物的閃爍控制*/

boolean b = true;

/**Random對象*/

Random random = new Random();

public SnakeCanvas() {

//初始化

init();

width = this.getWidth();

height = this.getHeight();

//啟動線程

new Thread(this).start();

}/**

* 初始化開始數(shù)據(jù)

*/

private void init(){

//初始化節(jié)點數(shù)量

snakeNum = 7;

//初始化節(jié)點數(shù)據(jù)

for(int i = 0;i snakeNum;i++){

snake[i][0] = 100 - SNAKEWIDTH * i;

snake[i][1] = 40;

}

//初始化移動方向

direction = DIRECTION_RIGHT;

//初始化食物坐標

foodX = 100;

foodY = 100;

}protected void paint(Graphics g) {

//清屏

g.setColor(0xffffff);

g.fillRect(0,0,width,height);

g.setColor(0);//繪制蛇身

for(int i = 0;i snakeNum;i++){

g.fillRect(snake[i][0],snake[i][1],SNAKEWIDTH,SNAKEWIDTH);

}

//繪制食物

if(b){

g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);

}

}private void move(int direction){

//蛇身移動

for(int i = snakeNum - 1;i 0;i--){

snake[i][0] = snake[i - 1][0];

snake[i][1] = snake[i - 1][1];

}//第一個單元格移動

switch(direction){

case DIRECTION_UP:

snake[0][1] = snake[0][1] - SNAKEWIDTH;

break;

case DIRECTION_DOWN:

snake[0][1] = snake[0][1] + SNAKEWIDTH;

break;

case DIRECTION_LEFT:

snake[0][0] = snake[0][0] - SNAKEWIDTH;

break;

case DIRECTION_RIGHT:

snake[0][0] = snake[0][0] + SNAKEWIDTH;

break;

}

}

/**

* 吃掉食物,自身增長

*/

private void eatFood(){

//判別蛇頭是否和食物重疊

if(snake[0][0] == foodX snake[0][1] == foodY){

snakeNum++;

generateFood();

}

}

/**

* 產(chǎn)生食物

* 說明:食物的坐標必須位于屏幕內(nèi),且不能和蛇身重合

*/

private void generateFood(){

while(true){

foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1))

/ SNAKEWIDTH * SNAKEWIDTH;

foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1))

/ SNAKEWIDTH * SNAKEWIDTH;

boolean b = true;

for(int i = 0;i snakeNum;i++){

if(foodX == snake[i][0] snake[i][1] == foodY){

b = false;

break;

}

}

if(b){

break;

}

}

}

/**

* 判斷游戲是否結(jié)束

* 結(jié)束條件:

* 1、蛇頭超出邊界

* 2、蛇頭碰到自身

*/

private boolean isGameOver(){

//邊界判別

if(snake[0][0] 0 || snake[0][0] (width - SNAKEWIDTH) ||

snake[0][1] 0 || snake[0][1] (height - SNAKEWIDTH)){

return true;

}

//碰到自身

for(int i = 4;i snakeNum;i++){

if(snake[0][0] == snake[i][0]

snake[0][1] == snake[i][1]){

return true;

}

}

return false;

}/**

* 事件處理

*/

public void keyPressed(int keyCode){

int action = this.getGameAction(keyCode);

//改變方向

switch(action){

case UP:

if(direction != DIRECTION_DOWN){

direction = DIRECTION_UP;

}

break;

case DOWN:

if(direction != DIRECTION_UP){

direction = DIRECTION_DOWN;

}

break;

case LEFT:

if(direction != DIRECTION_RIGHT){

direction = DIRECTION_LEFT;

}

break;

case RIGHT:

if(direction != DIRECTION_LEFT){

direction = DIRECTION_RIGHT;

}

break;

case FIRE:

//暫停和繼續(xù)

isPaused = !isPaused;

break;

}

}/**

* 線程方法

* 使用精確延時

*/

public void run(){

try{

while (isRun) {

//開始時間

long start = System.currentTimeMillis();

if(!isPaused){

//吃食物

eatFood();

//移動

move(direction);

//結(jié)束游戲

if(isGameOver()){

break;

}

//控制閃爍

b = !b;

}

//重新繪制

repaint();

long end = System.currentTimeMillis();

//延時

if(end - start SLEEP_TIME){

Thread.sleep(SLEEP_TIME - (end - start));

}

}

}catch(Exception e){}

}

}

高手幫忙解釋一下JAVA 貪食蛇游戲中蛇的代碼

public

class

Snake

implements

Data//蛇類實現(xiàn)了data接口

{

public

Snake()

{

array.add(new

Point(10,

10));//

array.add(new

Point(10,

11));//

array.add(new

Point(10,

12));//

array.add(new

Point(10,

13));//

array.add(new

Point(10,

14));//這五句話是構(gòu)造一個蛇,這條蛇由五個坐標點連成

currentFlag

=UPFLAG

;//當前的運動方向設(shè)為向上

lifeFlag

=

true;//當前蛇的生命設(shè)為活著

}

public

void

move()//蛇的運動函數(shù)

{

tair

=

(Point)array.get(array.size()

-

1);//得到蛇的尾巴

int

len

=

array.size()

-

2;

for(int

i

=

len;

i

=

0;

i--)//這個for循環(huán)把蛇的每一個點都坐標偏移即運動了

{

Point

leftPoint

=

(Point)array.get(i);

Point

rightPoint

=

(Point)array.get(i

+

1);

rightPoint.x

=

leftPoint.x;

rightPoint.y

=

leftPoint.y;//每一個右邊的點等于其左邊的點,像蛇那樣的一縮一張的運動

}

}

public

void

moveHeadLeft()//把蛇的頭部轉(zhuǎn)向左邊

{

if(currentFlag

==

RIGHTFLAG

||

currentFlag

==

LEFTFLAG)//如果運動方向設(shè)為向左或向右則不執(zhí)行

{

return;

}

move();

Point

point

=

(Point)(array.get(0));

//得到蛇頭部

point.x

=

point.x

-

1;//蛇頭部橫坐標減一,縱坐標不變

point.y

=

point.y;

if(point.x

LEFT)//如果蛇頭部不能再左,就不執(zhí)行

{

lifeFlag

=

false;

}

currentFlag

=

LEFTFLAG;//將蛇運動方向改為左

}

java貪吃蛇代碼注釋求解

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.image.BufferedImage;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JFrame;

public class InterFace extends JFrame {

/**

* WIDTH:寬

* HEIGHT:高

* SLEEPTIME:可以看作蛇運動的速度

* L = 1,R = 2, U = 3, D = 4 左右上下代碼

*/

public static final int WIDTH = 800, HEIGHT = 600, SLEEPTIME = 200, L = 1,R = 2, U = 3, D = 4;

BufferedImage offersetImage= new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;

Rectangle rect = new Rectangle(20, 40, 15 * 50, 15 * 35);

Snake snake;

Node node;

public InterFace() {

//創(chuàng)建"蛇"對象

snake = new Snake(this);

//創(chuàng)建"食物"對象

createNode();

this.setBounds(100, 100, WIDTH, HEIGHT);

//添加鍵盤監(jiān)聽器

this.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent arg0) {

System.out.println(arg0.getKeyCode());

switch (arg0.getKeyCode()) {

//映射上下左右4個鍵位

case KeyEvent.VK_LEFT:

snake.dir = L;

break;

case KeyEvent.VK_RIGHT:

snake.dir = R;

break;

case KeyEvent.VK_UP:

snake.dir = U;

break;

case KeyEvent.VK_DOWN:

snake.dir = D;

}

}

});

this.setTitle("貪吃蛇 0.1 By : Easy");

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

//啟動線程,開始執(zhí)行

new Thread(new ThreadUpadte()).start();

}

public void paint(Graphics g) {

Graphics2D g2d = (Graphics2D) offersetImage.getGraphics();

g2d.setColor(Color.white);

g2d.fillRect(0, 0, WIDTH, HEIGHT);

g2d.setColor(Color.black);

g2d.drawRect(rect.x, rect.y, rect.width, rect.height);

//如果蛇碰撞(吃)到食物,則創(chuàng)建新食物

if (snake.hit(node)) {

createNode();

}

snake.draw(g2d);

node.draw(g2d);

g.drawImage(offersetImage, 0, 0, null);

}

class ThreadUpadte implements Runnable {

public void run() {

//無限重繪畫面

while (true) {

try {

Thread.sleep(SLEEPTIME);

repaint(); //

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

/**

* 創(chuàng)建食物

*/

public void createNode() {

//隨機食物的出現(xiàn)位置

int x = (int) (Math.random() * 650) + 50,y = (int) (Math.random() * 500) + 50;

Color color = Color.blue;

node = new Node(x, y, color);

}

public static void main(String args[]) {

new InterFace();

}

}

/**

* 節(jié)點類(包括食物和蛇的身軀組成節(jié)點)

*/

class Node {

int x, y, width = 15, height = 15;

Color color;

public Node(int x, int y, Color color) {

this(x, y);

this.color = color;

}

public Node(int x, int y) {

this.x = x;

this.y = y;

this.color = color.black;

}

public void draw(Graphics2D g2d) {

g2d.setColor(color);

g2d.drawRect(x, y, width, height);

}

public Rectangle getRect() {

return new Rectangle(x, y, width, height);

}

}

/**

* 蛇

*/

class Snake {

public ListNode nodes = new ArrayListNode();

InterFace interFace;

int dir=InterFace.R;

public Snake(InterFace interFace) {

this.interFace = interFace;

nodes.add(new Node(20 + 150, 40 + 150));

addNode();

}

/**

* 是否碰撞到食物

* @return true 是 false 否

*/

public boolean hit(Node node) {

//遍歷整個蛇體是否與食物碰撞

for (int i = 0; i nodes.size(); i++) {

if (nodes.get(i).getRect().intersects(node.getRect())) {

addNode();

return true;

}

}

return false;

}

public void draw(Graphics2D g2d) {

for (int i = 0; i nodes.size(); i++) {

nodes.get(i).draw(g2d);

}

move();

}

public void move() {

nodes.remove((nodes.size() - 1));

addNode();

}

public synchronized void addNode() {

Node nodeTempNode = nodes.get(0);

//如果方向

switch (dir) {

case InterFace.L:

//判斷是否會撞墻

if (nodeTempNode.x = 20) {

nodeTempNode = new Node(20 + 15 * 50, nodeTempNode.y);

}

nodes.add(0, new Node(nodeTempNode.x - nodeTempNode.width,

nodeTempNode.y));

break;

case InterFace.R:

//判斷是否會撞墻

if (nodeTempNode.x = 20 + 15 * 50 - nodeTempNode.width) {

nodeTempNode = new Node(20 - nodeTempNode.width, nodeTempNode.y);

}

nodes.add(0, new Node(nodeTempNode.x + nodeTempNode.width,

nodeTempNode.y));

break;

case InterFace.U:

//判斷是否會撞墻

if (nodeTempNode.y = 40) {

nodeTempNode = new Node(nodeTempNode.x, 40 + 15 * 35);

}

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y - nodeTempNode.height));

break;

case InterFace.D:

//判斷是否會撞墻

if (nodeTempNode.y = 40 + 15 * 35 - nodeTempNode.height) {

nodeTempNode = new Node(nodeTempNode.x,40 - nodeTempNode.height);

}

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y + nodeTempNode.height));

break;

}

}

}

求一份java 貪吃蛇的代碼

package games;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

import static java.lang.Math.*;//靜態(tài)導(dǎo)入

/*

* 此類是貪吃蛇的簡單實現(xiàn)方法

* 自己可以加入在開始時的設(shè)置,比如

* 選關(guān),初始的蛇的長度等等

*/

public class Snake extends JPanel {

private static final long serialVersionUID = 1L;

private Direction dir;// 要走的方向

private int blockWidth = 10;// 塊大小

private int blockSpace = 2;// 塊之間的間隔

private long sleepTime;// 重畫的進間間隔

private MySnake my;

private int total;// 代表蛇的長度

private Rectangle food;// 代表蛇的食物

private volatile boolean go;

private int round;// 表示第幾關(guān)

public Snake(JFrame jf) {

initOther();

// 為頂級窗口類JFrame添加事件處理函數(shù)

jf.addKeyListener(new KeyAdapter() {

public void keyReleased(KeyEvent ke) {

int code = ke.getKeyCode();

if (code == KeyEvent.VK_RIGHT) {

if (dir != Direction.WEST)

dir = Direction.EAST;

}

else if (code == KeyEvent.VK_LEFT) {

if (dir != Direction.EAST)

dir = Direction.WEST;

}

else if (code == KeyEvent.VK_UP) {

if (dir != Direction.SOUTH)

dir = Direction.NORTH;

}

else if (code == KeyEvent.VK_DOWN) {

if (dir != Direction.NORTH)

dir = Direction.SOUTH;

} else if (code == KeyEvent.VK_ENTER) {

if (!go)

initOther();

}

}

});

this.setBounds(300, 300, 400, 400);

this.setVisible(true);

}

// 隨機生成一個食物的位置

private void makeFood() {

int x = 40 + (int) (random() * 30) * 12;

int y = 10 + (int) (random() * 30) * 12;

food = new Rectangle(x, y, 10, 10);

}

// 做一些初始化的工作

private void initOther() {

dir = Direction.EAST;

sleepTime = 500;

my = new MySnake();

makeFood();

total = 3;

round = 1;

new Thread(new Runnable() {

public void run() {

go = true;

while (go) {

try {

Thread.sleep(sleepTime);

repaint();

} catch (Exception exe) {

exe.printStackTrace();

}

}

}

}).start();

}

// 處理多少關(guān)的函數(shù)

private void handleRound() {

if (total == 6) {

round = 2;

sleepTime = 300;

} else if (total == 10) {

round = 3;

sleepTime = 200;

} else if (total == 15) {

round = 4;

sleepTime = 100;

} else if (total == 18) {

round = 5;

sleepTime = 50;

} else if (total == 20) {

round = 6;

sleepTime = 20;

} else if (total 21) {

round = 7;

sleepTime = 15;

}

}

// 把自己的組件全部畫出來

public void paintComponent(Graphics g) {

g.setColor(Color.PINK);

g.fillRect(0, 0, this.getWidth(), this.getHeight());

g.setColor(Color.BLACK);

g.drawRect(40, 10, 358, 360);

if (go) {

my.move();

my.draw(g);

g.setFont(new Font("黑體", Font.BOLD, 20));

g.drawString("您的得分:" + (total * 10) + " 第" + round + "關(guān)", 40,

400);

} else {

g.setFont(new Font("黑體", Font.BOLD, 20));

g.drawString("游戲結(jié)束,按回車(ENTER)鍵重玩!", 40, 440);

}

g.setColor(Color.RED);

g.fillRect(food.x, food.y, food.width, food.height);

}

private class MySnake {

private ArrayListRectangle list;

public MySnake() {

list = new ArrayListRectangle();

list.add(new Rectangle(160 + 24, 130, 10, 10));

list.add(new Rectangle(160 + 12, 130, 10, 10));

list.add(new Rectangle(160, 130, 10, 10));

}

// 蛇移動的方法

public void move() {

if (isDead()) {

go = false;

return;

}

if (dir == Direction.EAST) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x

+ (blockWidth + blockSpace), rec.y, rec.width,

rec.height);

list.add(0, rec1);

} else if (dir == Direction.WEST) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x

- (blockWidth + blockSpace), rec.y, rec.width,

rec.height);

list.add(0, rec1);

} else if (dir == Direction.NORTH) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x, rec.y

- (blockWidth + blockSpace), rec.width, rec.height);

list.add(0, rec1);

} else if (dir == Direction.SOUTH) {

Rectangle rec = list.get(0);

Rectangle rec1 = new Rectangle(rec.x, rec.y

+ (blockWidth + blockSpace), rec.width, rec.height);

list.add(0, rec1);

}

if (isEat()) {

handleRound();

makeFood();

} else {

list.remove(list.size() - 1);

}

}

// 判斷是否吃到了食物

private boolean isEat() {

if (list.get(0).contains(food)) {

total++;

return true;

} else

return false;

}

// 判斷是否死了,如果碰壁或者自己吃到自己都算死了

private boolean isDead() {

Rectangle temp = list.get(0);

if (dir == Direction.EAST) {

if (temp.x == 388)

return true;

else {

Rectangle comp = new Rectangle(temp.x + 12, temp.y, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.WEST) {

if (temp.x == 40)

return true;

else {

Rectangle comp = new Rectangle(temp.x - 12, temp.y, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.NORTH) {

if (temp.y == 10)

return true;

else {

Rectangle comp = new Rectangle(temp.x, temp.y - 12, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else if (dir == Direction.SOUTH) {

if (temp.y == 358)

return true;

else {

Rectangle comp = new Rectangle(temp.x, temp.y + 12, 10, 10);

for (Rectangle rec : list) {

if (rec.contains(comp))

return true;

}

}

return false;

} else {

return false;

}

}

// 把自己畫出來

public void draw(Graphics g) {

for (Rectangle rec : list) {

g.fillRect(rec.x, rec.y, rec.width, rec.height);

}

}

}

public static void main(String arsg[]) {

JFrame jf = new JFrame("貪吃蛇");

Snake s = new Snake(jf);

jf.getContentPane().add(s, BorderLayout.CENTER);

jf.setBounds(300, 300, 500, 500);

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

// 定義一個枚舉,在此也可以用接口或者常量值代替

enum Direction {

EAST, SOUTH, WEST, NORTH;

}

網(wǎng)頁標題:java障礙物貪吃蛇代碼,簡單的貪吃蛇java代碼
當前地址:http://jinyejixie.com/article20/dsecgjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號營銷型網(wǎng)站建設(shè)、ChatGPT、品牌網(wǎng)站制作網(wǎng)站設(shè)計公司、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
叶城县| 陵川县| 略阳县| 翁源县| 渝中区| 哈巴河县| 奉节县| 象州县| 衡阳市| 新郑市| 集贤县| 邢台县| 安乡县| 东丽区| 专栏| 红原县| 长泰县| 五家渠市| 兴文县| 英吉沙县| 阳新县| 板桥市| 临安市| 河池市| 洪雅县| 江孜县| 安塞县| 天长市| 安溪县| 云浮市| 高州市| 利川市| 闽侯县| 偃师市| 朝阳县| 杭锦旗| 河北省| 资阳市| 灌云县| 沙雅县| 莆田市|