-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBag.java
184 lines (156 loc) · 5.18 KB
/
Bag.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package GameComponents;
import java.util.ArrayList;
import java.util.HashMap;
public class Bag {
private ArrayList<Tile> bagList; // bag that starts out at 100 - keeps shrinking as players fill racks
private ArrayList<Tile> letterPointList; // To score words with the getLetterScore(char) method in this class
public Bag() {
// assigning value and points
Tile aTile = new Tile('A', 1);
Tile bTile = new Tile('B', 3);
Tile cTile = new Tile('C', 3);
Tile dTile = new Tile('D', 2);
Tile eTile = new Tile('E', 1);
Tile fTile = new Tile('F', 4);
Tile gTile = new Tile('G', 2);
Tile hTile = new Tile('H', 4);
Tile iTile = new Tile('I', 1);
Tile jTile = new Tile('J', 8);
Tile kTile = new Tile('K', 5);
Tile lTile = new Tile('L', 1);
Tile mTile = new Tile('M', 3);
Tile nTile = new Tile('N', 1);
Tile oTile = new Tile('O', 1);
Tile pTile = new Tile('P', 3);
Tile qTile = new Tile('Q', 10);
Tile rTile = new Tile('R', 1);
Tile sTile = new Tile('S', 1);
Tile tTile = new Tile('T', 1);
Tile uTile = new Tile('U', 1);
Tile vTile = new Tile('V', 4);
Tile wTile = new Tile('W', 4);
Tile xTile = new Tile('X', 8);
Tile yTile = new Tile('Y', 4);
Tile zTile = new Tile('Z', 10);
Tile blankTile = new Tile('?', 0);
/*
English Scrabble Letter points and distribution
0 points: blank/wild (2)
1 point: E (12), A (9), I (9), O (8), N (6), R (6), T (6), L (4), S (4), U (4)
2 points: D (4), G (3)
3 points: B (2), C (2), M (2), P (2)
4 points: F (2), H (2), V (2), W (2), Y (2)
5 points: K (1)
8 points: J (1), X (1)
10 points: Q (1), Z (1)
*/
letterPointList = new ArrayList<>();
letterPointList.add(aTile);
letterPointList.add(bTile);
letterPointList.add(cTile);
letterPointList.add(dTile);
letterPointList.add(eTile);
letterPointList.add(fTile);
letterPointList.add(gTile);
letterPointList.add(hTile);
letterPointList.add(iTile);
letterPointList.add(jTile);
letterPointList.add(kTile);
letterPointList.add(lTile);
letterPointList.add(mTile);
letterPointList.add(nTile);
letterPointList.add(oTile);
letterPointList.add(pTile);
letterPointList.add(qTile);
letterPointList.add(rTile);
letterPointList.add(sTile);
letterPointList.add(tTile);
letterPointList.add(uTile);
letterPointList.add(vTile);
letterPointList.add(wTile);
letterPointList.add(xTile);
letterPointList.add(yTile);
letterPointList.add(zTile);
letterPointList.add(blankTile);
bagList = new ArrayList<>();
for (int i = 0; i < 12; i++) {
bagList.add(eTile);
}
//add 9 a and i tiles
for (int i = 0; i < 9; i++) {
bagList.add(aTile);
bagList.add(iTile);
}
//add 8 o tiles
for (int i = 0; i < 8; i++) {
bagList.add(iTile);
}
//add 6 n,r and t tiles
for (int i = 0; i < 6; i++) {
bagList.add(nTile);
bagList.add(rTile);
bagList.add(tTile);
}
//add 4 l,s,u and d tiles
for (int i = 0; i < 4; i++) {
bagList.add(lTile);
bagList.add(sTile);
bagList.add(uTile);
bagList.add(dTile);
}
//add 3 g tiles
for (int i = 0; i < 3; i++) {
bagList.add(gTile);
}
//add 2 b,c,m,p,f,h,v,w,y and blank tiles
for (int i = 0; i < 2; i++) {
bagList.add(bTile);
bagList.add(cTile);
bagList.add(mTile);
bagList.add(pTile);
bagList.add(fTile);
bagList.add(hTile);
bagList.add(vTile);
bagList.add(wTile);
bagList.add(yTile);
bagList.add(blankTile);
}
//add 1 k,j,x,q and z tiles
bagList.add(kTile);
bagList.add(jTile);
bagList.add(xTile);
bagList.add(qTile);
bagList.add(zTile);
}
// for the end of the game (end game when size == 0)
public int size() {
return bagList.size();
}
public ArrayList<Tile> getBagList() {
return bagList;
}
// for blank tiles
public boolean pullTile (Tile t) {
boolean flag = bagList.remove(t);
if (flag)
return true;
return false;
}
// do this to refill rack
// randomly choose tile out of the bag and remove it
public Tile pullRandomTile() {
int index = (int) (Math.random() * (bagList.size() - 1));
Tile pulledTile = bagList.remove(index);
return pulledTile;
}
// Gets the score for each letter
public int getLetterScore(char letter) {
char upperCaseLetter = Character.toUpperCase(letter);
int letterScore = 0;
for (int i = 0; i < letterPointList.size(); i++) {
if (upperCaseLetter == letterPointList.get(i).getLetter())
letterScore = letterPointList.get(i).getLetterPoints();
}
return letterScore;
}
}