真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

java貪吃蛇代碼思路,java貪吃蛇源碼

java 貪吃蛇思想

我不懂JAVA,但是我可以告訴你我用C++寫過的貪吃蛇的思想;我定義一個2維數(shù)組里面存了一些點,即屏幕的坐標點,比如你要繪制一個正方形,你可以保存它的兩個頂點坐標到數(shù)組里面,然后把你的窗口的坐標都保存起來,再定義一個2維數(shù)組,先全0,為1表示有方塊,移動的時候就對這個數(shù)組里的數(shù)據(jù)進行操作,然后繪制到桌面上判斷第二個數(shù)組的數(shù)值,是1的話到第一個數(shù)組相同的索引里面取出坐標然后繪制,這樣可以少了很多復雜的問題,至于如何判斷你得自己動動腦子了!

專注于為中小企業(yè)提供做網站、網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)煙臺免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。

多思考才能收獲。

Java 編寫貪吃蛇游戲的大體思路是什么?

樓主沒有看到蛇移動的本質,蛇雖然是分成很多塊,但他們還是一個整體,每一塊的移動都和上一塊有關,所以不需要對每一塊都進行判斷。\x0d\x0a原理:\x0d\x0a把蛇身體的每一塊看成一個對象(對象存儲該塊的坐標和相關信息),作為節(jié)點存儲在線性鏈表中,再設置一個變量標志蛇的方向(通過按鍵可以改變)。一般人都是讓每一個節(jié)點等于他指向的下一個節(jié)點,并讓頭節(jié)點改變位置來實現(xiàn)轉彎和移動,這個算法復雜度太高(O(n)),實際上只要做兩步操作,插入一個頭節(jié)點,刪除一個尾節(jié)點就可以了,新插入的頭節(jié)點位置根據(jù)蛇當前的方向決定 用一個數(shù)組將蛇頭的行徑記錄下來,然后第二段的下一個方格設置為蛇頭走過的方格,這樣子蛇走過的路徑都是前一段走過的,最后將跟著蛇頭走了,比如\x0d\x0a蛇身的路徑\x0d\x0a for(int i=snakeLength-1;i0;i--){\x0d\x0arows[i]=rows[i-1];//依次將蛇前面一段走過行的路段賦值給蛇的下一段\x0d\x0acols[i]=cols[i-1];//依次將蛇前面一段走過列的路段賦值給蛇的下一段\x0d\x0a}\x0d\x0afor(int i=1;i

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 貪食蛇游戲中蛇的代碼

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));//這五句話是構造一個蛇,這條蛇由五個坐標點連成

currentFlag

=UPFLAG

;//當前的運動方向設為向上

lifeFlag

=

true;//當前蛇的生命設為活著

}

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()//把蛇的頭部轉向左邊

{

if(currentFlag

==

RIGHTFLAG

||

currentFlag

==

LEFTFLAG)//如果運動方向設為向左或向右則不執(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;//將蛇運動方向改為左

}

怎么包裝貪吃蛇項目

思路:

首先你要有一條貪吃蛇,哎,就是玩兒。

1.先用Java敲一個貪吃蛇小游戲的程序。

2.把Java程序打包成jar文件包,把jar包打包成exe應用程序

知道思路以后,接下來按照我的詳細步驟走,能少踩坑,別問我怎么知道的?。?!

一、Java“敲一個”貪吃蛇小游戲

廢話不多說,本篇主要講從java項目到exe應用程序,Java項目的代碼在我上傳的資源當中——代碼-greedy snack.zip

二、將項目打成jar包

如何打包成jar包?

1.手動打可直接執(zhí)行的jar包(本次不使用)2. 使用intellij idea工具打可直接執(zhí)行的jar包

1) 打開項目

2)點擊 File — 選擇 Project Structure,找到“Artifacts” 點擊 “+” 選擇“JAR” —“Empty”。

3) Name欄可以填入自定義的名字,Output ditectory選擇jar包生成目標目錄,Available Elements里雙擊需要添加到jar包的文件,即可添加到左邊的jar包目錄,如圖:

4)點擊Create Manifest,選擇放置MANIFEST.MF的文件路徑,直接默認項目根目錄就行,點擊OK。

5) 點擊Main Class后面選擇按鈕, 彈出框中選擇需要運行程序入口main函數(shù),點擊OK,點擊OK。

6) 點擊菜單中“Build” - "Build Artifacts", 雙擊彈出框中待生成jar包下面的build即可,如下圖

7)至此使用Intellij idea生成可直接執(zhí)行jar包就完成了。

8)查看生成的jar包,并運行jar包。命令行運行jar包

java -jar xxx.jar

復制代碼

三、打包成為exe應用程序

這里首先你要有:

上面生成的jar包 greedy snack.jar

工具:exe4j,一個將jar轉換成exe的工具 鏈接:… 提取碼:ijdv

1)安裝exe4j,打開安裝好的exe4j,進行注冊

注冊碼:L-g782dn2d-1f1yqxx1rv1sqd

2) 點擊 Next, 選擇JAVA轉EXE

3) Next,填入自定義的名字和生成目標文件目錄

4) 繼續(xù)Next,選擇啟動模式、設置程序名稱和程序圖標

5) 下方有個選項,需要設置打包后的程序兼容32和64位系統(tǒng)。

勾選,然后Next。

6)然后Next,直到出現(xiàn)如下界面,開始選擇jar包以及配置

在VM參數(shù)配置的地方加上:-Dfile.encoding=utf-8

添加jar包

設置啟動類

Next 配置JRE

Next 選擇 Client VM

7)Next 直到如下圖界面

桌面多了一個貪吃蛇小游戲3.0.exe文件,至此我們就成功的做出了一個Java貪吃蛇小游戲的exe應用程序


網站題目:java貪吃蛇代碼思路,java貪吃蛇源碼
URL鏈接:http://weahome.cn/article/heigho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部