学堂 学堂 学堂公众号手机端

超级玛丽之背景绘制

lewis 1年前 (2024-04-29) 阅读数 17 #技术
超级玛丽之背景绘制

想必大家都玩过超级玛丽,我们作为java程序员不开发一个超级玛丽很难说得过去

其实java游戏用到的技术是JFrame,我们上大学的时候不学这一块,真正工作中基本也用不到,因为现在都是B/S架构,也就是说基于浏览器和服务器之间交互的的,废话少说,我们进入游戏开发吧

窗口

首先我们需要弄一个窗口出来,显然需要继承JFrame类,


public MarioFrame() extends JFrame implements KeyListener{
        
        this.setTitle("超级玛丽");
        this.setSize(900,700);
        this.setVisible(true);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.addKeyListener(this);
        
        
    }
 public static void main(String[] args) {
        MarioFrame marioFrame = new MarioFrame();
    }

这样一个窗口就创建好了,有了窗口我们才能绘制背景等一系列的操作,这里是对窗口的一些参数的设置,比如窗口名称,可见性,窗口大小,相对位置等等一些属性

图片加载

这些属性设置完后我们初始化一些图片和游戏元素,然后就是绘制背景了:

首先读取我们需要的图片,像这样:

public static BufferedImage bg = ImageIO.read(new File(path + "bg.png"));

我们把这样的资源设置为静态变量,大家都知道被static修饰的变量可以被所有的对象共享,在类的第一次加载的时候,静态变量就会初始化了,加载完所有图片后调用repaint();方法进行绘制,这里需要重写paint()方法:

    private Image offScreenImage = null;
    @Override
    public void paint(Graphics g) {
        if (offScreenImage == null) {
            offScreenImage = createImage(800,600);
        }

        Graphics graphics = offScreenImage.getGraphics();
        graphics.fillRect(0,0,800,600);

        graphics.drawImage(nowBg.getBgImage(),0,0,this);

        
       
        g.drawImage(offScreenImage,0,0,this);
    }

这个方法中我们把需要加载的图像绘制到窗口中,包括背景、障碍物、敌人等等图片元素和分数。

这样整个游戏的场景布置就差不多这样了

总结

这篇文章主要是对基于C/S架构的超级玛丽游戏的背景开发,基本都是图片元素的加载和堆积,让我们看到了花里胡哨的游戏界面,之前我的文章我有对超级玛丽游戏的主人翁的加载,感兴趣的可以看看。

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门