返回「资料来源、摘录与归档」

【ChatGPT】游戏自动化测试实践案例 - 卡牌游戏出牌决策

【ChatGPT】游戏自动化测试实践案例 卡牌游戏出牌决策

更多
Markdown 结构化数据
本文目录 8 个章节

【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 函数,以返回卡牌对象列表而非字符串列表。