java贪吃蛇能移动原理_Java简易版贪吃蛇的原理与制作

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class GamePanel extends JPanel implements Runnable, KeyListener {// 继承键盘事件监听接口private int x, y;

private int dx, dy;

private int direction;// 保存方向值public static final int SOUTH = 0, NORTH = 1, EAST = 2, WEST = 3;// 向南、北、东、西运动private Snake sk;// 建立贪吃蛇对象private Food bk;// 建立食物对象Image im;

Graphics g;

ImageIcon ima=new ImageIcon("C:\\Users\\Alienware\\Desktop\\123.jpg");

public GamePanel() {

JFrame f = new JFrame("贪吃蛇");

f.setLocation(600, 100);

f.setSize(1000, 800);

f.add(this);

f.setDefaultCloseOperation(3);

x = 50;

y = 50;

dx = 10;

dy = 10;

addKeyListener(this);// 注册键盘事件监听器// this.setVisible(true);// System.out.println(this.getGraphics());f.setVisible(true);

// 实例化贪吃蛇的对象,并传递一个GamePanel对象的引用sk = new Snake(this);

// 实例化食物对象并传递一个GamePanel对象和Snake对象的引用bk = new Food(this, sk);

this.requestFocus();

}

public void gameUpdate() {

sk.update();// 更新贪吃蛇坐标位置bk.update(this);// 更新食物坐标位置

switch (direction) {

case SOUTH:

y = y + dy;

break;

case NORTH:

y = y - dy;

break;

case EAST:

x = x + dx;

break;

case WEST:

x = x - dx;

break;

}

}

// Image im=new BufferedImage(100,100,BufferedImage.TYPE_4BYTE_ABGR);public void gameRender(Image im) {

// System.out.println(im);Graphics dbg = im.getGraphics();

dbg.drawImage(ima.getImage(),0,0,this.getWidth(),this.getHeight(),null);

sk.draw(dbg);// 在后备缓冲区绘制贪吃蛇图形bk.draw(dbg);// 在后备缓冲区绘制食物图形}

public void gamePaint(Image im) {

g = this.getGraphics();

// System.out.println(im);// System.out.println(g);g.drawImage(im, 0, 0, null);// 将后备缓冲区的内容在屏幕上显示出来//g.dispose();}

boolean isPaused = false;

public void run() {

while (true) {

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch blocke.printStackTrace();

}

im = new BufferedImage(this.getWidth(), this.getHeight(),

BufferedImage.TYPE_4BYTE_ABGR);

if (isPaused == false) {

gameUpdate();

}

gameRender(im);

gamePaint(im);

//g.drawImage(im, 0, 0, null);// System.out.println("x="+x+" y="+y);}

}

public void keyPressed(KeyEvent e) {

int keycode = e.getKeyCode();// 获取按键信息System.out.println("keycode=" + keycode);

if (keycode == KeyEvent.VK_SPACE)// 若按下的是“空格”键。则切换isPaused = !isPaused;

switch (keycode) {// 根据不同的按键为direction赋值case KeyEvent.VK_DOWN:// 如果按键盘“下”方向键direction = SOUTH;

System.out.println(direction);

break;

case KeyEvent.VK_UP:// 如果按键盘“上”方向键direction = NORTH;

System.out.println(direction);

break;

case KeyEvent.VK_RIGHT:// 如果按键盘“右”方向键direction = EAST;

System.out.println(direction);

break;

case KeyEvent.VK_LEFT:// 如果按键盘“左”方向键direction = WEST;

System.out.println(direction);

break;

}

}

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

public int getDirection() {

return direction;

}

public static void main(String[] args) {

GamePanel g = new GamePanel();

Thread thread1 = new Thread(g);

thread1.start();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java贪吃游戏中添加背景音乐,你可以使用Javajavax.sound.sampled库。下面是一个简单的示例代码,演示如何添加背景音乐: ```java import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import java.io.File; import java.io.IOException; public class SnakeGame { private Clip backgroundMusic; public void startGame() { // 初始化游戏 initialize(); // 播放背景音乐 playBackgroundMusic(); // 游戏逻辑 // ... // 停止背景音乐 stopBackgroundMusic(); } private void initialize() { // 初始化游戏逻辑 // ... } private void playBackgroundMusic() { try { // 加载音频文件 File audioFile = new File("background_music.wav"); AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile); // 创建音频剪辑 backgroundMusic = AudioSystem.getClip(); // 打开音频剪辑并开始播放 backgroundMusic.open(audioStream); backgroundMusic.loop(Clip.LOOP_CONTINUOUSLY); // 循环播放 } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { e.printStackTrace(); } } private void stopBackgroundMusic() { backgroundMusic.stop(); // 停止播放 backgroundMusic.close(); // 关闭音频剪辑 } } ``` 确保在与SnakeGame.java文件相同的目录下有一个名为"background_music.wav"的音频文件。你可以将你自己的音频文件替换为这个示例代码中的文件名。 在startGame()方法中,我们首先调用initialize()方法来初始化游戏逻辑,然后调用playBackgroundMusic()方法开始播放背景音乐。当游戏结束时,我们调用stopBackgroundMusic()方法来停止背景音乐的播放。 注意:这只是一个简单的示例,实际上添加背景音乐可能涉及更多的细节和错误处理。此外,要确保音频文件的格式与javax.sound.sampled库兼容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值