久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Java貪吃蛇最簡單代碼 java編寫貪吃蛇簡單版

求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{

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

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

/**已經使用的節點數量*/

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;/**游戲區域寬度*/

int width;

/**游戲區域高度*/

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

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

boolean isPaused = false;

/**是否處于運行狀態,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();

}/**

* 初始化開始數據

*/

private void init(){

//初始化節點數量

snakeNum = 7;

//初始化節點數據

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();

}

}

/**

* 產生食物

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

*/

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;

}

}

}

/**

* 判斷游戲是否結束

* 結束條件:

* 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:

//暫停和繼續

isPaused = !isPaused;

break;

}

}/**

* 線程方法

* 使用精確延時

*/

public void run(){

try{

while (isRun) {

//開始時間

long start = System.currentTimeMillis();

if(!isPaused){

//吃食物

eatFood();

//移動

move(direction);

//結束游戲

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貪吃蛇代碼注釋求解

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() {

//創建"蛇"對象

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()) {

//映射上下左右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);

//啟動線程,開始執行

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();

}

/**

* 是否碰撞到食物

* @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//蛇類實現了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()//蛇的運動函數

{

tair

=

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

-

1);//得到蛇的尾巴

int

len

=

array.size()

-

2;

for(int

i

=

len;

i

=

0;

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

{

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)//如果運動方向設為向左或向右則不執行

{

return;

}

move();

Point

point

=

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

//得到蛇頭部

point.x

=

point.x

-

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

point.y

=

point.y;

if(point.x

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

{

lifeFlag

=

false;

}

currentFlag

=

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

}

分享文章:Java貪吃蛇最簡單代碼 java編寫貪吃蛇簡單版
文章URL:http://www.js-pz168.com/article18/dohiegp.html

成都網站建設公司_創新互聯,為您提供做網站定制開發服務器托管網站維護小程序開發微信公眾號

廣告

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

h5響應式網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
亚洲三级视频在线观看| 国产成人免费高清| 成人丝袜高跟foot| 九色91在线视频| 在线视频国内自拍亚洲视频| 久久综合久色欧美综合狠狠| 亚洲国产精品欧美一二99| 国产寡妇亲子伦一区二区| 久久久99国产精品免费| 欧美日韩一本到| 国产精品传媒在线| 韩日av一区二区| 国产无套精品一区二区| 欧美在线观看视频在线| 欧美激情一区二区三区蜜桃视频| 日日骚欧美日韩| 5g国产欧美日韩视频| 一区二区三区四区视频在线观看| 26uuu另类欧美| 亚洲超丰满肉感bbw| www.性欧美| 色综合中文字幕国产 | 亚洲精品国产第一综合99久久 | 欧美中文字幕一区二区三区亚洲 | 91在线观看地址| 在线视频不卡一区二区三区| 久久视频一区二区| 青青青伊人色综合久久| 国产高清在线精品一区二区三区| 91精彩视频在线观看| 国产精品免费久久| 国产伦理精品不卡| 日韩高清av| 久久久国产一区二区三区四区小说| 亚洲成a人在线观看| 99精品国产高清一区二区| 欧美在线视频你懂得| 国产精品国产三级国产aⅴ无密码| 国产一区三区三区| 日韩电影免费观看在| 久久综合一区二区| 久久国产精品99久久人人澡| 久久伊人资源站| 精品免费日韩av| 免费高清视频精品| 开心色怡人综合网站| 日韩免费观看高清完整版| 日韩中文字幕一区二区三区| 国产精品一区二区三区免费观看 | 国产一区二区在线影院| 色爱区成人综合网| 欧美经典一区二区三区| 国产成人亚洲综合a∨婷婷| 一区二区三区欧美在线| 国产精品成人一区二区三区夜夜夜 | 九九九精品视频| 色中色综合成人| 国产精品久久久久影院老司| 成人午夜免费电影| 欧美日韩美少妇| 五月综合激情网| 欧美日韩精品综合| 欧美高清在线一区二区| 本田岬高潮一区二区三区| 欧美日韩久久不卡| 欧美顶级少妇做爰| 视频一区二区三区入口| 久久久综合网站| 亚洲成人免费在线观看| 国产日本一区二区三区| 精品福利一二区| 国产乱妇无码大片在线观看| 中文有码久久| 亚洲一区二区av电影| 国产亚洲二区| 国产女人aaa级久久久级| 成人a区在线观看| 91精品国产91久久久久久一区二区| 日本美女一区二区| 亚洲精品人成| 亚洲制服欧美中文字幕中文字幕| 精品综合久久久| 国产精品色噜噜| 99国产高清| 久久免费视频色| av电影一区二区| 欧美变态凌虐bdsm| 成人综合在线视频| 欧美一级日韩免费不卡| 国产麻豆成人精品| 欧美日韩精品三区| 久久69国产一区二区蜜臀 | 亚洲电影在线免费观看| 麻豆亚洲一区| 亚洲图片你懂的| 久久精品aaaaaa毛片| 国产精品免费av| 国产欧美一区二区三区另类精品 | 99国产精品久| 久久综合网色—综合色88| av日韩在线网站| 欧美精品一区二区三区很污很色的| 国产91精品露脸国语对白| 69堂成人精品免费视频| 国产精品系列在线观看| 91精品国产高清一区二区三区蜜臀| 国产精品自拍网站| 欧美一区二区三区精品| 成人久久视频在线观看| xnxx国产精品| 99一区二区| 亚洲欧美一区二区视频| 免费看国产精品一二区视频| 一区二区三区欧美亚洲| 神马影院我不卡午夜| 日韩主播视频在线| 欧美日韩亚洲不卡| 国产风韵犹存在线视精品| 日韩欧美黄色影院| 91视频一区二区三区| 欧美国产精品一区二区| 精品一区二区久久久久久久网站| 亚洲人午夜精品天堂一二香蕉| 欧美福利精品| 午夜欧美视频在线观看| 欧美性大战久久久久久久 | 国产精品9999久久久久仙踪林| 国产精品久久久久一区二区三区 | 亚洲精品成人精品456| 日韩伦理一区二区三区av在线| 午夜不卡在线视频| 欧美午夜精品一区二区三区| 国产精品一区二区在线播放| 欧美xxxxxxxxx| 国产精品美女诱惑| 一区二区三区四区乱视频| 在线亚洲美日韩| 国产精品综合视频| 久久中文字幕电影| 精品一区二区三区视频日产| 亚洲成人一区二区在线观看| 欧美色网一区二区| 成人高清在线视频| 中文字幕一区在线| 色综合一区二区三区| 国产精品自在在线| 日本一区二区动态图| 日本黄网免费一区二区精品| 蜜桃久久精品一区二区| 日韩欧美三级在线| 精品在线一区| 免费观看在线综合| 精品久久久网站| 蜜桃精品久久久久久久免费影院 | 亚洲同性同志一二三专区| 在线观看日本一区| 国产黑丝在线一区二区三区| 国产精品素人视频| 在线丝袜欧美日韩制服| 国产成人免费xxxxxxxx| 国产精品久久一卡二卡| 中文字幕在线亚洲精品| 成人免费看的视频| 亚洲激情网站免费观看| 欧美日韩一二三区| 国产91视觉| 日本亚洲电影天堂| 久久综合九色综合欧美就去吻 | 欧美日韩三级在线| av资源站久久亚洲| 日韩制服丝袜先锋影音| 精品美女在线播放| 欧美午夜精品久久久久免费视| 久久成人免费网| 欧美国产综合色视频| 亚洲人一区二区| 成人a区在线观看| 亚洲午夜私人影院| 日韩欧美一级二级三级| 欧美久久综合性欧美| 国产一区二区三区四| 一色桃子久久精品亚洲| 欧美性色aⅴ视频一区日韩精品| 91麻豆免费视频| 丝袜亚洲另类欧美综合| 亚洲精品在线观| 在线免费一区| 成人综合电影| 老司机免费视频一区二区三区| 国产欧美一区二区精品性| 中文字幕中文字幕99| 97se视频在线观看| 免费精品视频在线| 国产精品理论片在线观看| 欧美日韩和欧美的一区二区| 精品国产aⅴ麻豆| 国产成人啪免费观看软件| 亚洲一线二线三线视频| 久久一日本道色综合| 日本高清不卡一区|