java贪吃蛇代码eclipse,java贪吃蛇代码eclipse菜单

http://www.itjxue.com  2023-01-05 12:26  来源:未知  点击次数: 

急需用eclipse写的小游戏代码 比如贪吃蛇,五子棋,猜数字,俄罗斯方块等的小游戏代码

新建一个project,新建一个类

把代码贴进去,找到运行(run)这个按钮,按了就能运行,找不到的话快捷键是Ctrl + F11

import java.awt.Color;

import java.awt.Component;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.ArrayList;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

public class SnakeGame {

public static void main(String[] args) {

SnakeFrame frame = new SnakeFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

// ----------记录状态的线程

class StatusRunnable implements Runnable {

public StatusRunnable(Snake snake, JLabel statusLabel, JLabel scoreLabel) {

this.statusLabel = statusLabel;

this.scoreLabel = scoreLabel;

this.snake = snake;

}

public void run() {

String sta = "";

String spe = "";

while (true) {

switch (snake.status) {

case Snake.RUNNING:

sta = "Running";

break;

case Snake.PAUSED:

sta = "Paused";

break;

case Snake.GAMEOVER:

sta = "GameOver";

break;

}

statusLabel.setText(sta);

scoreLabel.setText("" + snake.score);

try {

Thread.sleep(100);

} catch (Exception e) {

}

}

}

private JLabel scoreLabel;

private JLabel statusLabel;

private Snake snake;

}

// ----------蛇运动以及记录分数的线程

class SnakeRunnable implements Runnable {

public SnakeRunnable(Snake snake, Component component) {

this.snake = snake;

this.component = component;

}

public void run() {

while (true) {

try {

snake.move();

component.repaint();

Thread.sleep(snake.speed);

} catch (Exception e) {

}

}

}

private Snake snake;

private Component component;

}

class Snake {

boolean isRun;// ---------是否运动中

ArrayListNode body;// -----蛇体

Node food;// --------食物

int derection;// --------方向

int score;

int status;

int speed;

public static final int SLOW = 500;

public static final int MID = 300;

public static final int FAST = 100;

public static final int RUNNING = 1;

public static final int PAUSED = 2;

public static final int GAMEOVER = 3;

public static final int LEFT = 1;

public static final int UP = 2;

public static final int RIGHT = 3;

public static final int DOWN = 4;

public Snake() {

speed = Snake.SLOW;

score = 0;

isRun = false;

status = Snake.PAUSED;

derection = Snake.RIGHT;

body = new ArrayListNode();

body.add(new Node(60, 20));

body.add(new Node(40, 20));

body.add(new Node(20, 20));

makeFood();

}

// ------------判断食物是否被蛇吃掉

// -------如果食物在蛇运行方向的正前方,并且与蛇头接触,则被吃掉

private boolean isEaten() {

Node head = body.get(0);

if (derection == Snake.RIGHT (head.x + Node.W) == food.x

head.y == food.y)

return true;

if (derection == Snake.LEFT (head.x - Node.W) == food.x

head.y == food.y)

return true;

if (derection == Snake.UP head.x == food.x

(head.y - Node.H) == food.y)

return true;

if (derection == Snake.DOWN head.x == food.x

(head.y + Node.H) == food.y)

return true;

else

return false;

}

// ----------是否碰撞

private boolean isCollsion() {

Node node = body.get(0);

// ------------碰壁

if (derection == Snake.RIGHT node.x == 280)

return true;

if (derection == Snake.UP node.y == 0)

return true;

if (derection == Snake.LEFT node.x == 0)

return true;

if (derection == Snake.DOWN node.y == 380)

return true;

// --------------蛇头碰到蛇身

Node temp = null;

int i = 0;

for (i = 3; i body.size(); i++) {

temp = body.get(i);

if (temp.x == node.x temp.y == node.y)

break;

}

if (i body.size())

return true;

else

return false;

}

// -------在随机的地方产生食物

public void makeFood() {

Node node = new Node(0, 0);

boolean isInBody = true;

int x = 0, y = 0;

int X = 0, Y = 0;

int i = 0;

while (isInBody) {

x = (int) (Math.random() * 15);

y = (int) (Math.random() * 20);

X = x * Node.W;

Y = y * Node.H;

for (i = 0; i body.size(); i++) {

if (X == body.get(i).x Y == body.get(i).y)

break;

}

if (i body.size())

isInBody = true;

else

isInBody = false;

}

food = new Node(X, Y);

}

// ---------改变运行方向

public void changeDerection(int newDer) {

if (derection % 2 != newDer % 2)// -------如果与原来方向相同或相反,则无法改变

derection = newDer;

}

public void move() {

if (isEaten()) {// -----如果食物被吃掉

body.add(0, food);// --------把食物当成蛇头成为新的蛇体

score += 10;

makeFood();// --------产生食物

} else if (isCollsion())// ---------如果碰壁或自身

{

isRun = false;

status = Snake.GAMEOVER;// -----结束

} else if (isRun) {// ----正常运行(不吃食物,不碰壁,不碰自身)

Node node = body.get(0);

int X = node.x;

int Y = node.y;

// ------------蛇头按运行方向前进一个单位

switch (derection) {

case 1:

X -= Node.W;

break;

case 2:

Y -= Node.H;

break;

case 3:

X += Node.W;

break;

case 4:

Y += Node.H;

break;

}

body.add(0, new Node(X, Y));

// ---------------去掉蛇尾

body.remove(body.size() - 1);

}

}

}

// ---------组成蛇身的单位,食物

class Node {

public static final int W = 20;

public static final int H = 20;

int x;

int y;

public Node(int x, int y) {

this.x = x;

this.y = y;

}

}

// ------画板

class SnakePanel extends JPanel {

Snake snake;

public SnakePanel(Snake snake) {

this.snake = snake;

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

Node node = null;

for (int i = 0; i snake.body.size(); i++) {// ---红蓝间隔画蛇身

if (i % 2 == 0)

g.setColor(Color.blue);

else

g.setColor(Color.yellow);

node = snake.body.get(i);

g.fillRect(node.x, node.y, node.H, node.W);// *******************试用*********************

}

node = snake.food;

g.setColor(Color.red);

g.fillRect(node.x, node.y, node.H, node.W);

}

}

class SnakeFrame extends JFrame {

private JLabel statusLabel;

private JLabel speedLabel;

private JLabel scoreLabel;

private JPanel snakePanel;

private Snake snake;

private JMenuBar bar;

JMenu gameMenu;

JMenu helpMenu;

JMenu speedMenu;

JMenuItem newItem;

JMenuItem pauseItem;

JMenuItem beginItem;

JMenuItem helpItem;

JMenuItem aboutItem;

JMenuItem slowItem;

JMenuItem midItem;

JMenuItem fastItem;

public SnakeFrame() {

init();

ActionListener l = new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (e.getSource() == pauseItem)

snake.isRun = false;

if (e.getSource() == beginItem)

snake.isRun = true;

if (e.getSource() == newItem) {

newGame();

}

// ------------菜单控制运行速度

if (e.getSource() == slowItem) {

snake.speed = Snake.SLOW;

speedLabel.setText("Slow");

}

if (e.getSource() == midItem) {

snake.speed = Snake.MID;

speedLabel.setText("Mid");

}

if (e.getSource() == fastItem) {

snake.speed = Snake.FAST;

speedLabel.setText("Fast");

}

}

};

pauseItem.addActionListener(l);

beginItem.addActionListener(l);

newItem.addActionListener(l);

aboutItem.addActionListener(l);

slowItem.addActionListener(l);

midItem.addActionListener(l);

fastItem.addActionListener(l);

addKeyListener(new KeyListener() {

public void keyPressed(KeyEvent e) {

switch (e.getKeyCode()) {

// ------------方向键改变蛇运行方向

case KeyEvent.VK_DOWN://

snake.changeDerection(Snake.DOWN);

break;

case KeyEvent.VK_UP://

snake.changeDerection(Snake.UP);

break;

case KeyEvent.VK_LEFT://

snake.changeDerection(Snake.LEFT);

break;

case KeyEvent.VK_RIGHT://

snake.changeDerection(Snake.RIGHT);

break;

// 空格键,游戏暂停或继续

case KeyEvent.VK_SPACE://

if (snake.isRun == true) {

snake.isRun = false;

snake.status = Snake.PAUSED;

break;

}

if (snake.isRun == false) {

snake.isRun = true;

snake.status = Snake.RUNNING;

break;

}

}

}

public void keyReleased(KeyEvent k) {

}

public void keyTyped(KeyEvent k) {

}

});

}

private void init() {

speedLabel = new JLabel();

snake = new Snake();

setSize(380, 460);

setLayout(null);

this.setResizable(false);

bar = new JMenuBar();

gameMenu = new JMenu("Game");

newItem = new JMenuItem("New Game");

gameMenu.add(newItem);

pauseItem = new JMenuItem("Pause");

gameMenu.add(pauseItem);

beginItem = new JMenuItem("Continue");

gameMenu.add(beginItem);

helpMenu = new JMenu("Help");

aboutItem = new JMenuItem("About");

helpMenu.add(aboutItem);

speedMenu = new JMenu("Speed");

slowItem = new JMenuItem("Slow");

fastItem = new JMenuItem("Fast");

midItem = new JMenuItem("Middle");

speedMenu.add(slowItem);

speedMenu.add(midItem);

speedMenu.add(fastItem);

bar.add(gameMenu);

bar.add(helpMenu);

bar.add(speedMenu);

setJMenuBar(bar);

statusLabel = new JLabel();

scoreLabel = new JLabel();

snakePanel = new JPanel();

snakePanel.setBounds(0, 0, 300, 400);

snakePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));

add(snakePanel);

statusLabel.setBounds(300, 25, 60, 20);

add(statusLabel);

scoreLabel.setBounds(300, 20, 60, 20);

add(scoreLabel);

JLabel temp = new JLabel("状态");

temp.setBounds(310, 5, 60, 20);

add(temp);

temp = new JLabel("分数");

temp.setBounds(310, 105, 60, 20);

add(temp);

temp = new JLabel("速度");

temp.setBounds(310, 55, 60, 20);

add(temp);

speedLabel.setBounds(310, 75, 60, 20);

add(speedLabel);

}

private void newGame() {

this.remove(snakePanel);

this.remove(statusLabel);

this.remove(scoreLabel);

speedLabel.setText("Slow");

statusLabel = new JLabel();

scoreLabel = new JLabel();

snakePanel = new JPanel();

snake = new Snake();

snakePanel = new SnakePanel(snake);

snakePanel.setBounds(0, 0, 300, 400);

snakePanel.setBorder(BorderFactory.createLineBorder(Color.darkGray));

Runnable r1 = new SnakeRunnable(snake, snakePanel);

Runnable r2 = new StatusRunnable(snake, statusLabel, scoreLabel);

Thread t1 = new Thread(r1);

Thread t2 = new Thread(r2);

t1.start();

t2.start();

add(snakePanel);

statusLabel.setBounds(310, 25, 60, 20);

add(statusLabel);

scoreLabel.setBounds(310, 125, 60, 20);

add(scoreLabel);

}

}

如何把从网上下载下来的用java编写的“贪吃蛇”代码,用eclipse调试?

你下载的这个贪吃蛇代码需要android的运行环境,你下载个android的SDK,配置一下环境就可以运行了

从网上下载了一个贪吃蛇的java源代码,但是要怎么运行啊,电脑有装eclipse。。。。需要下载什

你要是 不想下eclipse,就进入bin目录运行java TestCardType看能否运行(看名字估计main方法在那里面)。

如果你想研究代码,用eclipse,菜单上的new--project...选project from existing source,然后选择这个程序目录,就导入了,然后点eclipse上的那个运行按钮就行了。

求Java 大神给个可以在eclipse上运行的贪吃蛇源代码在线等急

packagecom.tarena.elts.test;importjava.awt.Color;importjava.awt.Font;importjava.awt.Point;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.HashSet;importjava.util.List;importjava.util.Map;importjava.util.Random;importjava.util.Set;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassWormFrameextendsJFrame{privatestaticfinallongserialVersionUID=1L;publicstaticfinalintUP=-10;publicstaticfinalintDOWN=10;publicstaticfinalintLEFT=-200;publicstaticfinalintRIGHT=200;privateintspeed=200;//蛇的移动速度,越小越快privateJPaneljPanel=null;//游戏面板privateJLabeljLabel=null;//显示游戏结束的标签privateJButtonreset=null;//从新开始游戏的按钮privateJButtoncontrol=null;//控制方向的按钮privateListworm=newArrayList();//贪吃蛇//将整个面板划分成节点,蛇走到那里,就那整个节点点亮privateMapnodes=newHashMap();privateintdir=LEFT;//方向privatePointfood;//食物privatebooleanisContinue=false;//判断蛇是否行动的标记publicstaticvoidmain(String[]args){newWormFrame();}publicWormFrame(){initialize();start();}//游戏初始化privatevoidinitialize(){this.setSize(500,500);this.setLocation(250,100);this.setResizable(false);this.add(getJPanel());//添加面板this.setTitle("贪吃蛇,空格键暂停,回车开始");this.setVisible(true);}//游戏开始privatevoidstart(){isContinue=true;while(true){while(isContinue){try{Pointp=worm.get(0);intx=(int)p.getX()+dir/20;inty=(int)p.getY()+dir%100;if(food.equals(newPoint(x,y))){worm.add(0,food);if(worm.size()%1==0){speed-=10;}getFood();continue;}p=newPoint(x,y);if(worm.contains(p)){thrownewException();}nodes.get(p).setVisible(false);worm.add(0,p);nodes.get(worm.remove(worm.size()-1)).setVisible(true);Thread.sleep(speed);}catch(Exceptione){jLabel.setVisible(true);reset.setVisible(true);//不停止内循环,jLabel和reset不消失isContinue=false;}}try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}}}//游戏从新开始privatevoidreset(){worm=newArrayList();for(Pointp:nodes.keySet()){nodes.get(p).setVisible(false);}addWorm();dir=LEFT;getFood();isContinue=true;}//获取游戏面板的方法,面板中有记录游戏时间的标签,//代表游戏角色的按钮和重新开始游戏的按钮privateJPanelgetJPanel(){if(jPanel==null){//显示游戏结束的标签getOver();//从新开始的按钮getReset();//控制按钮getControl();//游戏面板jPanel=newJPanel();jPanel.setLayout(null);//设置面板布局为空//jPanel.setForeground(newColor(255,255,255));//设置面板前景色jPanel.setBackground(newColor(0,0,0));//设置面板背景色jPanel.add(jLabel,null);//面板中添加显示游戏结束的标签jPanel.add(reset,null);//面板中添加从新开始的按钮jPanel.add(control,null);for(inti=0;i490;i+=10){for(intj=0;j470;j+=10){JButtonjb=newJButton();Pointp=newPoint(i,j);jb.setBounds(i,j,10,10);jb.setBackground(newColor(255,255,255));jb.setEnabled(false);//jb.setVisible(true);nodes.put(p,jb);jPanel.add(jb,null);}}addWorm();//添加一条蛇getFood();//食物按钮jPanel.setVisible(true);//设置面板可见}returnjPanel;}//游戏结束标签privatevoidgetOver(){jLabel=newJLabel();jLabel.setBounds(170,200,200,50);//设置标签大小和位置jLabel.setFont(newFont("Dialog",Font.BOLD,24));//设置标签字体jLabel.setForeground(newColor(250,2,2));//设置标签前景颜色jLabel.setText("游戏结束");jLabel.setEnabled(true);//设置此标签可用jLabel.setVisible(false);//设置此标签不可见}//从新开始按钮privatevoidgetReset(){if(reset==null){reset=newJButton();//新建一个按钮reset.setBounds(170,300,164,51);//设置按钮的大小reset.setText("重新开始");//设置按钮的内容reset.setVisible(false);//设置按钮不可见//添加按钮的时间监听器reset.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){reset.setVisible(false);//点击重新开始按钮后,按钮消失jLabel.setVisible(false);//记录游戏时间的按钮也消失try{Thread.sleep(1000);}catch(InterruptedExceptione1){e1.printStackTrace();}reset();}});}}//控制方向的按钮privatevoidgetControl(){if(control==null){control=newJButton();control.addKeyListener(newKeyAdapter(){@OverridepublicvoidkeyPressed(KeyEvente){switch(e.getKeyCode()){caseKeyEvent.VK_LEFT:chDir(LEFT);break;caseKeyEvent.VK_RIGHT:chDir(RIGHT);break;caseKeyEvent.VK_UP:chDir(UP);break;caseKeyEvent.VK_DOWN:chDir(DOWN);break;caseKeyEvent.VK_ENTER:isContinue=true;break;caseKeyEvent.VK_SPACE:isContinue=false;break;}}});}}//生成食物privatevoidgetFood(){Randomran=newRandom();//横坐标最大480,纵坐标最大460intx=ran.nextInt(49)*10;inty=ran.nextInt(47)*10;food=newPoint(x,y);Setset=newHashSet(worm);while(set.contains(food)){x=ran.nextInt(50)*10;y=ran.nextInt(50)*10;food=newPoint(x,y);}nodes.get(food).setVisible(false);}//改变方向privatevoidchDir(intdir){if(this.dir+dir!=0){this.dir=dir;}}//添加Worm的方法privatevoidaddWorm(){for(inti=250;i300;i+=10){Pointp=newPoint(i,250);worm.add(p);nodes.get(p).setVisible(true);}}}//给分

想要一个在eclipse上直接运行的贪吃蛇代码

第一个类:

/**

* 代表蛇的运行方向

* @author Administrator

*

*/

public enum Dir {

L, U, R, D

}

第二个类:

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Rectangle;

import java.util.Random;

/**

* 代表蛋

* @author Administrator

*

*/

public class Egg {

int row, col;

int w = Yard.BLOCK_SIZE;

int h = Yard.BLOCK_SIZE;

private static Random r = new Random();

private Color color = Color.GREEN;

public Egg(int row, int col) {

this.row = row;

this.col = col;

}

public Egg() {

this(r.nextInt(Yard.ROWS-2) + 2, r.nextInt(Yard.COLS));

}

public void reAppear() {

this.row = r.nextInt(Yard.ROWS-2) + 2;

this.col = r.nextInt(Yard.COLS);

}

public Rectangle getRect() {

return new Rectangle(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h);

}

public void draw(Graphics g) {

Color c = g.getColor();

g.setColor(color);

g.fillOval(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h);

g.setColor(c);

if(color == Color.GREEN) color = Color.RED;

else color = Color.GREEN;

}

public int getCol() {

return col;

}

public void setCol(int col) {

this.col = col;

}

public int getRow() {

return row;

}

public void setRow(int row) {

this.row = row;

}

}

第三个类:

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Rectangle;

import java.awt.event.KeyEvent;

/**

* 代表蛇

* @author Administrator

*

*/

public class Snake {

private Node head = null;

private Node tail = null;

private int size = 0;

private Node n = new Node(20, 30, Dir.L);

private Yard y;

public Snake(Yard y) {

head = n;

tail = n;

size = 1;

this.y = y;

}

public void addToTail() {

Node node = null;

switch(tail.dir) {

case L :

node = new Node(tail.row, tail.col + 1, tail.dir);

break;

case U :

node = new Node(tail.row + 1, tail.col, tail.dir);

break;

case R :

node = new Node(tail.row, tail.col - 1, tail.dir);

break;

case D :

node = new Node(tail.row - 1, tail.col, tail.dir);

break;

}

tail.next = node;

node.prev = tail;

tail = node;

size ++;

}

public void addToHead() {

Node node = null;

switch(head.dir) {

case L :

node = new Node(head.row, head.col - 1, head.dir);

break;

case U :

node = new Node(head.row - 1, head.col, head.dir);

break;

case R :

node = new Node(head.row, head.col + 1, head.dir);

break;

case D :

node = new Node(head.row + 1, head.col, head.dir);

break;

}

node.next = head;

head.prev = node;

head = node;

size ++;

}

public void draw(Graphics g) {

if(size = 0) return;

move();

for(Node n = head; n != null; n = n.next) {

n.draw(g);

}

}

private void move() {

addToHead();

deleteFromTail();

checkDead();

}

private void checkDead() {

if(head.row 2 || head.col 0 || head.row Yard.ROWS || head.col Yard.COLS) {

y.stop();

}

for(Node n = head.next; n != null; n = n.next) {

if(head.row == n.row head.col == n.col) {

y.stop();

}

}

}

private void deleteFromTail() {

if(size == 0) return;

tail = tail.prev;

tail.next = null;

}

private class Node {

int w = Yard.BLOCK_SIZE;

int h = Yard.BLOCK_SIZE;

int row , col;

Dir dir = Dir.L;

Node next = null;

Node prev = null;

Node(int row, int col, Dir dir) {

this.row = row;

this.col = col;

this.dir = dir;

}

void draw(Graphics g) {

Color c = g.getColor();

g.setColor(Color.BLACK);

g.fillRect(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h);

g.setColor(c);

}

}

public void eat(Egg e) {

if(this.getRect().intersects(e.getRect())) {

e.reAppear();

this.addToHead();

y.setScore(y.getScore() + 5);

}

}

private Rectangle getRect() {

return new Rectangle(Yard.BLOCK_SIZE * head.col, Yard.BLOCK_SIZE * head.row, head.w, head.h);

}

public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();

switch(key) {

case KeyEvent.VK_LEFT :

if(head.dir != Dir.R)

head.dir = Dir.L;

break;

case KeyEvent.VK_UP :

if(head.dir != Dir.D)

head.dir = Dir.U;

break;

case KeyEvent.VK_RIGHT :

if(head.dir != Dir.L)

head.dir = Dir.R;

break;

case KeyEvent.VK_DOWN :

if(head.dir != Dir.U)

head.dir = Dir.D;

break;

}

}

}

第四个类:

import java.awt.Color;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

/**

* 这个类代表贪吃蛇的活动场所

* @author bjsxt

* @version 1.0

*/

public class Yard extends Frame {

PaintThread paintThread = new PaintThread();

private boolean gameOver = false; //游戏是否结束

/**

* 行数

*/

public static final int ROWS = 30;

public static final int COLS = 30;

public static final int BLOCK_SIZE = 15;

private Font fontGameOver = new Font("宋体", Font.BOLD, 50);

private int score = 0;

Snake s = new Snake(this);

Egg e = new Egg();

Image offScreenImage = null;

public void launch() {

this.setLocation(200, 200);

this.setSize(COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE);

this.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

this.setVisible(true);

this.addKeyListener(new KeyMonitor());

new Thread(paintThread).start();

}

public static void main(String[] args) {

new Yard().launch();

}

public void stop() {

gameOver = true;

}

@Override

public void paint(Graphics g) {

Color c = g.getColor();

g.setColor(Color.GRAY);

g.fillRect(0, 0, COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE);

g.setColor(Color.DARK_GRAY);

//画出横线

for(int i=1; iROWS; i++) {

g.drawLine(0, BLOCK_SIZE * i, COLS * BLOCK_SIZE, BLOCK_SIZE * i);

}

for(int i=1; iCOLS; i++) {

g.drawLine(BLOCK_SIZE * i, 0, BLOCK_SIZE * i, BLOCK_SIZE * ROWS);

}

g.setColor(Color.YELLOW);

g.drawString("score:" + score, 10, 60);

if(gameOver) {

g.setFont(fontGameOver);

g.drawString("游戏结束", 120, 180);

paintThread.pause();

}

g.setColor(c);

s.eat(e);

e.draw(g);

s.draw(g);

}

@Override

public void update(Graphics g) {

if(offScreenImage == null) {

offScreenImage = this.createImage(COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE);

}

Graphics gOff = offScreenImage.getGraphics();

paint(gOff);

g.drawImage(offScreenImage, 0, 0, null);

}

private class PaintThread implements Runnable {

private boolean running = true;

private boolean pause = false;

public void run() {

while(running) {

if(pause) continue;

else repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void pause() {

this.pause = true;

}

public void reStart() {

this.pause = false;

s = new Snake(Yard.this);

gameOver = false;

}

public void gameOver() {

running = false;

}

}

private class KeyMonitor extends KeyAdapter {

@Override

public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();

if(key == KeyEvent.VK_F2) {

paintThread.reStart();

}

s.keyPressed(e);

}

}

/**

* 拿到所得的分数

* @return 分数

*/

public int getScore() {

return score;

}

/**

* 设置所得的分数

* @param score 分数

*/

public void setScore(int score) {

this.score = score;

}

}

仅供参考。

(责任编辑:IT教学网)

更多

推荐java认证文章