首页编程java编程贪吃蛇java代码完整版 java贪吃蛇经典小游戏

贪吃蛇java代码完整版 java贪吃蛇经典小游戏

编程之家2026-05-241122次浏览

各位老铁们好,相信很多人对贪吃蛇java代码完整版都不是特别的了解,因此呢,今天就来为大家分享下关于贪吃蛇java代码完整版以及java贪吃蛇经典小游戏的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

贪吃蛇java代码完整版 java贪吃蛇经典小游戏

求贪吃蛇java程序代码(要能运行的,有完整注释的)

三个文件,楼主看好:

运行可以,但是并不能鼓吹是一个具有好的风格的代码,。

//文件一

package greedysnake_cx;

public class Node{

int x=0;

贪吃蛇java代码完整版 java贪吃蛇经典小游戏

int y=0;

int nodewidth;

int nodeheight;

Node(int x,int y){

this.x=x;

this.y=y;

贪吃蛇java代码完整版 java贪吃蛇经典小游戏

}

}

//文件二

package greedysnake_cx;

/**

*实现一个greedysnake的模型,具有功能:

* 1)移动,moveOn()----从director参数中获取方向信息,如果方向定义的下一个点的逻辑值是true,检查是不是food,是则将food添加到

*列表的头部,snake继续移动,不是则停止移动(撞到蛇尾巴了)

* 2)加速,speedUp()----将现成的停滞时间间隔interval按照一定的比率 speedRate进行扩大

* 3)减速,speedDown()----....

*

*该类实现Runnable接口,

**/

//定义snake的模型

import java.util.*;

import javax.swing.*;

public class SnakeModel implements Runnable{

private GreedSnake gs;

//给每一个矩阵点确立一个boolean值

boolean[][] matrix;

private int maxX;

private int maxY;

//设置一个节点的列表;

LinkedList nodeArray= new LinkedList();

Node food=null;

int direction=UP;

int score=0;

//定义方向

public final static int LEFT=1;

public final static int UP=2;

public final static int RIGHT=3;

public final static int DOWN=4;

private int interval=200;//停顿时间的间隔

boolean pause=false;//定义暂停

private double speedRate=0.5;//定义速度的变更幅度

//constructor

public SnakeModel(GreedSnake gs,int maxx,int maxy){

this.gs=gs;

this.maxX=maxx;

this.maxY=maxy;

//this.matrix=null;

////////////////////////////////////////////////////////////////////

//init matrix[][];

matrix=new boolean[maxX][];//***********************不初始化是不行滴

for(int i=0;i<maxX;i++){

matrix[i]=new boolean[maxY];//将矩阵的每一行定义成列的集合

Arrays.fill(matrix[i], false);///使用java.util.Arrays的static方法fill,将matrix[]数组里面的元素全部定义成false

//至此,矩阵里面所有的点的boolean值都是flase

//for(int j=0;j<maxY;j++){

//matrix[i][j]=false;

//}

}

////////////////////////////////////////////////////////////////////

//init nodeArray

int initlength=10;

for(int i=0;i<initlength;i++){

//确保snake出现在屏幕的中央 assure that the greedy snake appears in the center of the model

//snake的长度由maxX来确定

int x=maxX/2+i;

int y=maxY/2;

nodeArray.addFirst(new Node(x,y));

matrix[x][y]=true;

}

//////////////////////////////////////////////////////////////////////

//创建食物

food=createFood();

System.out.println("some test!");

matrix[food.x][food.y]=true;

}//end constructor

//snake动起

public boolean moveOn(){

Node head=(Node)nodeArray.getFirst();

int x=head.x;

int y=head.y;

switch(direction){

case LEFT:

x--;break;

case UP:

y--;break;

case RIGHT:

x++;break;

case DOWN:

y++;break;

default:

}

if((x>= 0&& x< maxX)&&(y>= 0&& y< maxY)){

if(matrix[x][y]){//当蛇头转至一个bool值为true的点时

if(x==food.x&&y==food.y){//该点是食物

nodeArray.addFirst(food);

//吃掉补上

food=createFood();

matrix[food.x][food.y]=true;

score+=10;

return true;

}

else//该点不是食物,(蛇尾巴)

return false;

}

else{

nodeArray.addFirst(new Node(x,y));

matrix[x][y]=true;

Node nn=(Node)nodeArray.removeLast();//移除并且返回列表中的最后一个元素

matrix[nn.x][nn.y]=false;

return true;

}

}

return false;

}//end moveOn

public void run(){

boolean running=true;

while(running){

try{

Thread.sleep(interval);

}

catch(InterruptedException e){

e.printStackTrace();

}

if(!pause){

if(moveOn()){

gs.repaint();

}

else{

JOptionPane.showMessageDialog(null,"sorry myboy,GAME OVER!","message", JOptionPane.INFORMATION_MESSAGE);

running=false;

}

}

}

/*boolean running=true;

while(running){

try{

Thread.sleep(interval);

}

catch(InterruptedException e){

e.printStackTrace();

}

if(!pause){

if(moveOn()){

gs.repaint();

}

else{

JOptionPane.showMessageDialog(null,"i am sorry,you failed!","message",JOptionPane.INFORMATION_MESSAGE);

break;

}

}

}//end while

running=false;//当且仅当失败退出的时候;

*/

}

//获取当前游戏得分

public int getScore(){

return this.score;

}

//加速

public void speedUp(){

interval*=speedRate;

}

//减速

public void speedDown(){

interval/=speedRate;

}

//设置暂停

public void chagePause(){

pause=!pause;

}

//设置方向

public void chageDirection(int newdirection){

if(direction% 2!= newdirection% 2){

direction=newdirection;

}

}

//生成食物

private Node createFood(){

/*

*创建一个随机数的生成器,这个是java.util.Random类

*与java.lang.Math类中的random()方法有不一样的地方,彼方法返回一个0-1之间的随机数

**/

Random random=new Random();

int foodx=random.nextInt(maxX);

int foody=random.nextInt(maxY);

Node food=new Node(foodx,foody);

return food;

}

}

//文件三

package greedysnake_cx;

/**

*在repaint()方法中,绘画上下文对象是从canvas对象使用getContentPane()获取的!!

**/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class GreedSnake implements KeyListener{

Canvas canvas;

private JLabel jlabel;

private JPanel jpanel;

private JFrame jframe;

SnakeModel snakemodel;

private final static int canvaswidth=400;

private final static int canvasheight=300;

private final static int nodewidth=10;

private final static int nodeheight=10;

//construction

GreedSnake(){

jframe=new JFrame("The Greed Sanke!");

jframe.setLayout(new BorderLayout());

Container cp=jframe.getContentPane();

//在jframe面板中添加各种组件

jlabel=new JLabel("welcome");

jlabel.setText("Welcome my friend! Enjoy your self!");

cp.add(jlabel,BorderLayout.NORTH);

canvas=new Canvas();

canvas.setSize(canvaswidth,canvasheight);

canvas.addKeyListener(this);//给空白面板添加键盘时间监听器!

cp.add(canvas,BorderLayout.CENTER);

jpanel=new JPanel();

jpanel.setLayout(new BorderLayout());

JLabel label=new JLabel("Pass enter or'r' or's' to start",JLabel.CENTER);

jpanel.add(label,BorderLayout.NORTH);

JLabel label2=new JLabel("Pass space to pause this game!",JLabel.CENTER);

jpanel.add(label2,BorderLayout.CENTER);

JLabel label3=new JLabel("Pass pageUp or pageDown to up or down the speed of the snake!",JLabel.CENTER);

jpanel.add(label3,BorderLayout.SOUTH);

cp.add(jpanel,BorderLayout.SOUTH);

//给顶层容器设置时间监听、可视化、关闭按钮的设定

jframe.addKeyListener(this);

jframe.pack();

jframe.setVisible(true);

jframe.setResizable(false);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

begin();

}//end construction

public void begin(){

//开启一个SnakeModel的进程,并且开始改进程

snakemodel=new SnakeModel(this,canvaswidth/nodewidth,canvasheight/nodeheight);

(new Thread(snakemodel)).start();

}

void repaint(){

int score=snakemodel.getScore();

jlabel.setText("您的得分是:"+score);

Graphics g=canvas.getGraphics();///pay attention!

g.setColor(Color.white);

g.fillRect(0, 0, canvaswidth, canvasheight);

g.setColor(Color.blue);

LinkedList list=snakemodel.nodeArray;

for(int i=0;i<list.size();i++){

Node nn=(Node)list.get(i);

paintingNode(g,nn);

}

//绘制food

g.setColor(Color.green);

Node foodnode=new Node(snakemodel.food.x,snakemodel.food.y);

paintingNode(g,foodnode);

}

public void paintingNode(Graphics gg,Node n){

/*

*使用Graphics的fillRect方法,填充一个矩形,

*矩形的起点需要乘以一个NODE的长宽,以避免重叠

**/

gg.fillRect(n.x*nodewidth, n.y*nodeheight,nodewidth-1,nodeheight-1);

}

public void keyPressed(KeyEvent e){//按下某一个键时,调用此方法

int keycode=e.getKeyCode();

/* if(keycode==KeyEvent.VK_ENTER||keycode==KeyEvent.VK_R){

begin();

}*/

switch(keycode){

case KeyEvent.VK_LEFT:

snakemodel.chageDirection(SnakeModel.LEFT);

break;

case KeyEvent.VK_UP:

snakemodel.chageDirection(SnakeModel.UP);

break;

case KeyEvent.VK_RIGHT:

snakemodel.chageDirection(SnakeModel.RIGHT);

break;

case KeyEvent.VK_DOWN:

snakemodel.chageDirection(SnakeModel.DOWN);

break;

case KeyEvent.VK_PAGE_DOWN:

snakemodel.speedDown();

break;

case KeyEvent.VK_PAGE_UP:

snakemodel.speedUp();

break;

case KeyEvent.VK_ENTER:

case KeyEvent.VK_R:

begin();

break;

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

snakemodel.chagePause();

default:

}//end switch

}//end keyPressed

public void keyReleased(KeyEvent e){//释放某一个键时,调用此方法

}

public void keyTyped(KeyEvent e){//键入某一个键时,调用此方法!

}

//main

public static void main(String[] args){

GreedSnake gs=new GreedSnake();

}

}

如何用java实现一个贪吃蛇小游戏

1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

3、定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张图片所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

4、食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

5、接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

6、开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

谁会用java编写“贪吃蛇”小游戏

汗要程序怎么这么点分啊哭了

呵呵不过你还是挺幸运给你吧

连连看的代码(基本算法)加了部分注释

import java.awt.*;

import java.awt.event.*;

public class lianliankan implements ActionListener

{

static String s="no";//用来纪录点击按钮的信息

int x0=0,y0=0,x=0,y=0,n1=0,n2=0;//用来纪录按钮的位置信息

Frame f,f1;

Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;//用比较笨的方法添加了

Button b11,b12,b13,b14,b15,b16,b17,b18;//30个按钮来实现游戏界面

Button b19,b20,b21,b22,b23,b24,b25;//可以用数组实现,这是本人

Button b26,b27,b28,b29,b30,bc;//学java时,入门的联系,所以

Button b,ba,br,bt1,bt2;//有些东西很业余!!嘻嘻

Panel p1,p2,p3;

TextField t;//用来显示一些随机信息,方法是下面的guli().

Label l;

int d[][]={//用来和界面的按钮建立映射关系

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0}

};

public static void main(String[] args)

{

lianliankan t=new lianliankan();

t.suiji();

t.go();

}

public void actionPerformed(ActionEvent e)//再来一次按钮的响应事件。

{

int d[][]={

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0}

};

this.d=d;

suiji();

f.setVisible(false);

f1.setVisible(false);

s="no";

go();

}

public void go()//初始化界面

{

l=new Label("亲爱的玩家,");

f=new Frame("连连看");

t=new TextField();

p2=new Panel();

p1=new Panel();

p3=new Panel();

bc=new Button("退出");

br=new Button("重列");

b=new Button();

b1=new Button(String.valueOf(d[1][1]));

b2=new Button(String.valueOf(d[1][2]));

b3=new Button(String.valueOf(d[1][3]));

b4=new Button(String.valueOf(d[1][4]));

b5=new Button(String.valueOf(d[1][5]));

b6=new Button(String.valueOf(d[2][1]));

b7=new Button(String.valueOf(d[2][2]));

b8=new Button(String.valueOf(d[2][3]));

b9=new Button(String.valueOf(d[2][4]));

b10=new Button(String.valueOf(d[2][5]));

b11=new Button(String.valueOf(d[3][1]));

b12=new Button(String.valueOf(d[3][2]));

b13=new Button(String.valueOf(d[3][3]));

b14=new Button(String.valueOf(d[3][4]));

b15=new Button(String.valueOf(d[3][5]));

b16=new Button(String.valueOf(d[4][1]));

b17=new Button(String.valueOf(d[4][2]));

b18=new Button(String.valueOf(d[4][3]));

b19=new Button(String.valueOf(d[4][4]));

b20=new Button(String.valueOf(d[4][5]));

b21=new Button(String.valueOf(d[5][1]));

b22=new Button(String.valueOf(d[5][2]));

b23=new Button(String.valueOf(d[5][3]));

b24=new Button(String.valueOf(d[5][4]));

b25=new Button(String.valueOf(d[5][5]));

b26=new Button(String.valueOf(d[6][1]));

b27=new Button(String.valueOf(d[6][2]));

b28=new Button(String.valueOf(d[6][3]));

b29=new Button(String.valueOf(d[6][4]));

b30=new Button(String.valueOf(d[6][5]));

p3.setLayout(null);

p1.setSize(250,300);

p2.setSize(100,40);

p3.setSize(300,30);

t.setSize(60,30);

l.setSize(70,30);

p1.setLayout(new GridLayout(6,5));

p1.setBackground(Color.pink);

p1.setLocation(100,100);

p2.setLocation(0,400);

p3.setLocation(50,50);

t.setLocation(230,2);

l.setLocation(150,2);

bc.setLocation(0,40);

br.setLocation(0,100);

f.add(p1);

f.add(p2);

f.add(p3);

p3.add(l);

p3.add(t);

p2.add(bc);

p2.add(br);

p1.add(b1);

p1.add(b2);

p1.add(b3);

p1.add(b4);

p1.add(b5);

p1.add(b6);

p1.add(b7);

p1.add(b8);

p1.add(b9);

p1.add(b10);

p1.add(b11);

p1.add(b12);

p1.add(b13);

p1.add(b14);

p1.add(b15);

p1.add(b16);

p1.add(b17);

p1.add(b18);

p1.add(b19);

p1.add(b20);

p1.add(b21);

p1.add(b22);

p1.add(b23);

p1.add(b24);

p1.add(b25);

p1.add(b26);

p1.add(b27);

p1.add(b28);

p1.add(b29);

p1.add(b30);

f.pack();

f.setBounds(280,100,500,450);

f.setResizable(false);

f.setVisible(true);

bc.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

ex();

}

});

br.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

chonglie();

}

});

b1.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,1,b1);

}

});

b2.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,2,b2);

}

});

b3.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,3,b3);

}

});

b4.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,4,b4);

}

});

b5.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,5,b5);

}

});

b6.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(2,1,b6);

}

});

b7.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(2,2,b7);

}

});

b8.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(2,3,b8);

}

});

b9.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(2,4,b9);

}

});

b10.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(2,5,b10);

}

});

b11.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,1,b11);

}

});

b12.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,2,b12);

}

});

b13.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,3,b13);

}

});

b14.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,4,b14);

}

});

b15.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,5,b15);

}

});

b16.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,1,b16);

}

});

b17.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,2,b17);

}

});

b18.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,3,b18);

}

});

b19.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,4,b19);

}

});

b20.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,5,b20);

}

});

b21.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,1,b21);

}

});

b22.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,2,b22);

}

});

b23.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,3,b23);

}

});

b24.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,4,b24);

}

});

b25.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,5,b25);

}

});

b26.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,1,b26);

}

});

b27.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,2,b27);

}

});

b28.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,3,b28);

}

});

b29.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,4,b29);

}

});

b30.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,5,b30);

}

});

}

public void ex()//退出界面,可用diolog来实现有模式的类型,更加符合

{

f1=new Frame("游戏作业");

f1.setLayout(new GridLayout(1,1));

bt1=new Button("确定退出");

bt2=new Button("再来一局");

f1.add(bt1);

f1.add(bt2);

f1.pack();

f1.setBounds(400,250,90,60);

f1.setResizable(false);

f1.show();

f1.setVisible(true);

bt1.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

System.exit(0);

}

});

bt2.addActionListener(this);

}

public void suiji()//产生随机数,来填充游戏界面对应的数组的各个位置

{

int m,n,k=0,k1,k2,k3;

for(m=1;m<=15;m++)

{

k1=(int)(Math.random()*25+1);

for(n=1;n<=2;n++)

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random()*5+1);

while(d[k2][k3]!=0&& k!=30)

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random()*5+1);

}

this.d[k2][k3]=k1;

k++;

}

}

}

public void guli()//随机信息

{

int l=0;

t.setText("");

l=(int)(Math.random()*10);

System.out.println(l);

switch(l)

{

case 1:

t.setText("好!加油!");

break;

case 3:

t.setText("你真棒!");

break;

case 5:

t.setText("加快速度!");

break;

case 6:

t.setText("不错啊!");

break;

case 8:

t.setText("加油吧!");

break;

case 9:

t.setText("够聪明!");

break;

default:

break;

}

}

public void chonglie()//重列方法

{

int save[],i,j,n=0,k2,k3,k;

int d[][]={

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0}

};

save=new int[30];

for(n=0;n<30;n++)

save[n]=0;//定义一个数组来保存当前的每个按钮位置上的信息

n=0;

for(i=0;i<=6;i++)

for(j=0;j<=5;j++)

{

if(this.d[i][j]!=0)

{

save[n]=this.d[i][j];

n++;

}

}

n=n-1;

this.d=d;

while(n>=0)//产生随机位置,放置按钮

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random()*5+1);

while(d[k2][k3]!=0)

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random()*5+1);

}

this.d[k2][k3]=save[n];

n--;

}

f.setVisible(false);

s="no";//这里一定要将按钮点击信息归为初始

go();

ling();

}

public void ling()//将数组中为零的成员对应的按钮消去

{//用按钮类型的数组实现会简化得多,

if(d[1][1]==0)

b1.setVisible(false);

if(d[1][2]==0)

b2.setVisible(false);

if(d[1][3]==0)

b3.setVisible(false);

if(d[1][4]==0)

b4.setVisible(false);

if(d[1][5]==0)

b5.setVisible(false);

if(d[2][1]==0)

b6.setVisible(false);

if(d[2][2]==0)

b7.setVisible(false);

if(d[2][3]==0)

b8.setVisible(false);

if(d[2][4]==0)

b9.setVisible(false);

if(d[2][5]==0)

b10.setVisible(false);

if(d[3][1]==0)

b11.setVisible(false);

if(d[3][2]==0)

b12.setVisible(false);

if(d[3][3]==0)

b13.setVisible(false);

if(d[3][4]==0)

b14.setVisible(false);

if(d[3][5]==0)

b15.setVisible(false);

if(d[4][1]==0)

b16.setVisible(false);

if(d[4][2]==0)

b17.setVisible(false);

if(d[4][3]==0)

b18.setVisible(false);

if(d[4][4]==0)

b19.setVisible(false);

if(d[4][5]==0)

b20.setVisible(false);

if(d[5][1]==0)

b21.setVisible(false);

if(d[5][2]==0)

b22.setVisible(false);

if(d[5][3]==0)

b23.setVisible(false);

if(d[5][4]==0)

b24.setVisible(false);

if(d[5][5]==0)

b25.setVisible(false);

if(d[6][1]==0)

b26.setVisible(false);

if(d[6][2]==0)

b27.setVisible(false);

if(d[6][3]==0)

b28.setVisible(false);

if(d[6][4]==0)

b29.setVisible(false);

if(d[6][5]==0)

b30.setVisible(false);

}

public void wei(int w1,int w2,Button bz)//判断并纪录每次点击按钮的信息

{//当两次的按钮相同才能消去

if((s.trim()).equals("no"))

{

s=b1.getLabel();

x0=w1;

y0=w2;

n1=d[x0][y0];

b=bz;

x=w1;

y=w2;

n2=d[x][y];

ba=bz;

}

else

{

x0=x;

y0=y;

n1=d[x0][y0];

b=ba;

x=w1;

y=w2;

n2=d[x][y];

ba=bz;

if(n1==n2&& ba!=b)

{

xiao();

}

}

}

public void xiao()//这里是整个游戏最重要的部分,就是判断两个按钮在信息

{//相同的情况下能不能消去。仔细分析,不一条条注释

int i=0, j=0,n=0,k=0;

if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y)))//相邻的情况

{

ba.setVisible(false);

b.setVisible(false);

guli();

s="no";

d[x0][y0]=0;

d[x][y]=0;

}

else

{

for(j=0;j<7;j++)//两个按钮按行分析,看能否消去

{

if(d[x0][j]==0)

{

if(y>j)

{

for(i=y-1;i>=j;i--)

{

if(d[x][i]!=0)

{

k=0;

break;

}

else

{

k=1;

}

}

if(k==1)

{

if(y0>j)

{

for(i=y0-1;i>=j;i--)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(y0<j)

{

for(i=y0+1;i<=j;i++)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(y<j)

{

for(i=y+1;i<=j;i++)

{

if(d[x][i]!=0)

{

k=0;

break;

}

else

{

k=1;

}

}

if(k==1)

{

if(y0>j)

{

for(i=y0-1;i>=j;i--)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(y0<j)

{

for(i=y0+1;i<=j;i++)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(y==j)

{

if(y0>j)

{

for(i=y0-1;i>=j;i--)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(y0<j)

{

for(i=y0+1;i<=j;i++)

{

if(d[x0][i]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(k==2)

{ if(x0==x)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

if(x0<x)

{

for(n=x0;n<=x-1;n++)

{

if(d[n][j]!=0)

{

k=0;

break;

}

if(d[n][j]==0&& n==x-1)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

}

}

if(x0>x)

{

for(n=x0;n>=x+1;n--)

{

if(d[n][j]!=0)

{

k=0;

break;

}

if(d[n][j]==0&& n==x+1)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

}

}

}

}

for(i=0;i<8;i++)//按列分析,看能不能消去

{

if(d[i][y0]==0)

{

if(x>i)

{

for(j=x-1;j>=i;j--)

{

if(d[j][y]!=0)

{

k=0;

break;

}

else

{

k=1;

}

}

if(k==1)

{

if(x0>i)

{

for(j=x0-1;j>=i;j--)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(x0<i)

{

for(j=x0+1;j<=i;j++)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(x<i)

{

for(j=x+1;j<=i;j++)

{

if(d[j][y]!=0)

{

k=0;

break;

}

else

{

k=1;

}

}

if(k==1)

{

if(x0>i)

{

for(j=x0-1;j>=i;j--)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(x0<i)

{

for(j=x0+1;j<=i;j++)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(x==i)

{

if(x0>i)

{

for(j=x0-1;j>=i;j--)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

if(x0<i)

{

for(j=x0+1;j<=i;j++)

{

if(d[j][y0]!=0)

{

k=0;

break;

}

else

{

k=2;

}

}

}

}

}

if(k==2)

{

if(y0==y)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

if(y0<y)

{

for(n=y0;n<=y-1;n++)

{

if(d[i][n]!=0)

{

k=0;

break;

}

if(d[i][n]==0&& n==y-1)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

}

}

if(y0>y)

{

for(n=y0;n>=y+1;n--)

{

if(d[i][n]!=0)

{

k=0;

break;

}

if(d[i][n]==0&& n==y+1)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0;

d[x0][y0]=0;

d[x][y]=0;

}

}

}

}

}

}

}

}

关于贪吃蛇java代码完整版,java贪吃蛇经典小游戏的介绍到此结束,希望对大家有所帮助。

ai中文写作助手 AI写作助手在哪论坛网站源码下载 论坛源码最好用的