现在的AI太强大了,就像豆包一样,非常好用的AI,在文字的描述下,基本能搞懂基础代码逻辑,以下是我用AI做的“恶魔轮盘”文字版代码,可以复制到Python编译器内游玩。
代码∶
import random
import time
class Item:
def __init__(self, name, effect):
self.name = name
self.effect = effect
class Character:
def __init__(self, name, health):
self.name = name
self.health = health
self.items = []
def add_item(self, item):
self.items.append(item)
def use_item(self, item_name):
for item in self.items:
if item.name == item_name:
self.items.remove(item)
return item
return None
# 定义游戏中的道具
magnifier = Item("放大镜", "查看当前枪内弹药")
cigarette = Item("香烟", "消除压力,恢复 1 点生命值")
handcuffs = Item("手铐", "让对手下一回合无法行动")
beer = Item("啤酒", "弹出当前枪膛内的子弹")
handsaw = Item("手锯", "使枪造成 2 点伤害")
# 游戏类
class DevilRoulette:
def __init__(self):
self.player = Character("玩家", 5)
self.enemy = Character("恶魔", 5)
self.round = 1
self.is_game_over = False
def start_game(self):
print("欢迎来到恶魔轮盘游戏!")
print("你身处一个神秘之地,恶魔在你面前,准备一决高下。")
while not self.is_game_over:
self.play_round()
time.sleep(1)
def play_round(self):
print(f"第{self.round}回合开始,{self.player.name} 的生命值为 {self.player.health},{self.enemy.name} 的生命值为 {self.enemy.health}")
time.sleep(1)
num_real_bullets = random.randint(1, 3)
num_blank_bullets = 5 - num_real_bullets
print(f"枪内有{num_real_bullets}颗实弹,{num_blank_bullets}颗空包弹。")
time.sleep(1)
# 玩家选择向谁开枪
shooter_choice = input("你想向自己(输入 1)还是恶魔(输入 2)开枪:")
if shooter_choice == '1':
shooter = self.player
print(f"{self.player.name} 深吸一口气,颤抖着将枪口对准了自己。")
elif shooter_choice == '2':
shooter = self.enemy
print(f"{self.player.name} 鼓起勇气,将枪口对准了恶魔。")
else:
print("无效的选择,请重新选择。")
return
bullet_type = "实弹" if random.randint(0, num_real_bullets + num_blank_bullets - 1) < num_real_bullets else "空包弹"
if shooter == self.player:
if bullet_type == "实弹":
self.player.health -= 1
print(f"{self.player.name} 被击中,生命值减 1。")
if self.player.health <= 0:
print(f"{self.player.name} 被击败,游戏结束。")
self.is_game_over = True
else:
print(f"{self.player.name} 射出空包弹,无事发生。")
else:
if bullet_type == "实弹":
self.enemy.health -= 1
print(f"{self.enemy.name} 被击中,生命值减 1。")
if self.enemy.health <= 0:
print(f"{self.enemy.name} 被击败,游戏结束。")
self.is_game_over = True
else:
print(f"{self.enemy.name} 未被击中,无事发生。")
time.sleep(1)
# 发放道具
if self.round % 2 == 0:
num_items = random.randint(1, 3)
for _ in range(num_items):
item = random.choice([magnifier, cigarette, handcuffs, beer, handsaw])
self.player.add_item(item)
print(f"{self.player.name} 获得道具:{item.name},{item.effect}。")
num_items = random.randint(1, 3)
for _ in range(num_items):
item = random.choice([magnifier, cigarette, handcuffs, beer, handsaw])
self.enemy.add_item(item)
print(f"{self.enemy.name} 获得道具:{item.name},{item.effect}。")
time.sleep(1)
# 玩家选择是否使用道具
use_item_choice = input("是否使用道具(输入 y 使用,输入 n 不使用):")
if use_item_choice.lower() == 'y':
if self.player.items:
for i, item in enumerate(self.player.items, 1):
print(f"{i}. {item.name}: {item.effect}")
item_index = int(input("请输入要使用的道具序号:")) - 1
if 0 <= item_index < len(self.player.items):
item = self.player.use_item(self.player.items[item_index].name)
print(f"你使用了 {item.name},{item.effect}")
else:
print("无效的道具序号,请重新选择。")
else:
print("你没有可使用的道具。")
time.sleep(1)
# 恶魔的 AI 决策
if self.enemy.health < self.player.health:
# 如果恶魔生命值低,有一定概率选择冒险攻击玩家
if random.random() < 0.6:
shooter = self.enemy
bullet_type = "实弹" if random.randint(0, num_real_bullets + num_blank_bullets - 1) < num_real_bullets else "空包弹"
if shooter == self.enemy:
if bullet_type == "实弹":
self.player.health -= 1
print(f"{self.enemy.name} 向 {self.player.name} 开枪,命中!{self.player.name} 生命值减 1。")
if self.player.health <= 0:
print(f"{self.player.name} 被击败,游戏结束。")
self.is_game_over = True
else:
print(f"{self.enemy.name} 向 {self.player.name} 开枪,未命中。")
else:
# 否则保守选择,不攻击
print(f"{self.enemy.name} 选择暂不攻击。")
else:
# 如果恶魔生命值高,随机选择攻击或不攻击
if random.random() < 0.4:
shooter = self.enemy
bullet_type = "实弹" if random.randint(0, num_real_bullets + num_blank_bullets - 1) < num_real_bullets else "空包弹"
if shooter == self.enemy:
if bullet_type == "实弹":
self.player.health -= 1
print(f"{self.enemy.name} 向 {self.player.name} 开枪,命中!{self.player.name} 生命值减 1。")
if self.player.health <= 0:
print(f"{self.player.name} 被击败,游戏结束。")
self.is_game_over = True
else:
print(f"{self.enemy.name} 向 {self.player.name} 开枪,未命中。")
else:
print(f"{self.enemy.name} 选择暂不攻击。")
# 恶魔使用道具逻辑
if self.enemy.items:
if random.random() < 0.3:
item_to_use = random.choice(self.enemy.items)
item_used = self.enemy.use_item(item_to_use.name)
print(f"{self.enemy.name} 使用了 {item_used.name},{item_used.effect}。")
time.sleep(1)
# 检查道具是否用完并刷新
if not self.player.items and not self.enemy.items:
print("玩家和恶魔的道具都已用完,只见道具台降了下去。")
time.sleep(1)
num_items = random.randint(1, 5)
for _ in range(num_items):
item = random.choice([magnifier, cigarette, handcuffs, beer, handsaw])
self.player.add_item(item)
num_items = random.randint(1, 5)
for _ in range(num_items):
item = random.choice([magnifier, cigarette, handcuffs, beer, handsaw])
self.enemy.add_item(item)
print("道具台升了上来,带来了新道具。")
time.sleep(1)
self.round += 1
if __name__ == "__main__":
game = DevilRoulette()
game.start_game()
感谢浏览