超级玛丽游戏的开发过程

举报
周杰伦本人 发表于 2022/09/29 14:46:10 2022/09/29
【摘要】 超级玛丽游戏的开发过程对于如何制作游戏窗口和加载图片生成游戏中各种组件道具等等,我们就不多说了,就是继承JFrame实现各种图片的加载 人物类这篇文章我们将介绍超级玛丽游戏中马里奥人物是怎么实现的首先我们创建人物马里奥类:public class Mario implements Runnable{ private int x; private int y; privat...

超级玛丽游戏的开发过程

对于如何制作游戏窗口和加载图片生成游戏中各种组件道具等等,我们就不多说了,就是继承JFrame实现各种图片的加载

人物类

这篇文章我们将介绍超级玛丽游戏中马里奥人物是怎么实现的

首先我们创建人物马里奥类:

public class Mario implements Runnable{
    private int x;
    private int y;
    private String status;
    private BufferedImage show = null;
    private BackGround backGround = new BackGround();
}

这是人物Mario类,同时需要把马里奥类添加到主类中,这样加载的时候才能加载出来,我们通过Graphics绘制出马里奥对象来,其实就是加载出马里奥人物图片就可以

graphics.drawImage(mario.getShow(),mario.getX(),mario.getY(),this);

这样人物也出来了那么人物是怎么实现移动的呢?

上下左右

这时候就需要把人物类变成一个线程了,需要实现Runnable接口,重写run()方法,run()方法使用while(ture)死循环等待

人物的移动也就是图片的移动,实现也比较简单,就是在x的值上添加移动的位置,y的值的变化就是上下移动的实现,同时我们需要支持键盘的操作,具体实现就是重写KeyListener的keyPressed()和keyReleased()

keyPressed()表示当按到键盘的时候调用的方法:

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == 38) {
            mario.jump();
        }
        if (e.getKeyCode() == 39) {
            mario.rightMove();
        }
        if (e.getKeyCode() == 37) {
            mario.leftMove();
        }
       
    }

keyCode的值是39表示右移,keyCode的值37表示左移,getKeyCode表示上移,也就是跳跃

keyPressed()表示当松开键盘的时候调用的方法:

    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode() == 37) {
            mario.leftStop();
        }
        if (e.getKeyCode() == 39) {
            mario.rightStop();
        }
    }

同样,37和39分别表示左移和右移

遇到障碍物移动到障碍物上

障碍物也是一个一个的图片,当马里奥的人物的y的高度和障碍物的高度到同一值的时候,并人物x位置和障碍物的x位置到一定相对位置,就认为马里奥遇到了障碍。

当没有遇到障碍物并且人物不再上升的时候,人物就会下落。

还有顶砖块的逻辑,当人物碰到障碍物并且是砖块的时候,就把这个砖块元素从图片集合中移除掉

if (ob.getType() == 0) {
    backGround.getObstacleList().remove(ob);
    score += 1;
}

总结

这篇文章主要介绍了超级玛丽中的马里奥的一些动作和碰到障碍物的逻辑处理,使用的技术点用到了键盘的监听类,重写键盘类的监听方法

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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