用Python从零实现一个极简卡牌对战游戏(AI辅写)
·
# 用Python从零实现一个极简卡牌对战游戏(附完整代码) 最近在学习Python面向对象编程,想着用一个小项目来练手,于是做了个超简单的卡牌对战游戏。没有用到任何第三方库,纯原生Python就能跑,新手也能轻松看懂。
## 一、游戏规则
1. 玩家和电脑各有一个卡组,初始血量都是30点
2. 双方轮流抽卡、出牌,卡牌互相攻击
3. 卡牌攻击会互相扣血,一方血量归零则游戏结束
4. 全程自动对战,按回车推进回合
## 二、完整代码
python
import random
# 1. 定义卡牌类:每张卡牌有名字、攻击力、血量
class Card:
def __init__(self, name, attack, health):
self.name = name
self.attack = attack
self.health = health
def __str__(self):
return f"{self.name} (攻击:{self.attack} 血量:{self.health})"
# 2. 定义玩家类:包含血量、卡组、手牌,支持抽卡和出牌
class Player:
def __init__(self, name):
self.name = name
self.health = 30 # 玩家总血量
self.deck = [] # 卡组
self.hand = [] # 手牌
# 从卡组抽卡
def draw_card(self):
if self.deck:
card = self.deck.pop()
self.hand.append(card)
print(f"\n{self.name} 抽到了:{card}")
else:
print(f"{self.name} 卡组已空,无法继续抽卡!")
# 打出第一张手牌
def play_card(self):
if self.hand:
return self.hand.pop(0)
return None
# 3. 创建卡牌库,扩展卡牌数量避免抽干
def create_cards():
base_cards = [
Card("小兵", 2, 3),
Card("勇士", 3, 2),
Card("骑士", 4, 4),
Card("法师", 5, 1),
Card("巨人", 1, 6)
]
# 每种卡牌复制3份,组成15张牌的牌库
full_deck = []
for card in base_cards:
full_deck.extend([card]*3)
return full_deck
# 4. 主游戏逻辑
def game():
print("===== 简易卡牌对战游戏 =====")
# 创建玩家和电脑
player = Player("玩家")
computer = Player("电脑")
# 给双方分配10张牌的卡组(从扩展牌库中随机抽取)
all_cards = create_cards()
player.deck = random.sample(all_cards, 10)
computer.deck = random.sample(all_cards, 10)
# 初始抽2张牌,保证开局有牌出
for _ in range(2):
player.draw_card()
computer.draw_card()
# 游戏主循环
while player.health > 0 and computer.health > 0:
input("\n按回车继续回合...")
# 玩家回合
print("\n--- 玩家回合 ---")
player.draw_card()
player_card = player.play_card()
# 电脑回合
print("\n--- 电脑回合 ---")
computer.draw_card()
computer_card = computer.play_card()
# 卡牌对战逻辑
if player_card and computer_card:
print(f"\n【对战】{player_card} VS {computer_card}")
# 互相造成伤害
player_card.health -= computer_card.attack
computer_card.health -= player_card.attack
# 卡牌阵亡后,给对方扣血
if player_card.health <= 0:
print(f"→ {player_card.name} 阵亡!玩家受到 {computer_card.attack} 点伤害")
player.health -= computer_card.attack
if computer_card.health <= 0:
print(f"→ {computer_card.name} 阵亡!电脑受到 {player_card.attack} 点伤害")
computer.health -= player_card.attack
# 显示当前状态
print(f"\n当前状态:玩家血量 {player.health} | 电脑血量 {computer.health}")
# 游戏结束判断
print("\n===== 游戏结束 =====")
if player.health <= 0:
print("电脑获胜!")
else:
print("玩家获胜!")
# 启动游戏
if __name__ == "__main__":
game()
## 三、操作流程
1.打开 PyCharm,新建一个 Python 项目
2.新建一个game.py文件,把上面的代码复制进去

3.点击右上角的「运行」按钮,就能开始游戏啦



4.结束进程
更多推荐



所有评论(0)