Java实现简单版贪吃蛇游戏

网友投稿 440 2022-09-25


Java实现简单版贪吃蛇游戏

本文实例为大家分享了java实现简单版贪吃蛇游戏的具体代码,供大家参考,具体内容如下

这是一个比较简洁的小游戏,主要有三个类,一个主类,一个食物类,一个贪吃蛇类。

1、首先定义主类,主类中主要用来创建窗口

public class Main {

public static final int WIDTH=600;

public static final int HEIGHT=600;

public static void main(String[] args) {

JFrame win =new JFrame();

win.setVisible(true);

win.setSize(WIDTH, HEIGHT);

win.setDefaultCloseOperation(3);

win.setLocathttp://ionRelativeTo(null);

SnakePanel panle =new SnakePanel();

win.add(panle);

SnakePanel.Key l = panle.new Key();

win.addKeyListener(l);

panle.addKeyListener(l);

panle.run();

}

}

2、其次是定义食物类,食物有长和宽,还有在窗口中的位置

import java.util.Random;

public class Cell {

protected int x;

protected int y;

protected int width;

protected int height;

Random ran=new Random();

public Cell(){

Random ran=new Random();

this.x=ran.nextInt(25)*15+60;

this.y=ran.nextInt(25)*15+50;

this.width=15;

this.height=15;

}

public Cell(int x,int y){

this();

this.x=x;

this.y=y;

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

phttp://ublic int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

public int getWidth() {

return width;

}

public void setWidth(int width) {

this.width = width;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

}

3、最后是蛇类

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.util.Arrays;

import java.util.Timer;

import java.util.TimerTask;

import javax.swing.JPanel;

public class SnakePanel extends JPanel {

final int RIGHT=1;

final int LEFT=2;

final int UP=3;

final int DOWN=4;

int moved=1;

Cell food;

Cell[] snake;

public SnakePanel(){

food=new Cell();

snake=new Cell[5];

for(int i=0;i

snake[i]=new Cell(210+i*15,50);

}

}

class Key extends KeyAdapter{

@Override

public void keyPressed(KeyEvent e){

int code=e.getKeyCode();

//System.out.println(code);

if(code==37&&moved!=RIGHT){

moved=LEFT;

}

if(code==39&&moved!=LEFT){

moved=RIGHT;

}

if(code==38&&moved!=DOWN){

moved=UP;

}

if(code==40&&moved!=UP){

moved=DOWN;

}

}

}

public void paint(Graphics g){

super.paint(g);

g.setFont(new Font(Font.SERIF,Font.BOLD,28));

g.drawRect(60, 50, 450, 450);

for(int i=15;i<=450;i+=15){

g.drawLine(60+i, 50, 60+i, 500);

}

for(int i=15;i<=450;i+=15){

g.drawLine(60, 50+i, 510, 50+i);

}

g.setColor(Color.BLUE);

g.drawString("欢迎来到贪吃蛇大战", 140, 40);

g.fillRect(food.x, food.y, food.width, food.height);

for(int i=0;i

g.fillRect(snake[i].x, snake[i].y, snake[i].width, snake[i].height);

}

}

int speed = 250;

public void run(){

Timer timer=new Timer();

TimerTask task=new TimerTask(){

@Override

public void run() {

step();

repaint();

}

};

if(snake.length>=10){

speed=125;

}else if(snake.length>=20){

speed=60;

}else if(snake.length>=30){

speed=30;

}else if(snake.length>=40){

speed=15;

}

timer.schedule(task, 1000, speed);

}

public void step(){

for(int i=1;i

snake[i-1] = snake[i];

}

Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());

if(moved == RIGHT){

c.setX(c.getX()+15);

}

if(moved == UP){

c.setY(c.getY()-15);

}

if(moved == DOWN){

c.setY(c.getY()+15);

}

if(moved == LEFT){

c.setX(c.getX()-15);

}

snake[snake.length-1] = c;

//System.out.println(c.getX()+","+c.getY());

if(snake[snake.length-1].getX()>510||

snake[snake.length-1].getX()<60||

snake[snake.length-1].getY()>500||

snake[snake.length-1].getY()<50){

System.exit(0);

}

if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){

snake=Arrays.copyOf(snake,snake.length+1);

snake[snake.length-1]=food;

food=new Cell();

}

}

}

至此,一个简单的贪吃蛇小游戏就完成了。

snake[i]=new Cell(210+i*15,50);

}

}

class Key extends KeyAdapter{

@Override

public void keyPressed(KeyEvent e){

int code=e.getKeyCode();

//System.out.println(code);

if(code==37&&moved!=RIGHT){

moved=LEFT;

}

if(code==39&&moved!=LEFT){

moved=RIGHT;

}

if(code==38&&moved!=DOWN){

moved=UP;

}

if(code==40&&moved!=UP){

moved=DOWN;

}

}

}

public void paint(Graphics g){

super.paint(g);

g.setFont(new Font(Font.SERIF,Font.BOLD,28));

g.drawRect(60, 50, 450, 450);

for(int i=15;i<=450;i+=15){

g.drawLine(60+i, 50, 60+i, 500);

}

for(int i=15;i<=450;i+=15){

g.drawLine(60, 50+i, 510, 50+i);

}

g.setColor(Color.BLUE);

g.drawString("欢迎来到贪吃蛇大战", 140, 40);

g.fillRect(food.x, food.y, food.width, food.height);

for(int i=0;i

g.fillRect(snake[i].x, snake[i].y, snake[i].width, snake[i].height);

}

}

int speed = 250;

public void run(){

Timer timer=new Timer();

TimerTask task=new TimerTask(){

@Override

public void run() {

step();

repaint();

}

};

if(snake.length>=10){

speed=125;

}else if(snake.length>=20){

speed=60;

}else if(snake.length>=30){

speed=30;

}else if(snake.length>=40){

speed=15;

}

timer.schedule(task, 1000, speed);

}

public void step(){

for(int i=1;i

snake[i-1] = snake[i];

}

Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());

if(moved == RIGHT){

c.setX(c.getX()+15);

}

if(moved == UP){

c.setY(c.getY()-15);

}

if(moved == DOWN){

c.setY(c.getY()+15);

}

if(moved == LEFT){

c.setX(c.getX()-15);

}

snake[snake.length-1] = c;

//System.out.println(c.getX()+","+c.getY());

if(snake[snake.length-1].getX()>510||

snake[snake.length-1].getX()<60||

snake[snake.length-1].getY()>500||

snake[snake.length-1].getY()<50){

System.exit(0);

}

if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){

snake=Arrays.copyOf(snake,snake.length+1);

snake[snake.length-1]=food;

food=new Cell();

}

}

}

至此,一个简单的贪吃蛇小游戏就完成了。

g.fillRect(snake[i].x, snake[i].y, snake[i].width, snake[i].height);

}

}

int speed = 250;

public void run(){

Timer timer=new Timer();

TimerTask task=new TimerTask(){

@Override

public void run() {

step();

repaint();

}

};

if(snake.length>=10){

speed=125;

}else if(snake.length>=20){

speed=60;

}else if(snake.length>=30){

speed=30;

}else if(snake.length>=40){

speed=15;

}

timer.schedule(task, 1000, speed);

}

public void step(){

for(int i=1;i

snake[i-1] = snake[i];

}

Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());

if(moved == RIGHT){

c.setX(c.getX()+15);

}

if(moved == UP){

c.setY(c.getY()-15);

}

if(moved == DOWN){

c.setY(c.getY()+15);

}

if(moved == LEFT){

c.setX(c.getX()-15);

}

snake[snake.length-1] = c;

//System.out.println(c.getX()+","+c.getY());

if(snake[snake.length-1].getX()>510||

snake[snake.length-1].getX()<60||

snake[snake.length-1].getY()>500||

snake[snake.length-1].getY()<50){

System.exit(0);

}

if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){

snake=Arrays.copyOf(snake,snake.length+1);

snake[snake.length-1]=food;

food=new Cell();

}

}

}

至此,一个简单的贪吃蛇小游戏就完成了。

snake[i-1] = snake[i];

}

Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());

if(moved == RIGHT){

c.setX(c.getX()+15);

}

if(moved == UP){

c.setY(c.getY()-15);

}

if(moved == DOWN){

c.setY(c.getY()+15);

}

if(moved == LEFT){

c.setX(c.getX()-15);

}

snake[snake.length-1] = c;

//System.out.println(c.getX()+","+c.getY());

if(snake[snake.length-1].getX()>510||

snake[snake.length-1].getX()<60||

snake[snake.length-1].getY()>500||

snake[snake.length-1].getY()<50){

System.exit(0);

}

if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){

snake=Arrays.copyOf(snake,snake.length+1);

snake[snake.length-1]=food;

food=new Cell();

}

}

}

至此,一个简单的贪吃蛇小游戏就完成了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网络工程师TCNE阶段综合实验一详解
下一篇:STP——生成树协议(stp生成树协议的基本配置)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~