基于java实现坦大战小游戏实例(含课程设计)

编程入门 行业动态 更新时间:2024-10-19 10:19:53

基于java实现坦大战<a href=https://www.elefans.com/category/jswz/34/1769974.html style=小游戏实例(含课程设计)"/>

基于java实现坦大战小游戏实例(含课程设计)

详细设计

我方坦克功能设计模块

首先自己设计我方坦克的图形,如下图5.1:

图5.1坦克图形

我方坦克有四个方向把该照片进行旋转得到其余三个方向的坦克gif,它们分别用W,S,A,D,来控制,W为上,S为下,A为向左,D向右,空格键为设计子弹,通过按空格键射出子弹,如果子弹击中敌方坦克这消灭敌方坦克。具体实现为,为窗口添加 KeyListener(键盘监听器),监听键盘的按下和抬起。在 TankClient 类中添加内部的适配器类,由于不需要其它类访问,将其设计为 private 的, 以保证面向对象设计的封装性。

具体代码编写如下:

public void keyPressed(KeyEvent e){

        int key = e.getKeyCode();

        switch (key){

            case KeyEvent.VK_A:

                left = true;

                break;

            case KeyEvent.VK_S:

                down = true;

                break;

            case KeyEvent.VK_D:

                right = true;

                break;

            case KeyEvent.VK_W:

                up = true;

                break;

            case KeyEvent.VK_SPACE:

                this.attack();

                break;

            default:

                break;

        }

    }

public void leftward(){

        direction = Direction.LEFT;

        setImg(leftImage);

        if(!hitWall(x-speed, y) && !moveToBorder(x-speed, y) && alive){

            this.x -= speed;

        }

}

    public void rightward(){

        direction = Direction.RIGHT;

        setImg(rightImage);

        if(!hitWall(x+speed, y) && !moveToBorder(x+speed, y) && alive){

            this.x += speed;

        }

}

    public void upward(){

        direction = Direction.UP;

        setImg(upImage);

        if(!hitWall(x, y-speed) && !moveToBorder(x, y- speed) && alive){

            this.y -= speed;

        }

}

    public void downward(){

        direction = Direction.DOWN;

        setImg(downImage);

        if(!hitWall(x, y+speed) && !moveToBorder(x, y+speed) && alive){

            this.y += speed;

        }

5.2敌方坦克功能设计模块

首先设计敌方坦克的图形,如下图5.2:

图5.2我方坦克

敌方坦克也是四个方向进行移动,按照生成随机数,对其方向做出改变,在paint中画出敌方坦克,坦克主要由 Tank 类来实现。坦克的属性:速度(有 X 轴和 Y 轴的速度之分),坦克大小,坦克所在新的位置(X 坐标和 Y 坐标),坦克是否还活着,行动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行在设计过程中,坦克出现的位置由坐标而定。用户之后的位置由键盘监听

方向,按指定方向以恒定的速度前进——此速度为全局静态变量,当没有接受

到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向

和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦

克撞到阻碍物不回头的问题,这个功能由 Tank 类里的getHeadPoint()方法

实现。

5.3 游戏主窗口 

游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道, 并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据 的输入、输出。 在程序中须创建一个类,继承自 Frame 来创建一个窗口。

private class KeyMonitor extends KeyAdapter {

        @Override

        public void keyPressed(KeyEvent e) {

            //super.keyPressed(e);

            int key = e.getKeyCode();

            switch (key){

                case KeyEvent.VK_1:

                    y = 150;

                    a = 1;

                    break;

                case KeyEvent.VK_2:

                    y = 250;

                    a = 2;

                    break;

                case KeyEvent.VK_ENTER:

                    state = a;

                    //添加玩家

                    if(state == 1 && !start){

                        tankList.add(playerOne);

                    }else{

                        tankList.add(playerOne);

                        tankList.add(playerTwo);

                    }

                    start = true;

                    break;

                case KeyEvent.VK_P:

                    if(state != 3){

                        a = state;

                        state = 3;

                    }

                    else{

                        state = a;

                        if(a == 0) {

                            a = 1;

                        }

                    }

                    break;

                default:

                    playerOne.keyPressed(e);

                    playerTwo.keyPressed(e);

                    break;

            }

        }

        @Override

        public void keyReleased(KeyEvent e){

            playerOne.keyReleased(e);

            playerTwo.keyReleased(e);

        }

    }

大家多多点赞收藏,附上源代码以及课程设计报告

链接: 
提取码:dzyy

更多推荐

基于java实现坦大战小游戏实例(含课程设计)

本文发布于:2024-03-08 15:30:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721289.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小游戏   课程设计   实例   大战   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!