import java.util.Random;
import java.util.Scanner;
public class BuckshotRoulette {
private static final int MAX_HEALTH = 3;
private static int playerHealth = MAX_HEALTH;
private static int dealerHealth = MAX_HEALTH;
private static boolean isPlayerTurn = true;
private static boolean guillotineActive = false;
private static int guillotineCharge = 0;
private static int playerBullets;
private static boolean playerHasCigarette = false;
private static boolean playerHasBeer = false;
private static boolean playerHasHandcuffs = false;
private static boolean playerHasSaw = false;
private static boolean playerHasMagnifyingGlass = false;
private static int playerSawCharge = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
playerBullets = random.nextInt(2) + 1; // 玩家子弹数1-2
System.out.println("欢迎来到恶魔轮盘赌游戏!");
System.out.println("你的子弹数: " + playerBullets);
while (playerHealth > 0 && dealerHealth > 0) {
System.out.println("\n回合开始!");
if (isPlayerTurn) {
playerTurn(scanner, random);
} else {
dealerTurn(random);
}
isPlayerTurn = !isPlayerTurn;
useItems();
}
if (playerHealth <= 0) {
deathSequence();
} else {
victorySequence();
}
scanner.close();
}
private static void playerTurn(Scanner scanner, Random random) {
System.out.print("选择攻击对象 (1-玩家, 2-庄家): ");
int target = scanner.nextInt();
boolean isBullet = random.nextBoolean();
System.out.println(isBullet ? "实弹" : "空弹");
if (playerHasMagnifyingGlass) {
playerHasMagnifyingGlass = false;
System.out.println("你使用了放大镜,查看到下一发子弹是 " + (isBullet ? "实弹" : "空弹"));
}
if (target == 1) {
if (isBullet) {
playerHealth--;
System.out.println("你朝自己开了一枪,造成了一点伤害。");
if (playerHealth == 0) {
System.out.println("你死了。");
}
playerSawCharge = playerHasSaw ? 2 : 1; // 手锯效果
} else {
System.out.println("没有造成伤害。");
}
} else if (target == 2) {
if (isBullet) {
dealerHealth -= playerSawCharge;
playerSawCharge = 0;
System.out.println("你朝庄家开了一枪,造成了 " + playerSawCharge + " 点伤害。");
if (dealerHealth <= 0) {
System.out.println("庄家死了。");
}
} else {
System.out.println("没有造成伤害。");
}
}
if (!isBullet && target == 1) {
System.out.println("空弹!你再次行动。");
isPlayerTurn = true;
}
if (guillotineActive && guillotineCharge == 2) {
System.out.println("铡刀落下,你的生命上限变为1。");
playerHealth = Math.min(playerHealth, 1);
dealerHealth = Math.min(dealerHealth, 1);
guillotineActive = false;
}
}
private static void dealerTurn(Random random) {
if (playerHasHandcuffs) {
playerHasHandcuffs = false;
System.out.println("庄家被手铐锁住,跳过回合。");
return;
}
boolean isBullet = random.nextBoolean();
System.out.println(isBullet ? "实弹" : "空弹");
if (isBullet) {
playerHealth--;
System.out.println("庄家朝你开了一枪,造成了一点伤害。");
if (playerHealth <= 0) {
System.out.println("你死了。");
}
} else {
System.out.println("没有造成伤害。");
}
}
private static void useItems() {
// 每回合开始时抽取两个道具
Random random = new Random();
int item1 = random.nextInt(5);
int item2 = random.nextInt(5);
switch (item1) {
case 0:
playerHasCigarette = true;
break;
case 1:
playerHasBeer = true;
break;
case 2:
playerHasHandcuffs = true;
break;
case 3:
playerHasSaw = true;
break;
case 4:
playerHasMagnifyingGlass = true;
break;
}
switch (item2) {
case 0:
playerHasCigarette = true;
break;
case 1:
playerHasBeer = true;
break;
case 2:
playerHasHandcuffs = true;
break;
case 3:
playerHasSaw = true;
break;
case 4:
playerHasMagnifyingGlass = true;
break;
}
System.out.println("你抽取了两个道具:" +
(playerHasCigarette ? "香烟 " : "") +
(playerHasBeer ? "啤酒 " : "") +
(playerHasHandcuffs ? "手铐 " : "") +
(playerHasSaw ? "手锯 " : "") +
(playerHasMagnifyingGlass ? "放大镜" : ""));
}
private static void victorySequence() {
System.out.println("你赢了!你获得了一个装满钱的箱子!");
}
private static void deathSequence() {
System.out.println("你死了... 你被一个神秘人用除颤器救活。");
System.out.println("你可以选择退出游戏,或者继续游戏。");
}
}