在数字世界的战场上,每一次决策都可能改变战局,每一次行动都充满了未知。今天,我将带你走进一个充满策略和激情的战斗世界——“英雄对战”游戏。这不仅是一个简单的控制台游戏,更是一场智力与勇气的较量。无论你是编程新手还是资深开发者,这款游戏都能带给你无尽的乐趣和挑战。
游戏规则:在“英雄对战”中,玩家和敌人轮流选择行动,目标是在对方生命值归零前将其击败。游戏开始时,玩家和敌人都有100生命值。每回合,玩家可以选择“攻击”,“追击”,“闪避反击”这三种行动之一。每回合结束后,根据双方的选择判断胜负并更新生命值。如果双方选择相同,则该回合为平局,生命值不变。当一方生命值降至零或以下时,游戏结束,该方被击败。

该文章的目录:

  1. 游戏目标
  2. 游戏流程设计
  3. 关键技术点
  4. 完整代码
  5. 测试和运行

原创-谷宇博客,拥有更多小游戏案例:https://biguyu.top/home


一. 游戏目标

设计一个简单的控制台游戏“英雄对战”,玩家和人机轮流选择行动(包括攻击、追击和闪避反击),目标是在对方生命值归零前将其击败。

二. 游戏流程设计

(1) 初始化游戏:设置初始生命值,打印游戏规则和欢迎信息。
(2) 玩家输入:接收玩家的行动选择,并验证输入的有效性。
(3) 程序随机选择:随机生成程序的行动选择。
(4) 判断胜负:根据玩家和程序的选择,更新生命值并判断胜负。
(5) 游戏循环:重复上述步骤,直到一方生命值归零或游戏结束。
(6) 游戏结束:输出最终结果,结束游戏。

三. 关键技术点

(1) 随机数生成:如何使用Random类生成随机行动。
(2) 用户输入处理:如何使用Scanner类接收和验证用户输入。
(3) 胜负判断逻辑:如何根据玩家和程序的选择判断胜负。
(4) 生命值管理:如何管理玩家和程序的生命值,并在每回合更新。
(5) 控制流语句for循环,switch选择,if、if else和 else选择的使用。

四. 完整代码

package com.simple;

import java.util.Random;
import java.util.Scanner;

public class HeroBattle {

    public static void main(String[] args) {
        //游戏开始
        System.out.println("欢迎来到英雄对战游戏!");
        System.out.println("游戏规则:攻击->追击, 追击->闪避反击, 闪避反击->攻击");
        System.out.println("每回合你可以选择:1.攻击、2.追击、3.闪避反击");
        System.out.println("玩家和敌人初始都有 100 生命值");
        System.out.println("----------------------------------");

        //声明Scanner类,用于接收用户的输入
        Scanner scanner = new Scanner(System.in);
        //声明Random类,用户获得随机数
        Random random = new Random();
        //生命值
        int playLife = 100;
        int enemyLife = 100;

        int i = 1;
        while (true) {
            System.out.println("\n第 " + i +" 回合,开始");
            System.out.print("请输入你的行动(1.攻击/2.追击/3.闪避反击):");
            int playerChoice = scanner.nextInt();

            // 验证玩家输入是否正确有效
            if(playerChoice != 1 && playerChoice != 2 && playerChoice != 3){
                System.out.println("无效输入,请重新输入!");
                continue;
            }

            // 敌人随机选择行动
            int enemyChoice = random.nextInt(3) + 1;
            switch (enemyChoice){
                case 1:
                    System.out.println("敌人的行动是:攻击!");
                    break;
                case 2:
                    System.out.println("敌人的行动是:追击!");
                    break;
                case 3:
                    System.out.println("敌人的行动是:闪避反击!");
                    break;
            }


            // 判断胜负
            if (playerChoice == enemyChoice) {
                System.out.println("平局!");
            } else if ((playerChoice == 1 && enemyChoice == 2) ||
                    (playerChoice == 2 && enemyChoice == 3) ||
                    (playerChoice == 3 && enemyChoice == 1)) {
                enemyLife -= 30;
                System.out.println("玩家胜!");
                System.out.println("玩家挥剑攻击,敌人被打掉 30 生命值! 敌人剩余生命值:" + enemyLife);
            } else {
                playLife -= 30;
                System.out.println("敌人胜!");
                System.out.println("敌人挥刀攻击,玩家被打掉 30 生命值! 玩家剩余生命值:" + playLife);
            }

            // 判断玩家或敌人是否生命值归零
            if (playLife < 0) {
                System.out.println("玩家被击败,生命值归零。敌人胜利!");
                break;
            } else if(enemyLife < 0) {
                System.out.println("敌人被击败,生命值归零。玩家胜利!");
                break;
            }
            //回合数+1
            i++;
        }

        System.out.println("游戏结束!");
    }

}

五. 测试和运行

在运行“英雄对战”游戏时,我们重点关注了三种可能的游戏结果:玩家胜利和程序胜利。通过模拟玩家和程序的不同行动组合实现:当玩家的生命值降至零或以下时,程序会判定玩家失败;反之,当人机的生命值归零时,玩家获胜!


谷宇
1 声望0 粉丝

开发过程中,深知技术的力量,学习之路永无止境。我非常希望与大家共同分享我的学习经验和开发心得,无论是技术难题的解决方法,还是新工具的使用心得,我都愿意毫无保留地分享给大家。同时,我也深知每个人都有...