思路:

  1. 给出游戏规则,也就是参与者的得分规则
  2. 加入参与者,规定其选择策略

类定义

Game类

创建一个Game类来管理得分规则

score_calculation字典来储存不同情况下的得分

__init__方法来初始化score_calculation

(‘c’,’c’)表示两人都选择合作时的得分,也就是双方均得到三分
(‘c’,’d’)表示第一个人选择合作,第二个选择背叛,合作者得0分,背叛者得5分
(‘d’,’c’)则是反过来
(‘d’,’d’)就是两个人都选择背叛,各得到一分

对于play_round方法,move1move2根据参与者的选择返回得分

Gamer类

管理参与者

这个类表示每个参与者的属性和行为:

  • __init__ 方法:初始化 Gamer 实例,设定参与者的name,初始化得分(score 为 0),指定每个参与者的选择策略
  • make_move 方法:根据history调用对应的策略函数来选择“合作”或“背叛”。

run_simulation函数

  1. history来记录每一轮的情况
  2. game.play_round 计算得分
  3. 使用 game.play_round 计算得分
  4. 更新 gamescore1 gamescore2 累积得分
  5. 把每轮的选择添加到 history

main函数

进行游戏,把结果保存到CSV文件之中

  1. 初始化游戏:创建 Game 实例和玩家列表 gamers,每个玩家使用不同的策略
  2. 循环对局:每两个玩家间只进行一次对局,使用 run_simulation 获取得分并存储在 results 字典中
  3. 保存结果:将每个玩家的总得分写入到一个 CSV 文件 final_scores.csv 中。

for循环

内层循环遍历玩家列表,起始值设置为 i + 1,这确保了以下几点:

每一对玩家只会对局一次
避免玩家与自己对局
避免重复对局

调用 run_simulation 函数让 gamer1 和 gamer2 进行一场对局。run_simulation 函数会返回 score1 和 score2,即两位玩家在这场对局中的得分。


0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注