JavaSe之使用方法完成打地鼠游戏
package Day05;
import java.time.LocalDateTime;
import java.util.Random;
import java.util.Scanner;
public class WhackAMole{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int scode = 0;
int combo=-1;
System.out.println("请输入击打地鼠的动作(M、T、S),输入 Q 结束游戏:");
String mouse = mouse(); // 生成随机地鼠
while (true) {
String beatMouse = scanner.nextLine();
if (isbeat(mouse, beatMouse)) {
combo++;
if(combo>0){
System.out.println("连击"+combo+",Amazing");
}
scode = beat(mouse, beatMouse, scode) + combo;
}else {
combo=-1;
System.out.println("可惜了,连击断了");
scode = beat(mouse, beatMouse, scode);
}
if (beatMouse.equalsIgnoreCase("Q")) {
scanner.close();
break; // 如果玩家输入 Q,退出游戏循环
}
mouse = mouse(); // 生成新的地鼠
}
scanner.close();
System.out.println("游戏结束,得分:" + scode);
}
// 生成地鼠类型
public static String mouse() {
String[] mouseArray = {"M", "T", "S"};
Random random = new Random();
int index = random.nextInt(3);
switch (mouseArray[index]) {
case "M":
System.out.println("出现了老鼠");
break;
case "T":
System.out.println("出现了土拨鼠");
break;
case "S":
System.out.println("出现了小老鼠");
break;
}
return mouseArray[index];
}
// 击打地鼠并更新得分
public static int beat(String mouse, String beatMouse, int scode) {
if (beatMouse.equals("Q")) {
System.out.println("游戏结束,得分:" + scode);
System.exit(0);
}else if (mouse.equalsIgnoreCase(beatMouse)) {
switch (mouse.toUpperCase()) {
case "M":
scode += 1;
break;
case "T":
scode += 2;
break;
case "S":
scode += 3;
break;
}
}else {
System.out.println("你没有击中地鼠,继续加油!");
}
return scode;
}
public static boolean isbeat(String mouse, String beatMouse){
if (mouse.equalsIgnoreCase(beatMouse)) {
return true;
}else {
return false;
}
}
}
注意点
- mouse方法,beat方法之间的关系
- 连击的combo是从第二次打中地鼠开始算连击一次的,所以combo的初始值要弄清楚,这里把它设置成-1,打中一次后combo++,注意不是++combo,++的前后还是有差别的,打中一次后combo变成了0,下次在打中才能变为连击1(即:连续打中两只老鼠才能算连击1)
- 判断combom的方法是要直接处理combo还是只是判断是否击中。
- 还有就是连击终端应该要把combom变为0,重新开始计算。
- 为了提高可玩性,应该忽略输入的大小写