# 用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.结束进程

更多推荐