-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrisonersDilemma.java
70 lines (60 loc) · 1.61 KB
/
PrisonersDilemma.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* Class containing the Prisoner's Dilemma (PD).
* @author 081028AW
*/
public class PrisonersDilemma extends Object
{
/**
* Prisoner's Dilemma program.
*/
Strategy player1;
Strategy player2;
int T = 7;
int R = 5;
int P = 3;
int S = 1;
int player1Payoff;
int player2Payoff;
int player1Move;
int player2Move;
public PrisonersDilemma(Strategy p1, Strategy p2)
{
this.player1 = p1;
this.player2 = p2;
} /* PrisonersDilemma */
public int playPD()
{
// 0 = defect, 1 = cooperate
player1Move = player1.nextMove();
player2Move = player2.nextMove();
player1.saveMyMove(player1Move);
player2.saveMyMove(player2Move);
player1.saveOpponentMove(player2Move);
player2.saveOpponentMove(player1Move);
if (player1Move == 0 && player2Move == 0)
{
player1Payoff = P;
player2Payoff = P;
}
else if (player1Move == 0 && player2Move == 1)
{
player1Payoff = T;
player2Payoff = S;
}
else if (player1Move == 1 && player2Move == 0)
{
player1Payoff = S;
player2Payoff = T;
}
else if (player1Move == 1 && player2Move == 1)
{
player1Payoff = R;
player2Payoff = R;
}
return 0;
} /* playPD */
public int getPlayer1Move() { return player1Move; }
public int getPlayer2Move() { return player2Move; }
public int getPlayer1Payoff() { return player1Payoff; }
public int getPlayer2Payoff() { return player2Payoff; }
} /* class PrisonersDilemmd */