用MVC方式實(shí)現(xiàn)的貪吃蛇游戲,共有4個(gè)類(lèi)。運(yùn)行GreedSnake運(yùn)行即可。主要是觀察者模式的使用,我已經(jīng)添加了很多注釋了。
公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出甘南免費(fèi)做網(wǎng)站回饋大家。
1、
/*
* 程序名稱(chēng):貪食蛇
* 原作者:BigF
* 修改者:algo
* 說(shuō)明:我以前也用C寫(xiě)過(guò)這個(gè)程序,現(xiàn)在看到BigF用Java寫(xiě)的這個(gè),發(fā)現(xiàn)雖然作者自稱(chēng)是Java的初學(xué)者,
* 但是明顯編寫(xiě)程序的素養(yǎng)不錯(cuò),程序結(jié)構(gòu)寫(xiě)得很清晰,有些細(xì)微得地方也寫(xiě)得很簡(jiǎn)潔,一時(shí)興起之
* 下,我認(rèn)真解讀了這個(gè)程序,發(fā)現(xiàn)數(shù)據(jù)和表現(xiàn)分開(kāi)得很好,而我近日正在學(xué)習(xí)MVC設(shè)計(jì)模式,
* 因此嘗試把程序得結(jié)構(gòu)改了一下,用MVC模式來(lái)實(shí)現(xiàn),對(duì)源程序得改動(dòng)不多。
* 我同時(shí)也為程序增加了一些自己理解得注釋?zhuān)M麑?duì)大家閱讀有幫助。
*/
package mvcTest;
/**
* @author WangYu
* @version 1.0
* Description:
* /pre
* Create on :Date :2005-6-13 Time:15:57:16
* LastModified:
* History:
*/
public class GreedSnake {
public static void main(String[] args) {
SnakeModel model = new SnakeModel(20,30);
SnakeControl control = new SnakeControl(model);
SnakeView view = new SnakeView(model,control);
//添加一個(gè)觀察者,讓view成為model的觀察者
model.addObserver(view);
(new Thread(model)).start();
}
}
-------------------------------------------------------------
2、
package mvcTest;
//SnakeControl.java
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**
* MVC中的Controler,負(fù)責(zé)接收用戶的操作,并把用戶操作通知Model
*/
public class SnakeControl implements KeyListener{
SnakeModel model;
public SnakeControl(SnakeModel model){
this.model = model;
}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (model.running){ // 運(yùn)行狀態(tài)下,處理的按鍵
switch (keyCode) {
case KeyEvent.VK_UP:
model.changeDirection(SnakeModel.UP);
break;
case KeyEvent.VK_DOWN:
model.changeDirection(SnakeModel.DOWN);
break;
case KeyEvent.VK_LEFT:
model.changeDirection(SnakeModel.LEFT);
break;
case KeyEvent.VK_RIGHT:
model.changeDirection(SnakeModel.RIGHT);
break;
case KeyEvent.VK_ADD:
case KeyEvent.VK_PAGE_UP:
model.speedUp();
break;
case KeyEvent.VK_SUBTRACT:
case KeyEvent.VK_PAGE_DOWN:
model.speedDown();
break;
case KeyEvent.VK_SPACE:
case KeyEvent.VK_P:
model.changePauseState();
break;
default:
}
}
// 任何情況下處理的按鍵,按鍵導(dǎo)致重新啟動(dòng)游戲
if (keyCode == KeyEvent.VK_R ||
keyCode == KeyEvent.VK_S ||
keyCode == KeyEvent.VK_ENTER) {
model.reset();
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
-------------------------------------------------------------
3、
/*
*
*/
package mvcTest;
/**
* 游戲的Model類(lèi),負(fù)責(zé)所有游戲相關(guān)數(shù)據(jù)及運(yùn)行
* @author WangYu
* @version 1.0
* Description:
* /pre
* Create on :Date :2005-6-13 Time:15:58:33
* LastModified:
* History:
*/
//SnakeModel.java
import javax.swing.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Observable;
import java.util.Random;
/**
* 游戲的Model類(lèi),負(fù)責(zé)所有游戲相關(guān)數(shù)據(jù)及運(yùn)行
*/
class SnakeModel extends Observable implements Runnable {
boolean[][] matrix; // 指示位置上有沒(méi)蛇體或食物
LinkedList nodeArray = new LinkedList(); // 蛇體
Node food;
int maxX;
int maxY;
int direction = 2; // 蛇運(yùn)行的方向
boolean running = false; // 運(yùn)行狀態(tài)
int timeInterval = 200; // 時(shí)間間隔,毫秒
double speedChangeRate = 0.75; // 每次得速度變化率
boolean paused = false; // 暫停標(biāo)志
int score = 0; // 得分
int countMove = 0; // 吃到食物前移動(dòng)的次數(shù)
// UP and DOWN should be even
// RIGHT and LEFT should be odd
public static final int UP = 2;
public static final int DOWN = 4;
public static final int LEFT = 1;
public static final int RIGHT = 3;
public SnakeModel( int maxX, int maxY) {
this.maxX = maxX;
this.maxY = maxY;
reset();
}
public void reset(){
direction = SnakeModel.UP; // 蛇運(yùn)行的方向
timeInterval = 200; // 時(shí)間間隔,毫秒
paused = false; // 暫停標(biāo)志
score = 0; // 得分
countMove = 0; // 吃到食物前移動(dòng)的次數(shù)
// initial matirx, 全部清0
matrix = new boolean[maxX][];
for (int i = 0; i maxX; ++i) {
matrix[i] = new boolean[maxY];
Arrays.fill(matrix[i], false);
}
// initial the snake
// 初始化蛇體,如果橫向位置超過(guò)20個(gè),長(zhǎng)度為10,否則為橫向位置的一半
int initArrayLength = maxX 20 ? 10 : maxX / 2;
nodeArray.clear();
for (int i = 0; i initArrayLength; ++i) {
int x = maxX / 2 + i;//maxX被初始化為20
int y = maxY / 2; //maxY被初始化為30
//nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15]
//默認(rèn)的運(yùn)行方向向上,所以游戲一開(kāi)始nodeArray就變?yōu)椋?/p>
// [10,14]-[10,15]-[11,15]-[12,15]~~[19,15]
nodeArray.addLast(new Node(x, y));
matrix[x][y] = true;
}
// 創(chuàng)建食物
food = createFood();
matrix[food.x][food.y] = true;
}
public void changeDirection(int newDirection) {
// 改變的方向不能與原來(lái)方向同向或反向
if (direction % 2 != newDirection % 2) {
direction = newDirection;
}
}
/**
* 運(yùn)行一次
* @return
*/
public boolean moveOn() {
Node n = (Node) nodeArray.getFirst();
int x = n.x;
int y = n.y;
// 根據(jù)方向增減坐標(biāo)值
switch (direction) {
case UP:
y--;
break;
case DOWN:
y++;
break;
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
}
// 如果新坐標(biāo)落在有效范圍內(nèi),則進(jìn)行處理
if ((0 = x x maxX) (0 = y y maxY)) {
if (matrix[x][y]) { // 如果新坐標(biāo)的點(diǎn)上有東西(蛇體或者食物)
if (x == food.x y == food.y) { // 吃到食物,成功
nodeArray.addFirst(food); // 從蛇頭贈(zèng)長(zhǎng)
// 分?jǐn)?shù)規(guī)則,與移動(dòng)改變方向的次數(shù)和速度兩個(gè)元素有關(guān)
int scoreGet = (10000 - 200 * countMove) / timeInterval;
score += scoreGet 0 ? scoreGet : 10;
countMove = 0;
food = createFood(); // 創(chuàng)建新的食物
matrix[food.x][food.y] = true; // 設(shè)置食物所在位置
return true;
} else // 吃到蛇體自身,失敗
return false;
} else { // 如果新坐標(biāo)的點(diǎn)上沒(méi)有東西(蛇體),移動(dòng)蛇體
nodeArray.addFirst(new Node(x, y));
matrix[x][y] = true;
n = (Node) nodeArray.removeLast();
matrix[n.x][n.y] = false;
countMove++;
return true;
}
}
return false; // 觸到邊線,失敗
}
public void run() {
running = true;
while (running) {
try {
Thread.sleep(timeInterval);
} catch (Exception e) {
break;
}
if (!paused) {
if (moveOn()) {
setChanged(); // Model通知View數(shù)據(jù)已經(jīng)更新
notifyObservers();
} else {
JOptionPane.showMessageDialog(null,
"you failed",
"Game Over",
JOptionPane.INFORMATION_MESSAGE);
break;
}
}
}
running = false;
}
private Node createFood() {
int x = 0;
int y = 0;
// 隨機(jī)獲取一個(gè)有效區(qū)域內(nèi)的與蛇體和食物不重疊的位置
do {
Random r = new Random();
x = r.nextInt(maxX);
y = r.nextInt(maxY);
} while (matrix[x][y]);
return new Node(x, y);
}
public void speedUp() {
timeInterval *= speedChangeRate;
}
public void speedDown() {
timeInterval /= speedChangeRate;
}
public void changePauseState() {
paused = !paused;
}
public String toString() {
String result = "";
for (int i = 0; i nodeArray.size(); ++i) {
Node n = (Node) nodeArray.get(i);
result += "[" + n.x + "," + n.y + "]";
}
return result;
}
}
class Node {
int x;
int y;
Node(int x, int y) {
this.x = x;
this.y = y;
}
}
------------------------------------------------------------
4、
package mvcTest;
//SnakeView.java
import javax.swing.*;
import java.awt.*;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Observable;
import java.util.Observer;
/**
* MVC模式中得Viewer,只負(fù)責(zé)對(duì)數(shù)據(jù)的顯示,而不用理會(huì)游戲的控制邏輯
*/
public class SnakeView implements Observer {
SnakeControl control = null;
SnakeModel model = null;
JFrame mainFrame;
Canvas paintCanvas;
JLabel labelScore;
public static final int canvasWidth = 200;
public static final int canvasHeight = 300;
public static final int nodeWidth = 10;
public static final int nodeHeight = 10;
public SnakeView(SnakeModel model, SnakeControl control) {
this.model = model;
this.control = control;
mainFrame = new JFrame("GreedSnake");
Container cp = mainFrame.getContentPane();
// 創(chuàng)建頂部的分?jǐn)?shù)顯示
labelScore = new JLabel("Score:");
cp.add(labelScore, BorderLayout.NORTH);
// 創(chuàng)建中間的游戲顯示區(qū)域
paintCanvas = new Canvas();
paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1);
paintCanvas.addKeyListener(control);
cp.add(paintCanvas, BorderLayout.CENTER);
// 創(chuàng)建底下的幫助欄
JPanel panelButtom = new JPanel();
panelButtom.setLayout(new BorderLayout());
JLabel labelHelp;
labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.NORTH);
labelHelp = new JLabel("ENTER or R or S for start;", JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.CENTER);
labelHelp = new JLabel("SPACE or P for pause", JLabel.CENTER);
panelButtom.add(labelHelp, BorderLayout.SOUTH);
cp.add(panelButtom, BorderLayout.SOUTH);
mainFrame.addKeyListener(control);
mainFrame.pack();
mainFrame.setResizable(false);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
void repaint() {
Graphics g = paintCanvas.getGraphics();
//draw background
g.setColor(Color.WHITE);
g.fillRect(0, 0, canvasWidth, canvasHeight);
// draw the snake
g.setColor(Color.BLACK);
LinkedList na = model.nodeArray;
Iterator it = na.iterator();
while (it.hasNext()) {
Node n = (Node) it.next();
drawNode(g, n);
}
// draw the food
g.setColor(Color.RED);
Node n = model.food;
drawNode(g, n);
updateScore();
}
private void drawNode(Graphics g, Node n) {
g.fillRect(n.x * nodeWidth,
n.y * nodeHeight,
nodeWidth - 1,
nodeHeight - 1);
}
public void updateScore() {
String s = "Score: " + model.score;
labelScore.setText(s);
}
public void update(Observable o, Object arg) {
repaint();
}
}
-------------------------------------------------------------
Java貪吃蛇技術(shù)選型一般需要考慮以下幾點(diǎn):
開(kāi)發(fā)平臺(tái):需要選擇適用于Java語(yǔ)言的開(kāi)發(fā)平臺(tái),如Eclipse、IntelliJ IDEA等。
編程語(yǔ)言:需要選擇Java語(yǔ)言來(lái)開(kāi)發(fā)貪吃蛇游戲。
框架和庫(kù):可以使用Java中的Swing框架和AWT庫(kù)來(lái)開(kāi)發(fā)圖形界面,并使用Java多線程編程技術(shù)來(lái)實(shí)現(xiàn)游戲的實(shí)時(shí)動(dòng)態(tài)效果。
算法和數(shù)據(jù)結(jié)構(gòu):可以使用隊(duì)列或鏈表等數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)貪吃蛇的身體,并使用類(lèi)似貪心算法的思想來(lái)決定貪吃蛇的下一步移動(dòng)方向。
編碼風(fēng)格和規(guī)范:需要遵循Java的編碼風(fēng)格和規(guī)范,確保代碼的可讀性和可維護(hù)性。
希望以上內(nèi)容能夠幫助您了解Java貪吃蛇技術(shù)選型。如果您有其他問(wèn)題,歡迎隨時(shí)告訴我,我會(huì)盡力為您解答。
用慧編程做貪吃蛇代碼過(guò)程如下:
1、我們需要建立四個(gè)頭文件,然后分別設(shè)置蛇的狀態(tài),上下左右,這是蛇能夠有方向可走的前提,然后我們?cè)僭O(shè)置蛇身的節(jié)點(diǎn),定義一個(gè)簡(jiǎn)單的函數(shù),這樣蛇的全身以及他的行走方向就弄完了。
2、貪吃蛇不能穿墻代碼。
3、第二步,一個(gè)函數(shù)這個(gè)函數(shù)的目的是貪吃蛇不能穿墻,很簡(jiǎn)單的代碼分別設(shè)置長(zhǎng)寬的最大位移,在內(nèi)部范圍內(nèi)設(shè)置為一即可通過(guò),否則不能穿墻。貪吃蛇隨機(jī)生成一個(gè)食物。
4、設(shè)置一個(gè)隨機(jī)函數(shù)。這樣貪吃蛇代碼就做好了。
慧編程是一款面向STEAM教育領(lǐng)域的積木式和代碼編程軟件,基于圖形化編程開(kāi)發(fā)。
思路:
首先你要有一條貪吃蛇,哎,就是玩兒。
1.先用Java敲一個(gè)貪吃蛇小游戲的程序。
2.把Java程序打包成jar文件包,把jar包打包成exe應(yīng)用程序
知道思路以后,接下來(lái)按照我的詳細(xì)步驟走,能少踩坑,別問(wèn)我怎么知道的?。?!
一、Java“敲一個(gè)”貪吃蛇小游戲
廢話不多說(shuō),本篇主要講從java項(xiàng)目到exe應(yīng)用程序,Java項(xiàng)目的代碼在我上傳的資源當(dāng)中——代碼-greedy snack.zip
二、將項(xiàng)目打成jar包
如何打包成jar包?
1.手動(dòng)打可直接執(zhí)行的jar包(本次不使用)2. 使用intellij idea工具打可直接執(zhí)行的jar包
1) 打開(kāi)項(xiàng)目
2)點(diǎn)擊 File — 選擇 Project Structure,找到“Artifacts” 點(diǎn)擊 “+” 選擇“JAR” —“Empty”。
3) Name欄可以填入自定義的名字,Output ditectory選擇jar包生成目標(biāo)目錄,Available Elements里雙擊需要添加到j(luò)ar包的文件,即可添加到左邊的jar包目錄,如圖:
4)點(diǎn)擊Create Manifest,選擇放置MANIFEST.MF的文件路徑,直接默認(rèn)項(xiàng)目根目錄就行,點(diǎn)擊OK。
5) 點(diǎn)擊Main Class后面選擇按鈕, 彈出框中選擇需要運(yùn)行程序入口main函數(shù),點(diǎn)擊OK,點(diǎn)擊OK。
6) 點(diǎn)擊菜單中“Build” - "Build Artifacts", 雙擊彈出框中待生成jar包下面的build即可,如下圖
7)至此使用Intellij idea生成可直接執(zhí)行jar包就完成了。
8)查看生成的jar包,并運(yùn)行jar包。命令行運(yùn)行jar包
java -jar xxx.jar
復(fù)制代碼
三、打包成為exe應(yīng)用程序
這里首先你要有:
上面生成的jar包 greedy snack.jar
工具:exe4j,一個(gè)將jar轉(zhuǎn)換成exe的工具 鏈接:… 提取碼:ijdv
1)安裝exe4j,打開(kāi)安裝好的exe4j,進(jìn)行注冊(cè)
注冊(cè)碼:L-g782dn2d-1f1yqxx1rv1sqd
2) 點(diǎn)擊 Next, 選擇JAVA轉(zhuǎn)EXE
3) Next,填入自定義的名字和生成目標(biāo)文件目錄
4) 繼續(xù)Next,選擇啟動(dòng)模式、設(shè)置程序名稱(chēng)和程序圖標(biāo)
5) 下方有個(gè)選項(xiàng),需要設(shè)置打包后的程序兼容32和64位系統(tǒng)。
勾選,然后Next。
6)然后Next,直到出現(xiàn)如下界面,開(kāi)始選擇jar包以及配置
在VM參數(shù)配置的地方加上:-Dfile.encoding=utf-8
添加jar包
設(shè)置啟動(dòng)類(lèi)
Next 配置JRE
Next 選擇 Client VM
7)Next 直到如下圖界面
桌面多了一個(gè)貪吃蛇小游戲3.0.exe文件,至此我們就成功的做出了一個(gè)Java貪吃蛇小游戲的exe應(yīng)用程序
自己寫(xiě)著玩的,很簡(jiǎn)單,你試一試哦...
主要用了javax.swing.Timer這個(gè)類(lèi):
import java.awt.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class MainClass extends JFrame {
ControlSnake control;
Toolkit kit;
Dimension dimen;
public static void main(String[] args) {
new MainClass("my snake");
}
public MainClass(String s) {
super(s);
control = new ControlSnake();
control.setFocusable(true);
kit = Toolkit.getDefaultToolkit();
dimen = kit.getScreenSize();
add(control);
setLayout(new BorderLayout());
setLocation(dimen.width / 3, dimen.height / 3);// dimen.width/3,dimen.height/3
setSize(FWIDTH, FHEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static final int FWIDTH = 315;
public static final int FHEIGHT = 380;
}
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
import java.util.Random;
@SuppressWarnings("serial")
public class ControlSnake extends JPanel implements ActionListener {
Random rand;
ArrayListPoint list, listBody;
String str, str1;
static boolean key;
int x, y, dx, dy, fx, fy, flag;
int snakeBody;
int speed;
public ControlSnake() {
snakeBody = 1;
str = "上下左右方向鍵控制 P鍵暫停...";
str1 = "現(xiàn)在的長(zhǎng)度為:" + snakeBody;
key = true;
flag = 1;
speed = 700;
rand = new Random();
list = new ArrayListPoint();
listBody = new ArrayListPoint();
x = 5;
y = 5;
list.add(new Point(x, y));
listBody.add(list.get(0));
dx = 10;
dy = 0;
fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2
setBackground(Color.WHITE);
setSize(new Dimension(318, 380));
final Timer time = new Timer(speed, this);
time.start();
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) {
dx = -10;
dy = 0;
} else if (e.getKeyCode() == 38) {
dx = 0;
dy = -10;
} else if (e.getKeyCode() == 39) {
dx = 10;
dy = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
dy = 10;
} else if (e.getKeyCode() == 80) {
if (flag % 2 == 1) {
time.stop();
}
if (flag % 2 == 0) {
time.start();
}
flag++;
}
}
});
}
public void paint(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, 400, 400);
g.setColor(Color.DARK_GRAY);
g.drawLine(3, 3, 305, 3);
g.drawLine(3, 3, 3, 305);
g.drawLine(305, 3, 305, 305);
g.drawLine(3, 305, 305, 305);
g.setColor(Color.PINK);
for (int i = 0; i listBody.size(); i++) {
g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9);
}
g.fillRect(x, y, 9, 9);
g.setColor(Color.ORANGE);
g.fillRect(fx, fy, 9, 9);
g.setColor(Color.DARK_GRAY);
str1 = "現(xiàn)在的長(zhǎng)度為:" + snakeBody;
g.drawString(str, 10, 320);
g.drawString(str1, 10, 335);
}
public void actionPerformed(ActionEvent e) {
x += dx;
y += dy;
if (makeOut() == false) {
JOptionPane.showMessageDialog(null, "重新開(kāi)始......");
speed = 700;
snakeBody = 1;
x = 5;
y = 5;
list.clear();
list.add(new Point(x, y));
listBody.clear();
listBody.add(list.get(0));
dx = 10;
dy = 0;
}
addPoint(x, y);
if (x == fx y == fy) {
speed = (int) (speed * 0.8);//速度增加參數(shù)
if (speed 200) {
speed = 100;
}
fx = rand.nextInt(30) * 10 + 5;// 2
fy = rand.nextInt(30) * 10 + 5;// 2
snakeBody++;// 2
} // 2
repaint();
}
public void addPoint(int xx, int yy) {
// 動(dòng)態(tài)的記錄最新發(fā)生的50步以?xún)?nèi)的移動(dòng)過(guò)的坐標(biāo)
// 并畫(huà)出最新的snakeBody
if (list.size() 100) {//蛇身長(zhǎng)度最長(zhǎng)為100
list.add(new Point(xx, yy));
} else {
list.remove(0);
list.add(new Point(xx, yy));
}
if (snakeBody == 1) {
listBody.remove(0);
listBody.add(0, list.get(list.size() - 1));
} else {
listBody.clear();
if (list.size() snakeBody) {
for (int i = list.size() - 1; i 0; i--) {
listBody.add(list.get(i));
}
} else {
for (int i = list.size() - 1; listBody.size() snakeBody; i--) {
listBody.add(list.get(i));
}
}
}
}
public boolean makeOut() {
if ((x 3 || y 3) || (x 305 || y 305)) {
return false;
}
for (int i = 0; i listBody.size() - 1; i++) {
for (int j = i + 1; j listBody.size(); j++) {
if (listBody.get(i).equals(listBody.get(j))) {
return false;
}
}
}
return true;
}
}
標(biāo)題名稱(chēng):java貪吃蛇代碼步驟 java貪吃蛇代碼詳解
文章網(wǎng)址:http://www.rwnh.cn/article6/dodosig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、電子商務(wù)、企業(yè)網(wǎng)站制作、網(wǎng)站制作、域名注冊(cè)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)