---
title: "【ChatGPT】游戏自动化测试实践案例 - 卡牌游戏出牌决策"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/chatgpt-game-autotest-card-game-move-decision/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "99-资料来源、摘录与归档/02-AI对话与研究原始输出/【ChatGPT】游戏自动化测试实践案例 - 卡牌游戏出牌决策.md"
content_hash: cc8ebd02447c23d9051cd038578fd02c4d4d936469c1f9effdb0a3e4b5c0321c
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 【ChatGPT】游戏自动化测试实践案例 - 卡牌游戏出牌决策

> **note · ChatGPT 问答录**
> 本文保存一次 ChatGPT 问答原始输出，仅作为资料来源；其中结论未自动视为已验证知识，使用前应结合可靠来源复核。


> 创建时间：2023/6/11 20:48

使用 Poco 进行 RPC 调用：

python

from airtest.core.api import connect_device

from poco.drivers.unity3d import UnityPoco

device = connect_device("Android:///")

## 初始化 Poco

poco = UnityPoco(device)

## 编写决策函数，根据游戏中的卡牌组合进行决策

def make_decision(card_combination): # 在此函数中编写决策逻辑，返回选择出的牌 # 作为示例，选择第一张牌

chosen_card = card_combination[0]

return chosen_card

## 使用 Poco 进行 RPC 调用，获取游戏中的卡牌组合

card_combination = poco.agent.rpc("GetCardCombination")

## 使用决策函数进行决策

chosen_card = make_decision(card_combination)

## 根据决策结果，在游戏界面上操作卡牌# 假设卡牌 UI 元素的名称是 "card_0", "card_1", "card_2" 等

card_ui_name = f"card_{chosen_card}"

card_ui = poco(card_ui_name)

## 选择卡牌并出牌

card_ui.click()

* * *

出牌决策示例：

首先，假设每张卡牌具有以下属性：

  * name: 卡牌名称

  * cost: 卡牌消耗（如法力、能量等）

  * damage: 卡牌造成的伤害

  * defense: 卡牌提供的防御

同时，假设我们可以获取到当前游戏状态，包括玩家的剩余资源（如法力、能量等）。

python

class Card: def __init__(self, name, cost, damage, defense): self.name = name

self.cost = cost

self.damage = damage

self.defense = defense

def make_decision(card_combination, player_remaining_resource):

## 按照卡牌效果（伤害 + 防御）和卡牌消耗（如法力、能量等）之比从高到低对卡牌进行排序 sorted_cards =

sorted(card_combination, key=lambda card: (card.damage + card.defense) / card.cost, reverse=True)

## 选择第一张玩家可以使用的卡牌

chosen_card = None

for card in sorted_cards:

if card.cost <= player_remaining_resource:

chosen_card = card

break # 如果没有合适的卡牌，选择第一张卡牌 if chosen_card is None:

chosen_card = card_combination[0]

return chosen_card

在这个示例中，我们首先对卡牌组合进行排序，优先考虑效果与消耗比较高的卡牌。然后，我们选择第一张玩家可以使用的卡牌。如果没有合适的卡牌，我们会选择第一张卡牌作为备选。

请注意，这个示例仅供参考。您需要根据您的游戏规则和策略调整决策函数。同时，您需要修改之前的代码示例，以便正确处理卡牌对象和游戏状态。

例如，您可以将游戏中的卡牌组合状态表示为 Card 类的对象列表，并将玩家剩余资源作为参数传递给 make_decision 函数。您还需要相应地修改游戏中的 RPC 函数，以返回卡牌对象列表而非字符串列表。
