-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameBoardLinkedList.java
156 lines (130 loc) · 2.78 KB
/
GameBoardLinkedList.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package hangman;
public class GameBoardLinkedList implements GameBoard, HangManConstants
{
private int state = STARTING_STATE;
private CharLinkedList guessWord = new CharLinkedList();
private CharLinkedList gameBoard = new CharLinkedList();
private CharLinkedList prevGuess = new CharLinkedList();
public GameBoardLinkedList(String guess)
{
for(int i=0; i<guess.length();i++)
{
guessWord.addCharNode(guess.charAt(i));
gameBoard.addCharNode('0');
}
}
public boolean isPriorGuess(char guess)
{
LLCharacterNode currNode = prevGuess.getHead();
while(currNode != null)
{
if(currNode.getInfo() == guess)
return true;
currNode = currNode.getLink();
}
return false;
}
public int numberOfGuesses()
{
return prevGuess.getSize();
}
public boolean isCorrectGuess(char guess)
{
LLCharacterNode currNode = guessWord.getHead();
while(currNode != null)
{
if(currNode.getInfo() == guess)
return true;
currNode = currNode.getLink();
}
state++;
return false;
}
public boolean doMove(char guess)
{
if(!isPriorGuess(guess))
{
prevGuess.addCharNode(guess);
if(isCorrectGuess(guess))
{
LLCharacterNode currNode = guessWord.getHead();
LLCharacterNode currNode2 = gameBoard.getHead();
while(currNode != null)
{
if(currNode.getInfo() == guess)
currNode2.setInfo(guess);
currNode = currNode.getLink();
currNode2 = currNode2.getLink();
}
return true;
}
}
return false;
}
public boolean inWinningState()
{
LLCharacterNode currNode = gameBoard.getHead();
while(currNode != null)
{
if(currNode.getInfo() == '0')
return false;
currNode = currNode.getLink();
}
return true;
}
public boolean inLosingState()
{
LLCharacterNode currNode = gameBoard.getHead();
while(currNode != null)
{
if(currNode.getInfo() == '0' && currentHungState() == 10)
return true;
currNode = currNode.getLink();
}
return false;
}
public int currentHungState()
{
if(state <= 10)
return state;
return 10;
}
public String toString()
{
String s = "";
LLCharacterNode currNode = gameBoard.getHead();
while(currNode != null)
{
if(currNode.getLink() != null)
{
if(currNode.getInfo() == '0')
s += "_ ";
else
s += currNode.getInfo()+" ";
}
else
{
if(currNode.getInfo() == '0')
s += "_";
else
s += currNode.getInfo();
}
currNode = currNode.getLink();
}
return s;
}
public String previousGuessString()
{
String s = "[";
LLCharacterNode currNode = prevGuess.getHead();
while(currNode != null)
{
if(currNode.getLink() != null)
s += currNode.getInfo()+", ";
else
s += currNode.getInfo();
currNode = currNode.getLink();
}
return s+"]";
}
}