超级玛丽游戏的开发过程

Posted 周杰伦本人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级玛丽游戏的开发过程相关的知识,希望对你有一定的参考价值。

超级玛丽游戏的开发过程

对于如何制作游戏窗口和加载图片生成游戏中各种组件道具等等,我们就不多说了,就是继承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;

总结

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

以上是关于超级玛丽游戏的开发过程的主要内容,如果未能解决你的问题,请参考以下文章

《超级玛丽》1

P1000 超级玛丽游戏

超级玛丽需求分析

1.1超级玛丽游戏

P1000 超级玛丽游戏

P1000 超级玛丽游戏