調(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);是要拋出異常的,捕獲一下而已。
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;??
}??
}??
}
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){}
}
}
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;//將蛇運動方向改為左
}
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;
}
}
}
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)