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

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

java程序代碼貪吃蛇 java貪吃蛇最簡單代碼

貪吃蛇 java代碼

import java.awt.*;

成都創(chuàng)新互聯(lián)公司長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靜寧企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都做網(wǎng)站靜寧網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

import javax.swing.*;

import java.awt.event.*;

import java.util.*;

public class SnakeGame extends JFrame implements KeyListener{

private int stat=1,direction=0,bodylen=6,headx=7,heady=8,

tailx=1,taily=8,tail,foodx,foody,food;//初始化定義變量

public final int EAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量

int [][] fillblock=new int [20][20];//定義蛇身所占位置

public SnakeGame() {//構(gòu)造函數(shù)

super("貪吃蛇");

setSize(510,510);

setVisible(true);//設(shè)定窗口屬性

addKeyListener(this);//添加監(jiān)聽

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for(int i=1;i=7;i++) fillblock[i][8]=EAST;//初始化蛇身屬性

direction=EAST;//方向初始化的設(shè)置

FoodLocate(); //定位食物

while (stat==1){

fillblock[headx][heady]=direction;

switch(direction){

case 1:headx++;break;

case 2:headx--;break;

case 3:heady++;break;

case 4:heady--;break;

}//蛇頭的前進

if(heady19||headx19||tailx19||taily19||heady0||headx0||tailx0||taily0||fillblock[headx][heady]!=0){

stat=0;

break;

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

try{

Thread.sleep(150); }

catch(InterruptedException e){}//延遲

fillblock[headx][heady]=direction;

if(headx==foodxheady==foody){//吃到食物

FoodLocate();

food=2;

try{

Thread.sleep(100); }

catch(InterruptedException e){}//延遲

}

if(food!=0)food--;

else{tail=fillblock[tailx][taily];

fillblock[tailx][taily]=0;//蛇尾的消除

switch(tail){

case 1:tailx++;break;

case 2:tailx--;break;

case 3:taily++;break;

case 4:taily--;break;

}//蛇尾的前進

}

repaint();

}

if(stat==0)

JOptionPane.showMessageDialog(null,"GAME OVER","Game Over",JOptionPane.INFORMATION_MESSAGE);

}

public void keyPressed(KeyEvent e) {//按鍵響應(yīng)

int keyCode=e.getKeyCode();

if(stat==1) switch(keyCode){

case KeyEvent.VK_UP:if(direction!=SOUTH) direction=NORTH;break;

case KeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTH;break;

case KeyEvent.VK_LEFT:if(direction!=EAST)direction=WEST;break;

case KeyEvent.VK_RIGHT:if (direction!=WEST)direction=EAST;break;

}

}

public void keyReleased(KeyEvent e){}//空函數(shù)

public void keyTyped(KeyEvent e){} //空函數(shù)

public void FoodLocate(){//定位食物坐標

do{

Random r=new Random();

foodx=r.nextInt(20);

foody=r.nextInt(20);

}while (fillblock[foodx][foody]!=0);

}

public void paint(Graphics g){//畫圖

super.paint(g);

g.setColor(Color.BLUE);

for(int i=0;i20;i++)

for(int j=0;j20;j++)

if (fillblock[i][j]!=0)

g.fillRect(25*i+5,25*j+5,24,24);

g.setColor(Color.RED);

g.fillRect(foodx*25+5,foody*25+5,24,24);

}

public static void main(String[] args) {//主程序

SnakeGame application=new SnakeGame();

}

}

java貪吃蛇技術(shù)選型怎么寫的?

Java貪吃蛇技術(shù)選型一般需要考慮以下幾點:

開發(fā)平臺:需要選擇適用于Java語言的開發(fā)平臺,如Eclipse、IntelliJ IDEA等。

編程語言:需要選擇Java語言來開發(fā)貪吃蛇游戲。

框架和庫:可以使用Java中的Swing框架和AWT庫來開發(fā)圖形界面,并使用Java多線程編程技術(shù)來實現(xiàn)游戲的實時動態(tài)效果。

算法和數(shù)據(jù)結(jié)構(gòu):可以使用隊列或鏈表等數(shù)據(jù)結(jié)構(gòu)來存儲貪吃蛇的身體,并使用類似貪心算法的思想來決定貪吃蛇的下一步移動方向。

編碼風(fēng)格和規(guī)范:需要遵循Java的編碼風(fēng)格和規(guī)范,確保代碼的可讀性和可維護性。

希望以上內(nèi)容能夠幫助您了解Java貪吃蛇技術(shù)選型。如果您有其他問題,歡迎隨時告訴我,我會盡力為您解答。

高手幫忙解釋一下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程序代碼貪吃蛇 java貪吃蛇最簡單代碼
網(wǎng)站網(wǎng)址:http://weahome.cn/article/dopedsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部