当前位置:首页 » 编程语言 » java贪吃蛇

java贪吃蛇

发布时间: 2022-01-18 14:49:03

㈠ 用java写的贪吃蛇的程序!~

传智播客
www.itcast.cn

网站上面有个比较完整的贪吃蛇游戏教程,可以看看

㈡ 求Java贪吃蛇代码

贪吃蛇
import java.awt.*;
import java.awt.event.*;
public class GreedSnake //主类
{

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyWindow();

}

}
class MyPanel extends Panel implements KeyListener,Runnable//自定义面板类,继承了键盘和线程接口
{

Button snake[]; //定义蛇按钮
int shu=0; //蛇的节数
int food[]; //食物数组
boolean result=true; //判定结果是输 还是赢
Thread thread; //定义线程
static int weix,weiy; //食物位置
boolean t=true; //判定游戏是否结束
int fangxiang=0; //蛇移动方向
int x=0,y=0; //蛇头位置
MyPanel()
{

setLayout(null);
snake=new Button[20];
food=new int [20];
thread=new Thread(this);

for(int j=0;j<20;j++)
{
food[j]=(int)(Math.random()*99);//定义20个随机食物
}

weix=(int)(food[0]*0.1)*60; //十位*60为横坐标
weiy=(int)(food[0]%10)*40; //个位*40为纵坐标
for(int i=0;i<20;i++)
{
snake[i]=new Button();
}

add(snake[0]);
snake[0].setBackground(Color.black);
snake[0].addKeyListener(this); //为蛇头添加键盘监视器
snake[0].setBounds(0,0,10,10);
setBackground(Color.cyan);
}

public void run() //接收线程
{

while(t)
{

if(fangxiang==0)//向右
{
try
{
x+=10;
snake[0].setLocation(x, y);//设置蛇头位置

if(x==weix&&y==weiy) //吃到食物
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint(); //重绘下一个食物
add(snake[shu]); //增加蛇节数和位置
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100); //睡眠100ms
}
catch(Exception e){}
}
else if(fangxiang==1)//向左
{
try
{
x-=10;
snake[0].setLocation(x, y);
if(x==weix&&y==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}

thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==2)//向上
{
try
{
y-=10;
snake[0].setLocation(x, y);
if(x==weix&&y==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==3)//向下
{
try
{
y+=10;
snake[0].setLocation(x, y);
if(x==weix&&y==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
int num1=shu;
while(num1>1)//判断是否咬自己的尾巴
{
if(snake[num1].getBounds().x==snake[0].getBounds().x&&snake[num1].getBounds().y==snake[0].getBounds().y)
{
t=false;
result=false;
repaint();
}
num1--;
}
if(x<0||x>=this.getWidth()||y<0||y>=this.getHeight())//判断是否撞墙
{
t=false;
result=false;
repaint();
}
int num=shu;
while(num>0) //设置蛇节位置
{
snake[num].setBounds(snake[num-1].getBounds());
num--;
}

if(shu==15) //如果蛇节数等于15则胜利
{
t=false;
result=true;
repaint();
}

}

}
public void keyPressed(KeyEvent e) //按下键盘方向键
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右键
{
if(fangxiang!=1)//如果先前方向不为左
fangxiang=0;

}
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{ if(fangxiang!=0)
fangxiang=1;

}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{ if(fangxiang!=3)
fangxiang=2;

}
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{ if(fangxiang!=2)
fangxiang=3;

}
}

public void keyTyped(KeyEvent e)
{

}
public void keyReleased(KeyEvent e)
{

}
public void paint(Graphics g) //在面板上绘图
{
int x1=this.getWidth()-1;
int y1=this.getHeight()-1;
g.setColor(Color.red);
g.fillOval(weix, weiy, 10, 10);//食物
g.drawRect(0, 0, x1, y1); //墙
if(t==false&&result==false)
g.drawString("GAME OVER!", 250, 200);//输出游戏失败
else if(t==false&&result==true)
g.drawString("YOU WIN!", 250, 200);//输出游戏成功
}

}
class MyWindow extends Frame implements ActionListener//自定义窗口类
{
MyPanel my;
Button btn;
Panel panel;
MyWindow()
{
super("GreedSnake");
my=new MyPanel();
btn=new Button("begin");
panel=new Panel();
btn.addActionListener(this);
panel.add(new Label("begin后请按Tab键选定蛇"));
panel.add(btn);
panel.add(new Label("按上下左右键控制蛇行动"));
add(panel,BorderLayout.NORTH);
add(my,BorderLayout.CENTER);
setBounds(100,100,610,500);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)//按下begin按钮
{

if(e.getSource()==btn)
{
try
{
my.thread.start(); //开始线程
my.validate();
}
catch(Exception ee){}
}

}
}
希望对你能有所帮助。

㈢ java贪吃蛇原理

用一个数组将蛇头的行径记录下来,然后第二段的下一个方格设置为蛇头走过的方格,这样子蛇走过的路径都是前一段走过的,最后将跟着蛇头走了,比如
蛇身的路径
for(int i=snakeLength-1;i>0;i--){
rows[i]=rows[i-1];//依次将蛇前面一段走过行的路段赋值给蛇的下一段
cols[i]=cols[i-1];//依次将蛇前面一段走过列的路段赋值给蛇的下一段
}
for(int i=1;i<snakeLength;i++){
gamePanel[rows[i]][cols[i]].setBackground(Color.red);//将整个面板上蛇身走过的行和列设置为不同的颜色,当然可以用图片来设置
}
蛇头走过的行和列(rows[0],cols[i])要根据不同的方向加减1来将面板设置成不同的颜色
如gamePanel[rows[i]-1][cols[i]+1].setBackground(Color.red)

㈣ java如何写贪吃蛇游戏界面

这是一个最基本的界面,下面又不会的地方去查API

import java.awt.*;
import javax.swing.*;
public class View {
JFrame frame;
Container c;
JLabel backgound;
JButton start;
JLabel help;
public void first(){
frame=new JFrame("我的贪吃蛇");
c=frame.getContentPane();
c.setLayout(null);
Font f1=new Font("楷体",Font.BOLD,50);

backgound=new JLabel();
backgound.setBounds(0,0,800,600);
c.add(backgound);
backgound.setLayout(null);

start=new JButton();
start.setBounds(300,70,200,58);
start.setCursor(new Cursor(Cursor.HAND_CURSOR));
start.setBorder(null);
start.setContentAreaFilled(false);
backgound.add(start);
help = new JLabel();
help.setText("游戏帮助");
help.setBounds(180,230,500,50);
help.setForeground(Color.black);
help.setFont(f1);
backgound.add(help);
frame.setSize(800,600);
frame.setResizable(false);
frame.setVisible(true);
}

㈤ 求贪吃蛇Java代码

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<conio.h>
#include<time.h>

#define Map_long 20
#define Map_high 15

typedef struct snake{
int goods_class;
int direction;
}SNAKE;

/*-------------------------------------------------------*/
/* 全局变量声明区 */

/* 二维结构体数组里goods_class的值,0代表活动区域(空格),
* 1代表■(地图砖头),2代表★(食物),3代表●(蛇头)
* 3之后的数字代表◎(蛇身),3+蛇长度-1表示◎(蛇尾)*/
/*direction表示蛇移动的方向,↑8,↓2,←4,→6*/
SNAKE Snake[Map_high][Map_long] = { { 0 } };

unsigned die = 0; //1表示游戏结束
unsigned snake_move = 0; //移动成功,用来跳出三重循环
unsigned eat_food = 0; //1表示碰到食物,2表示用来跳出循环
unsigned snake_long = 3; //记录蛇的长度

void Move(int ch); //蛇移动的函数

void HideCursor(); //隐藏光标函数

int main(void)
{
system("mode con:cols=43 lines=20"); //将控制台设置成长41,高18
HideCursor();

/*定义局部变量区域*/
unsigned i, j;
unsigned food = 0; //食物存在的标志,1代表食物存在
unsigned food_x, food_y; //产生食物的临时坐标
unsigned score = 0; //统计分数
char ch = '\0'; //用来获取↑↓←→

/*播种子*/
srand((unsigned)time(NULL));

/*初始化地图*/
for (i = 0; i < Map_long; i++)
{
Snake[0][i].goods_class = 1;
Snake[Map_high - 1][i].goods_class = 1;
}
for (i = 0; i < Map_high; i++)
{
Snake[i][0].goods_class = 1;
Snake[i][Map_long - 1].goods_class = 1;
}

/*初始化蛇的位置*/
for (i = 0; i < snake_long; i++)
Snake[Map_high / 2][Map_long / 2 + i].goods_class = snake_long + i;

while (1)
{
while (!_kbhit())
{
switch (ch)
{
case 72:Move(8); break;
case 75:Move(4); break;
case 77:Move(6); break;
case 80:Move(2); break;
default:break;
}

if (eat_food == 2) //2表示吃到食物,开始重置状态
{
food = 0; //食物没有了
eat_food = 0; //重新判定是否吃到食物
snake_long++; //蛇的长度加1
score++; //增加分数
}

/*产生食物*/
do{
if (food == 1)
break;
food_x = rand() % Map_long;
food_y = rand() % Map_high;
if (Snake[food_y][food_x].goods_class == 0)
{
Snake[food_y][food_x].goods_class = 2;
food++;
break;
}
} while (1);

printf("Grade:%u\n", score);
for (i = 0; i < Map_high; i++)
{
if (die == 1)
break;

for (j = 0; j < Map_long; j++)
{
switch (Snake[i][j].goods_class)
{
case 0:printf(" "); break;
case 1:printf("■"); break;
case 2:printf("★"); break;
case 3:printf("●"); break;
default:printf("◎"); break;
}
}
putchar('\n');
}
printf("Up↑ Down↓ Left← Right→ Other Pause.");

Sleep(50);
system("cls");

if (die == 1)
break;
}
if (die == 1)
break;

do{
ch = _getch();
} while (ch != -32 && ch != 80 && ch != 72 && ch != 77 && ch != 75);
ch = _getch();
}
system("cls");
printf("Game Over,your grade is %u.\n", score);
getchar();
return 0;
}

void Move(int ch)
{
int i, j, n;
int direction; //临时存储方向

for (n = 0; n < snake_long; n++)
for (i = 0; i < Map_high; i++)
{
if (snake_move == 1)
{
snake_move = 0;
break;
}
if (eat_food == 2)
break;
for (j = 0; j < Map_long; j++)
if (Snake[i][j].goods_class == 3 + n)
{
/*第一次获取按键,初始化蛇的运动状态*/
if (Snake[i][j].goods_class == 3 && Snake[i][j].direction == 0)
{
Snake[i][j].direction = ch;
Snake[i][j + 1].direction = 4;
Snake[i][j + 2].direction = 4;
}
else if (Snake[i][j].goods_class == 3) //重置蛇头的方向
Snake[i][j].direction = ch;

/*进行移动前,先判断蛇头是否碰到死亡因子*/
if (Snake[i][j].goods_class == 3)
{
if (Snake[i][j].direction == 8 && Snake[i - 1][j].goods_class != 0 && Snake[i - 1][j].goods_class != 2)
die++;

else if (Snake[i][j].direction == 2 && Snake[i + 1][j].goods_class != 0 && Snake[i + 1][j].goods_class != 2)
die++;

else if (Snake[i][j].direction == 4 && Snake[i][j - 1].goods_class != 0 && Snake[i][j - 1].goods_class != 2)
die++;

else if (Snake[i][j].direction == 6 && Snake[i][j + 1].goods_class != 0 && Snake[i][j + 1].goods_class != 2)
die++;
}

/*进行移动前,先判断蛇头是否碰到食物*/
if (Snake[i][j].goods_class == 3)
{
if (Snake[i][j].direction == 8 && Snake[i - 1][j].goods_class == 2)
eat_food++;

else if (Snake[i][j].direction == 2 && Snake[i + 1][j].goods_class == 2)
eat_food++;

else if (Snake[i][j].direction == 4 && Snake[i][j - 1].goods_class == 2)
eat_food++;

else if (Snake[i][j].direction == 6 && Snake[i][j + 1].goods_class == 2)
eat_food++;
}

if (die == 1)
break;

/*蛇尾的移动*/
if (Snake[i][j].goods_class == 3 + snake_long - 1)
{
if (eat_food == 1) //吃到食物就更新蛇尾
{
if (Snake[i][j].direction == 8)
{
direction = Snake[i - 1][j].direction;
Snake[i - 1][j] = Snake[i][j];
Snake[i - 1][j].direction = direction;
Snake[i][j].goods_class = 3 + snake_long;
}
else if (Snake[i][j].direction == 2)
{
direction = Snake[i + 1][j].direction;
Snake[i + 1][j] = Snake[i][j];
Snake[i + 1][j].direction = direction;
Snake[i][j].goods_class = 3 + snake_long;
}
else if (Snake[i][j].direction == 4)
{
direction = Snake[i][j - 1].direction;
Snake[i][j - 1] = Snake[i][j];
Snake[i][j - 1].direction = direction;
Snake[i][j].goods_class = 3 + snake_long;
}
else if (Snake[i][j].direction == 6)
{
direction = Snake[i][j + 1].direction;
Snake[i][j + 1] = Snake[i][j];
Snake[i][j + 1].direction = direction;
Snake[i][j].goods_class = 3 + snake_long;
}
snake_move++;
eat_food++;
break;
}
else{
if (Snake[i][j].direction == 8)
{
Snake[i][j].direction = Snake[i - 1][j].direction;
Snake[i - 1][j] = Snake[i][j];
Snake[i][j].goods_class = 0;
}
else if (Snake[i][j].direction == 2)
{

㈥ 用Java编的贪吃蛇游戏怎么运行

开始--运行---cmd---进入到代码的文件夹里---javac 类名.Java---java 类名
这样就可以了

㈦ 如何用Java语言写一个贪吃蛇游戏

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

㈧ java贪吃蛇是怎么做出来的

/**
* MVC模式中得Viewer,只负责对数据的显示,而不用理会游戏的控制逻辑
*/
class SnakeView implements Observer {
SnakeControl control = null; //实例话一个SnakeControl对象是control ..SnakeControl在jdk中不存在可能是第3方的或者是自己编写的一个类吧
SnakeModel model = null;//如上

JFrame mainFrame; //创建一个面板类jframe
Canvas paintCanvas;
/**
*Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
*应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。
*/
JLabel labelScore;//....不说了吧..

public static final int canvasWidth = 200; //常量宽度200
public static final int canvasHeight = 300;//常量高300

public static final int nodeWidth = 10;//常量宽度10
public static final int nodeHeight = 10;//常量高度10

public SnakeView(SnakeModel model, SnakeControl control) {
this.model = model;
this.control = control;

mainFrame = new JFrame("GreedSnake");//创建jframe 标题是GreedSnake

Container cp = mainFrame.getContentPane(); //得到jfram的容器

labelScore = new JLabel("Score:"); //创建jlabel 标签内容是"Score:"
cp.add(labelScore, BorderLayout.NORTH);/将jlabel添加到jfram的容器中去

paintCanvas = new Canvas(); //创建新绘图区
paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1); //设置绘图区大小
paintCanvas.addKeyListener(control);//添加键盘监听器control
cp.add(paintCanvas, BorderLayout.CENTER);//将绘图区添加到jfram容器中去.布局是BorderLayout的CENTER位置.就是东西南北中的中间

JPanel panelButtom = new JPanel();//创建一个panel
panelButtom.setLayout(new BorderLayout());//设置布局是BorderLayout
JLabel labelHelp;//标签的创建和添加开始了.......new了3遍就是实例化了3个都加到了panle的中间 ,标签的内容都是""中间的
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);//把这个panel添加到jframe的容器里面去

mainFrame.addKeyListener(control);//为jframe添加键盘监听器
mainFrame.pack();//调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window。
mainFrame.setResizable(false);//设置此 frame 是否可由用户调整大小。false就是不能
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击又上角的就是关闭
mainFrame.setVisible(true);//设置jfram为能看到
}

void repaint() {
Graphics g = paintCanvas.getGraphics();//Graphics详细看jdk文档..我就知道是一个所有图形上下文的抽象基类..这里应该是那个画图面板

g.setColor(Color.WHITE);//设置这个颜色
g.fillRect(0, 0, canvasWidth, canvasHeight);//画一个矩形在x,y处画一个宽是200,高是300的矩形,

g.setColor(Color.BLACK);//颜色是黑的
LinkedList na = model.nodeArray;//LinkedList 类 List 接口的链接列表实现就是一个集合对象了,因为不知道SnakeModel具体是一个什么类这里就当作这个类能得到一个集合
Iterator it = na.iterator();//得到迭代器去迭代这个集合
while (it.hasNext()) {//开始用while迭代
Node n = (Node) it.next();//得到一个集合中元素.是一个Node....这里的Node不知道是什么对象..有待于研究
drawNode(g, n);//调用另外方法
}

g.setColor(Color.RED);//设置颜色是红的
Node n = model.food;//得到一个新node..看来Node这里应该是一个坐标..这里的坐标就是蛇吃的那个东西
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) {//这个就是Observer监听类必须实现的方法..这里是去调用repaint()方法..repaint方法就是不断去改变画图版里面的内容的
repaint();
}
}
参考资料:以下是贪吃蛇java程序一部分,我需要下面程序代码的详细注解...

㈨ java 贪吃蛇 给我详细注解 高分

/**
* MVC模式中得Viewer,只负责对数据的显示,而不用理会游戏的控制逻辑
*/
class SnakeView implements Observer {
SnakeControl control = null; //实例话一个SnakeControl对象是control ..SnakeControl在jdk中不存在可能是第3方的或者是自己编写的一个类吧
SnakeModel model = null;//如上

JFrame mainFrame; //创建一个面板类jframe
Canvas paintCanvas;
/**
*Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
*应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。
*/
JLabel labelScore;//....不说了吧..

public static final int canvasWidth = 200; //常量宽度200
public static final int canvasHeight = 300;//常量高300

public static final int nodeWidth = 10;//常量宽度10
public static final int nodeHeight = 10;//常量高度10

public SnakeView(SnakeModel model, SnakeControl control) {
this.model = model;
this.control = control;

mainFrame = new JFrame("GreedSnake");//创建jframe 标题是GreedSnake

Container cp = mainFrame.getContentPane(); //得到jfram的容器

labelScore = new JLabel("Score:"); //创建jlabel 标签内容是"Score:"
cp.add(labelScore, BorderLayout.NORTH);/将jlabel添加到jfram的容器中去

paintCanvas = new Canvas(); //创建新绘图区
paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1); //设置绘图区大小
paintCanvas.addKeyListener(control);//添加键盘监听器control
cp.add(paintCanvas, BorderLayout.CENTER);//将绘图区添加到jfram容器中去.布局是BorderLayout的CENTER位置.就是东西南北中的中间

JPanel panelButtom = new JPanel();//创建一个panel
panelButtom.setLayout(new BorderLayout());//设置布局是BorderLayout
JLabel labelHelp;//标签的创建和添加开始了.......new了3遍就是实例化了3个都加到了panle的中间 ,标签的内容都是""中间的
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);//把这个panel添加到jframe的容器里面去

mainFrame.addKeyListener(control);//为jframe添加键盘监听器
mainFrame.pack();//调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window。
mainFrame.setResizable(false);//设置此 frame 是否可由用户调整大小。false就是不能
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击又上角的就是关闭
mainFrame.setVisible(true);//设置jfram为能看到
}

void repaint() {
Graphics g = paintCanvas.getGraphics();//Graphics详细看jdk文档..我就知道是一个所有图形上下文的抽象基类..这里应该是那个画图面板

g.setColor(Color.WHITE);//设置这个颜色
g.fillRect(0, 0, canvasWidth, canvasHeight);//画一个矩形在x,y处画一个宽是200,高是300的矩形,

g.setColor(Color.BLACK);//颜色是黑的
LinkedList na = model.nodeArray;//LinkedList 类 List 接口的链接列表实现就是一个集合对象了,因为不知道SnakeModel具体是一个什么类这里就当作这个类能得到一个集合
Iterator it = na.iterator();//得到迭代器去迭代这个集合
while (it.hasNext()) {//开始用while迭代
Node n = (Node) it.next();//得到一个集合中元素.是一个Node....这里的Node不知道是什么对象..有待于研究
drawNode(g, n);//调用另外方法
}

g.setColor(Color.RED);//设置颜色是红的
Node n = model.food;//得到一个新node..看来Node这里应该是一个坐标..这里的坐标就是蛇吃的那个东西
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) {//这个就是Observer监听类必须实现的方法..这里是去调用repaint()方法..repaint方法就是不断去改变画图版里面的内容的
repaint();
}
}

热点内容
社保邮政卡初始密码多少 发布:2024-12-28 03:44:16 浏览:158
阴阳师脚本免费 发布:2024-12-28 03:39:50 浏览:23
会务源码 发布:2024-12-28 03:27:11 浏览:190
如何直接用密保手机找回密码 发布:2024-12-28 03:17:11 浏览:577
电脑向服务器传文件的工具 发布:2024-12-28 03:05:17 浏览:783
编程抢手机 发布:2024-12-28 02:59:44 浏览:443
存储器占用多少字节 发布:2024-12-28 02:56:39 浏览:190
魔兽和联盟哪个对电脑配置要求高 发布:2024-12-28 02:43:26 浏览:81
屏保视频怎么设置密码 发布:2024-12-28 02:33:12 浏览:77
movies文件夹 发布:2024-12-28 02:33:07 浏览:789