java贪吃蛇怎么实现暂停功能?java贪吃蛇暂停功能实现

贪吃蛇游戏我们都是玩过的,相信大家在玩的过程中肯定想过贪吃蛇游动或者赞停都是怎么实现的,其实这都是java的功劳哦,那下面我们就给大家讲解一下java贪吃蛇暂停功能实现。

先把需要用到的图片资源放在这里,分别为上、下、左、右方向的蛇头,蛇身,食物,标题,可以通过右击另存为的方式下载:

java贪吃蛇怎么实现暂停功能?java贪吃蛇暂停功能实现.png

我们想要得到的游戏效果如下:

刚进入游戏的初始界面为图1,按空格开始游戏,通过上、下、左、右键改变蛇的移动方向,蛇可以穿过边界从另一端出来,吃到食物后多一个蛇身并且食物刷新位置,按空格键会暂停游戏,界面如图2,再按空格重新开始游戏,如果蛇头碰到自己的身子,那么游戏结束,按p键重新开始游戏,界面如图3,右上角的积分系统可有可无,这里出于篇幅考虑,省去积分系统:

1.png

2.png

3.png

个人认为,要想用Java实现这个游戏,首先需要具备一些最基础的GUI的知识,比如JFrame、JPanel的使用,这里就不再赘述;除此之外,还需要实现画图、键盘监听、计时器的功能,这里通过几个小demo展示一下这几个功能是怎么实现的。

画图的实现:主要用到JPanel类的paint(Graphics g)方法和ImageIcon类的paintIcon(Component c, Graphics g, int x, int y),代码如下:

import javax.swing.*;
import java.awt.*;
class PaintDemo extendsJPanel
{ //得到需要画的图片的资源
    ImageIcon body = new ImageIcon("C:\\Users\\apple\\Desktop\\pic\\body.png"); //构造方法
    publicPaintDemo()
    {
        this.setSize(200, 200);
        this.setBackground(Color.white);
    } //在new PaintDemo()时会自动调用一次paint方法
    public voidpaint(Graphics g)
    { //ImageIcon类的一个方法,以此就能把对应的图片画在指定的位置上
        body.paintIcon(this, g, 100, 100);
    }
}
public classSimpleTest
{
    public static void main(String[] args) throwsException
    {
        JFrame f = new JFrame("Demo"); //前两个参数决定了弹出框的位置,后两个参数决定了框的宽高
        f.setBounds(100, 150, 200, 200); //关闭窗口
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //只有把JPanel放在JFrame里才能看得到JPanel
        f.add(newPaintDemo());
        f.setVisible(true);
    }
}

实现效果如图:

4.png

这样一来,我们就可以通过画图,一步步得到游戏的界面了。

键盘监听的实现:游戏里我们是要通过键盘监听来实现暂停、蛇的移动和重新开始的功能。在这个demo里,我们实现的是,键盘监听一个JPanel,当我们按下↓键时,控制台输出“你往下了”,按下↑键时,控制台输出“你往上了”,代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class KeyDemo extends JPanel implementsKeyListener
{
    publicKeyDemo()
    {
        this.setSize(200, 200);
        this.setBackground(Color.white); //让键盘事件监听这个JPanel
        this.addKeyListener(this); //使焦点保持在这个JPanel上,如果焦点不在这上面,键盘事件就不起作用了。
        this.setFocusable(true);
    }
    public voidkeyPressed(KeyEvent e)
    { //得到我们按下的键的对应的数字常量
        int keyCode = e.getKeyCode(); //如果是↑键
        if (keyCode == KeyEvent.VK_UP)
        {
            System.out.println("你往上了");
        }
        else if (keyCode == KeyEvent.VK_DOWN)
        {
            System.out.println("你往下了");
        }
    }
    public voidkeyTyped(KeyEvent e)
    {}
    public voidkeyReleased(KeyEvent e)
    {}
}
public classSimpleTest
{
    public static void main(String[] args) throwsException
    {
        JFrame f = new JFrame("Demo");
        f.setBounds(100, 150, 200, 200);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.add(newKeyDemo());
        f.setVisible(true);
    }
}

实现效果很简单,就是在控制台有对应的输出。

这样一来,我们就可以通过键盘来控制游戏的暂停、重新开始以及蛇的移动了。怎么样?大家是不是觉得很神奇,其实只要你会java,那么这些小游戏的功能都是可以实现哒!最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。

推荐阅读:

java运行程序黑框闪退怎么办?java一打开就闪退如何解决?

java函数式编程有必要吗?java函数式编程有什么用?

java系统环境变量配置步骤是什么?java系统环境变量配置步骤