超级玛丽之背景绘制

举报
周杰伦本人 发表于 2022/09/29 23:30:23 2022/09/29
【摘要】 超级玛丽之背景绘制 窗口 图片加载 总结 超级玛丽之背景绘制想必大家都玩过超级玛丽,超级玛丽伴随了我们整个童年,我们作为java程序员不开发一个超级玛丽很难说得过去其实java游戏用到的技术是JFrame,我们上大学的时候不学这一块,真正工作中基本也用不到,因为现在都是B/S架构,也就是说基于浏览器和服务器之间交互的的,废话少说,我们进入游戏开发吧 窗口首先我们需要弄一个窗口出来,显然需要...

超级玛丽之背景绘制

想必大家都玩过超级玛丽,超级玛丽伴随了我们整个童年,我们作为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();
    }

这样一个窗口就创建好了,有了窗口我们才能绘制背景等一系列的操作,这里是对窗口的一些参数的设置,比如窗口名称,可见性,窗口大小,相对位置等等一些属性,最后我们使用main()函数来进行加载。

图片加载

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

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

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架构的超级玛丽游戏的背景开发,基本都是图片元素的加载和堆积,通过开发能让我们更加理解游戏的结构,让我们看到了花里胡哨的游戏界面原来是这么简单的开发思路,之前我的文章我有对超级玛丽游戏的主人翁的加载,感兴趣的可以看看。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。