
思路:
- 给出游戏规则,也就是参与者的得分规则
- 加入参与者,规定其选择策略
类定义
Game类

创建一个Game类来管理得分规则
用score_calculation字典来储存不同情况下的得分
用__init__方法来初始化score_calculation
(‘c’,’c’)表示两人都选择合作时的得分,也就是双方均得到三分
(‘c’,’d’)表示第一个人选择合作,第二个选择背叛,合作者得0分,背叛者得5分
(‘d’,’c’)则是反过来
(‘d’,’d’)就是两个人都选择背叛,各得到一分
对于play_round方法,move1和move2根据参与者的选择返回得分
Gamer类
管理参与者

这个类表示每个参与者的属性和行为:
- __init__ 方法:初始化 Gamer 实例,设定参与者的name,初始化得分(score 为 0),指定每个参与者的选择策略
- make_move 方法:根据history调用对应的策略函数来选择“合作”或“背叛”。
run_simulation函数
- 用history来记录每一轮的情况
- 用 game.play_round 计算得分
- 使用 game.play_round 计算得分
- 更新 gamescore1 和 gamescore2 累积得分
- 把每轮的选择添加到 history 中

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

- 初始化游戏:创建 Game 实例和玩家列表 gamers,每个玩家使用不同的策略
- 循环对局:每两个玩家间只进行一次对局,使用 run_simulation 获取得分并存储在 results 字典中
- 保存结果:将每个玩家的总得分写入到一个 CSV 文件 final_scores.csv 中。
for循环
内层循环遍历玩家列表,起始值设置为 i + 1,这确保了以下几点:
每一对玩家只会对局一次
避免玩家与自己对局
避免重复对局
调用 run_simulation 函数让 gamer1 和 gamer2 进行一场对局。run_simulation 函数会返回 score1 和 score2,即两位玩家在这场对局中的得分。
0 条评论