Delphiバージョン。やっぱクラスの方が楽だね。

// しっぺ返し
procedure TRevengePrisoner.Execute;
begin
Cooporate(Turn = 1);
CorD(Enemy[-1]);
end;

// 天邪鬼
procedure TPerversePrisoner;
begin
Defect(Turn = 1);
DorC(Enemy[-1]);
end;

// 寛容(1回まで)
procedure TTrelantPrisoner.Execute;
begin
Cooporate(Turn = 1);
CorD(Enemy[-1] or Enemy[-2]);
end;