在数字世界的战场上,每一次决策都可能改变战局,每一次行动都充满了未知。今天,我将带你走进一个充满策略和激情的战斗世界——“英雄对战”游戏。这不仅是一个简单的控制台游戏,更是一场智力与勇气的较量。无论你是编程新手还是资深开发者,这款游戏都能带给你无尽的乐趣和挑战。
游戏规则:在“英雄对战”中,玩家和敌人轮流选择行动,目标是在对方生命值归零前将其击败。游戏开始时,玩家和敌人都有100生命值。每回合,玩家可以选择“攻击”,“追击”,“闪避反击”这三种行动之一。每回合结束后,根据双方的选择判断胜负并更新生命值。如果双方选择相同,则该回合为平局,生命值不变。当一方生命值降至零或以下时,游戏结束,该方被击败。
该文章的目录:
- 游戏目标
- 游戏流程设计
- 关键技术点
- 完整代码
- 测试和运行
原创-谷宇博客,拥有更多小游戏案例: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("游戏结束!");
}
}
五. 测试和运行
在运行“英雄对战”游戏时,我们重点关注了三种可能的游戏结果:玩家胜利和程序胜利。通过模拟玩家和程序的不同行动组合实现:当玩家的生命值降至零或以下时,程序会判定玩家失败;反之,当人机的生命值归零时,玩家获胜!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。