基于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);

        }

    }

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

链接:https://pan.baidu.com/s/1dioSVintDKiHlSwbeV2IPQ 
提取码:dzyy

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java大战小游戏是一款基于Java语言开发的经典游戏。在游戏中,玩家扮演一辆克,通过控制克的移动和射击来击败敌方克,完成各种任务。 要实现Java大战小游戏,可以按照以下步骤进行: 1. 创建游戏窗口:使用Java的图形库(如AWT或Swing)创建一个窗口,作为游戏的显示界面。 2. 绘制游戏场景:在游戏窗口中绘制游戏场景,包括地图、克、子弹等元素。可以使用Java的图形绘制API(如Graphics类)来实现。 3. 实现克的移动:通过监听键盘事件,控制克的移动。根据按下的方向键来改变克的位置。 4. 实现克的射击:通过监听键盘事件,控制克的射击。根据按下的射击键来创建子弹对象,并将其添加到游戏场景中。 5. 实现敌方克的AI:为敌方克添加AI逻辑,使其能够自动移动和射击。可以使用简单的算法来实现敌方克的行为。 6. 碰撞检测:在游戏中实现碰撞检测,判断克和子弹之间是否发生碰撞。如果发生碰撞,根据游戏规则进行相应的处理。 7. 实现游戏逻辑:根据游戏规则,实现游戏的逻辑,包括判断胜负、计分等。 8. 添加音效和特效:为游戏添加音效和特效,增加游戏的趣味性和可玩性。 以上是实现Java大战小游戏的一般步骤,具体的实现细节可以根据个人的需求和技术水平进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值