カードゲーム"Spaghetti Monsters"対AI戦2回目

 0: Zap        | (C) 
 1: CopyPast   | (C) 
 2: MakeBit    |  
 3: Reverse    |  
 4: Float      | (C) 
 5: Bomb       |  
 6: Dec        |  
 7: Crack      |  
 8: MoveBit    | (C) 
 9: Inc        | (C) 
10: Jump       |  
11: Charm      | (C) 
12: CopyFuture |  
13: Heal       | (C) 
14: Surge      | (C) 
15: MoveCard   |  
16: RemoveBit  | (C) 
17: RemoveCard |  

うーむ、CopyPastがRemoveCardをコピーしてしまうからMakeBitに置くと1/2の確率で消されるなぁ(まだ確率1で消すほどAIが賢くない)

FloatがReverseをコピーするとカオスが発生するなぁ。うーむ、さっきの局面がたまたま偏っていて助かっただけで、やはり9個も置かれると勝てないなぁ。木が深くなると発散してしまって読めないのでなるべく浅いところでしとめないと…Crack, Inc, Jumpかなぁ。MakeBitを消される危険さえなければMakeBit, Reverseと頭の弱いAIのCopyPastでループを作ってCrackにビットを大量に積んでからReverseをパスするんだが、さすがに1/2の確率でそれが消されるんじゃなぁ。

実行。

Zap        v (C) 
CopyPast   | (C) 
MakeBit    |  
Reverse    |  
Float      | (C) 
Bomb       |  
Dec        |  
Crack      | (Y) 
MoveBit    | (C) 
Inc        | (C)(Y) 
Jump       | (Y) 
Charm      | (C) 
CopyFuture |  
Heal       | (C) 
Surge      | (C) 
MoveCard   |  
RemoveBit  | (C) 
RemoveCard |  
...
Player: Computer @ Zap 1人のプレイヤーのライフポイントを1減らす
ACTIVATE True
SELECT_PLAYER You
You:9 Computer:10
...
Player: Computer @ CopyPast このカードから見て進行と逆方向の2枚をコピー
ACTIVATE True
copy RemoveCard
SELECT_CARD MakeBit
copy Zap
SELECT_PLAYER Computer
You:9 Computer:9

MakeBit消されたなぁ。しかしZapで自分自身を打っているな。これはバグに違いない。

- if repr(game.cur_card) in "Zap Crack Bomb":
+ if repr(game.cur_card) in "Zap Crack Bomb".split():

バグだったw

Reverse    |  
Float      v (C) 
Bomb       |  
Dec        |  
Crack      | (Y) 
...
Player: Computer @ Float 1つ前または後ろに移動し、PC進行方向の次のカードをコピーする。
ACTIVATE True
SELECT_CARD Bomb
...
copy Dec
SELECT_CARD MoveCard
SELECT_VARIABLE x
Zap        | (C) 
CopyPast   | (C) 
Reverse    |  
Bomb       |  
Float      | (C) 
Dec        |  
Crack      v (Y) 
MoveBit    | (C) 
Inc        | (C)(Y) 
Jump       | (Y) 
Charm      | (C) 
CopyFuture |  
Heal       | (C) 
Surge      | (C) 
MoveCard   |   x-1
RemoveBit  | (C) 
RemoveCard |  
You 9 Computer 9
Player: You @ Crack 1人のプレイヤーのライフポイントを2減らす
activate Crack?> 

yes

You 9 Computer 7
Player: Computer @ MoveBit 1個のビットを任意のカードに移動する
ACTIVATE True
SELECT_CARD Heal
SELECT_BIT 0
SELECT_CARD RemoveBit
Zap        | (C) 
CopyPast   | (C) 
Reverse    |  
Bomb       |  
Float      | (C) 
Dec        |  
Crack      | (Y) 
MoveBit    | (C) 
Inc        v (C)(Y) 
Jump       | (Y) 
Charm      | (C) 
CopyFuture |  
Heal       |  
Surge      | (C) 
MoveCard   |   x-1
RemoveBit  | (C)(C) 
RemoveCard |  
You 9 Computer 7
Player: Computer @ Inc 任意の1枚のカードのアラビア数字を1増やす。
ACTIVATE True
SELECT_CARD MoveCard
SELECT_VARIABLE x
Player: You @ Inc 任意の1枚のカードのアラビア数字を1増やす。
activate Inc?> 

CrackをInc, JumpでCrackへ戻る。あと1回無事戻れれば勝ちなんだけども、間にMoveBitが挟まっているから何をされるかわからない。

Player: You @ Crack 2人のプレイヤーのライフポイントを2減らす
activate Crack?> 1
 0: You
 1: Computer
which player?> 1
You:9 Computer:5
 0: You
 1: Computer
which player?> 1
You:9 Computer:3

MoveBitは無駄な使われ方をした。

Crack      | (Y)  x+1, y+1
MoveBit    | (C)  x+1
Inc        | (C)(Y) 
Jump       v (Y) 
Charm      | (C) 
CopyFuture |  
Heal       |  
Surge      | (C) 
MoveCard   |   x-1, x+1
RemoveBit  | (C)(C) 
RemoveCard | (C) 
You 9 Computer 3

Crackに戻って勝利。