-
Notifications
You must be signed in to change notification settings - Fork 0
/
tasks.txt
384 lines (370 loc) · 15.4 KB
/
tasks.txt
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
The task's priority is sorted in ascending order
1. Set up the project:
1.1 Create each class from the class diagram,
* PROGRESS: DONE
* Who : MENEUST Robin
* Start : 2023/05/15 15:55
* Estimated end : 2023/05/15 16:30
* Real end : 2023/05/15 16:30
1.2 Create scripts for automation (ant)
* PROGRESS: DONE
* Who: Yann
* Start: 2023/05/15 18:30
* Estimated end: 2023/05/15 18:50
* Real end: 2023/05/15 18:45
* NOTE : We didn't manage to do it because there were too many errors, so we used maven.
2. Create the data model with an undirected graph:
2.1 Get the number of columns and rows,
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/15 18:30
* Estimated end: 2023/05/15 18:50
* Real end: 2023/05/15 18:45
2.2 Create a graph with an adjacency matrix,
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/15 18:30
* Estimated end: 2023/05/15 18:50
* Real end: 2023/05/19 15:50
* NOTE: It's not finished yet because it couldn't get tested before 2023/05/18, and after testing it we noticed that it didn't worked properly (it doesn't find a path even when there is one)
2.3 Be capable to manipulate the edges (create a new one; destroy one),
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/15 18:30
* Estimated end: 2023/05/15 18:50
* Real end: 2023/05/15 18:45
/!\ The data model changed
2.4 Change data model, DESC: Instead of using an adjacency matrix we are now using a adjacency list
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/16 12:00
* Estimated end: 2023/05/16 14:30
* Real end: 2023/05/16 15:30
* Notes: Most of the functions needed to be changed, since we don't work with int anymore but with Point.
hashCode was forgotten in Point.java (we didn't override it), that's mostly why it took more time than expected
3. Create the player:
3.1 Create a player with a username and his number of wins,
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/15 16h
* Estimated end : 2023/05/15 17:45
* Real end : 2023/05/15 18h
* Notes : No difficulties encountered
3.2 Create a pawn associated to a player:
3.2.1 Create the basic class Pawn
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/15 16h
* Estimated end : 2023/05/15 17:45
* Real end : 2023/05/15 18h
* Notes : No difficulties encountered
3.2.2 If the pawn place a fence, its available fences must decrease:
3.2.2.1 Check if there is enough fence available
* PROGRESS: DONE
* Who: Thibault
* Start : 2023/05/15 17:10
* Estimated end : 2023/05/15 17:40
* Real end : 2023/05/15 17:45
* Notes : No difficulties encountered
4. Create fences:
4.1 Create a fence with a length, a position and an orientation:
4.1.1 Create the main elements of the class
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/15 18:05
* Estimated end : 2023/05/15 18:15
* Real end : 2023/05/15 18:15
4.1.2 Check if the starting point of the fence is outside the board
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/15 18:20
* Estimated end : 2023/05/15 18:30
* Real end : 2023/05/16 18:50
* Notes : It took longer than anticipated.
4.1.3 The end of the fence must be consistent with its starting point and its length
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/16 9:00
* Estimated end : 2023/05/16 9:30
* Real end : 2023/05/16 10:00
* Notes : It took longer than anticipated.
4.1.4 Check if the ending point of the fence is outside the board
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/16 18:30
* Estimated end : 2023/05/16 19:00
* Real end : 2023/05/16 19:20
* Notes : It took longer than anticipated.
5. Add game sequence:
5.1 Be able to move or to place a fence,
* PROGRESS: DONE
* Who: David
* Start : 2023/05/15 16:30
* Estimated end : 2023/05/15 19:00
* Real end : 2023/05/15 20:30
* Notes : Issues encountered: scanner.close() closed stdin, so we couldn't use it, even with another Scanner
We had to check each data we had to verify the possibility of each game.
5.2 Check if any of these actions is possible,
5.2.1 Check if the player can place a fence
5.2.1.1 Check if there is at least one fence remaining
* PROGRESS: DONE
* Who: David
* Start : 2023/05/15 16:30
* Estimated end : 2023/05/15 19:00
* Real end : 2023/05/15 20:30
Notes :
5.2.1.2 Check if 2 fences are intersecting
* PROGRESS: DONE
* Who: Romain, Robin
* Start : 2023/05/17 11:00
* Estimated end : 2023/05/17 14:00
* Real end : 2023/05/17 15:25
* NOTE: was reopened on 2023/05/21 to fix it (borders in "X" shaped were allowed before)
The main challenge here was to find a way to shorten the functions and make it less repetitive
5.2.1.3 Find a path between to points,
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/15 18:30
* Estimated end: 2023/05/15 18:50
* Real end: 2023/05/15 18:45
* NOTE: was changed on 2023/05/26 because it didn't use a priority queue before, we had to search the minimum element everytime we wanted to expand a node. It's now fixed
5.2.1.4 Add the new fence to the list and to the grid
* PROGRESS: DONE
* Who: Robin
* Start: 2023/05/15 20:30
* Estimated end: 2023/05/15 21:00
* Real end: 2023/05/15 21:30
5.2.2 Get a list of all the available cells the player can to move to (can the player jump?, is there a fence? ...)
5.2.2.1 The player can jump above another one
* PROGRESS: DONE
* Who: Thibault
* Start : 2023/05/15 18:45
* Estimated end : 2023/05/15 19:30
* Real end : 2023/05/15 20:00
* Notes: function creation to avoid code repetition took me longer than expected.
* Update: 2023/05/17, Bug fix after changing areConnected function
5.2.2.2 If the player can jump above another one but there is a fence behind, he can go diagonally
* PROGRESS: DONE
* Who: Thibault
* Start : 2023/05/16 18:30
* Estimated end : 2023/05/16 18:45
* Real end : 2023/05/16 19:45
* Notes : It took us longer than expected because we restructured the function to avoid code repetition
5.2.3 Check if the move give by the player is in that list of available cells
* PROGRESS: DONE
* Who: Thibault
* Start : 2023/05/16 15:00
* Estimated end : 2023/05/16 15:10
* Real end : 2023/05/16 15:05
* Notes : No difficulties encountered
5.3 Check if anybody wins,
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/16 16:00
* Estimated end : 2023/05/16 17:30
* Real end : 2023/05/16 18:00
* Notes : It took longer than excepted.
5.4 Ask the player how many players there are and check the number (it must be equals to 2 or 4)
* PROGRESS: DONE
* Who: Romain
* Start : 2023/05/16 16:45
* Estimated end : 2023/05/16 16:50
* Real end : 2023/05/16 16:49
* Notes : No difficulties encountered.
5.5 Ask at the end of a game if the player wants to restart or exit
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/23 17:50
* Estimated end : 2023/05/23 18:05
* Real end : 2023/05/23 18:15
6. Create a console interface to be able to test the game:
6.1 Represent the cells of the grid in the console
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/15 17:30
* Estimated end : 2023/05/15 17:45
* Real end : 2023/05/15 17:55
6.2 Be able to see the player on the grid,
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/15 17:55
* Estimated end : 2023/05/15 18:05
* Real end : 2023/05/15 18:05
* Notes: The code had to be changed on 2023/05/16, since the areConnected function doesn't take the same type of parameters. It was also simplified.
7. Create a save:
7.1 Let the player choose the location and the name of the save in the console (check if it already exists),
* PROGRESS: DONE
* Who: Yann
* Start : 2023/05/16 18:35
* Estimated end : 2023/05/16 18:45
* Real end : 2023/05/16 18:40
7.2 Encode the game in a file to save it,
* PROGRESS: DONE
* Who: Yann
* Start : 2023/05/16 20:00
* Estimated end : 2023/05/16 20:30
* Real end : 2023/05/18 23:00
* Re-opened between 2023/05/24 and 2023/05/25 to update the type of backup file elements
8. Load a save:
8.1 Let the player choose the file containing the save to be loaded in the console (check if the file exists)
* PROGRESS: DONE
* Who: Yann
* Start : 2023/05/19 10:00
* Estimated end : 2023/05/19 10:10
* Real end : 2023/05/22 03:26
8.2 Decode the file containing the save and load it, check if the format is valid,
* PROGRESS: DONE
* Who: Yann
* Start : 2023/05/19 10:15
* Estimated end : 2023/05/19 11:30
* Real end : 2023/05/22 03:26
* NOTE: Re-opened between 2023/05/23 and 2023/05/24 to check if the file is in the valid format
9. Create a user interface using JavaFX:
9.0 Set up Maven to build the executable JAR that includes JavaFX
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/16 23:00
* Estimated end : 2023/05/16 23:15
* Real end : 2023/05/17 23:59
* NOTE : The delay here is because we tried to use VSCode and Ant instead of Eclipse, so we had to search for a way to link the libraries of JavaFX to our project
And it got delayed even more because we didn't know how to create a standalone JAR with Ant, and so we used Maven
9.1 Create a window for the application
* PROGRESS: DONE
* Who: David
* Start : 2023/05/16 19:40
* Estimated end : 2023/05/16 19:50
* Real end :2023/05/16 20:00
Note : No difficulties encountered
9.2 Create a grid and add it to the window
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/18 19:55
* Estimated end : 2023/05/18 20:10
* Real end : 2023/05/18 20:25
* NOTE: It was hard here to find a good representation of the board with a GridPane, and finding the appropriate size for the cells and the borders.
But using rows and columns constraints alternatively and converting board coordinates into out GridPane coordinates, and vice-versa, was sometimes quite tricky
9.3 Add fences to the window (thick black borders) without breaking the alignment (the size of the grid must not change)
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/18 16:00
* Estimated end : 2023/05/18 18:00
* Real end : 2023/05/18 17:40
* NOTE: the main issue here was the coordinate system (x,y) because I mixed it with the usual (i,j) representation of array in code (row,column)
10. Add events and use CAP (Observers...) to link the "presentation" to the "abstraction" using "controllers"
10.1 Add buttons (and events) used by the player to choose his next move (place fence or move)
10.1.1 Create the buttons and add it to the window. The "Place fence" button must be disabled or hidden if the player can't place a fence.
We can also just create one button "Place Fence" that becomes "Move" when pressed (it's probably better to do so)
* PROGRESS: DONE
* Who: Thibault
* Start : 2023/05/18 12:00
* Estimated end : 2023/05/18 13:30
* Real end : 2023/05/18 15h05
* Notes : This step took longer than expected because we had to link the interface to the progress of the game in the terminal
10.1.2 Add events and controllers to switch player mode to "PLACE FENCE" or "MOVE" when a button is clicked,
* PROGRESS: Done
* Who: Thibault
* Start : 2023/05/18 16h30
* Estimated end : 2023/05/18 18h00
* Real end : 2023/05/18 20h30
* Notes : This step took more time because we linked the functions doing the expected actions to the button while managing
the update of the button at the end of each round
10.2 Player movements ("MOVE" mode)
10.1.1 Show the possible moves by changing the color of the corresponding cells (e.g greyed)
* PROGRESS: Done
* Who: David
* Start : 2023/05/18 15:00
* Estimated end : 2023/05/18 15:30
* Real end :2023/05/18 16:00
Note : We had trouble because we forgot that the set was no longer 9x9 in JavaFX.
10.1.2 Add an event that changes the content of the hovered cell (the color/image will be different whether it's a cell where the player can move or not)
* PROGRESS: Done
* Who: David
* Start : 2023/05/18 16:00
* Estimated end : 2023/05/18 16:10
* Real end :2023/05/18 16:20
Note : No trouble encountered
10.1.3 Add a pawn for each player
* PROGRESS: Done
* Who: David
* Start : 2023/05/20 18:30
* Estimated end : 2023/05/20 19:00
* Real end : 2023/05/20 20:00
Note : Had to chose between to strategy : one stackPane containing multiple GridPane or for each case of the grid we add a stack pane. We chose the second option.
10.1.4 Add an event to move the player when a cell is clicked (where he can go) (remove the previous pawn position on the grid)
* PROGRESS: Done
* Who: David
* Start : 2023/05/18 16:30
* Estimated end : 2023/05/18 16:50
* Real end : 2023/05/18 17:00
Note : difficulties with coordinates.
10.3 Place fences ("PLACE FENCE" mode)
10.1.1 Add an event that changes the borders of the hovered cell (the color/image will be different whether it's a border where the player can place a fence or not)
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/18 20:30
* Estimated end : 2023/05/18 21:00
* Real end : 2023/05/18 23:20
* NOTE: The event was set on the cell and not the border since it was easier this way.
But if take into account the cells of the GridPane that are at the intersection of two borders while adding the events and converting the coordinates then it might be possible to add the event directly to the borders
10.1.2 Add an event to place the fence when a border (where a fence can be added) is clicked
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/20 13:00
* Estimated end : 2023/05/20 16:30
* Real end : 2023/05/20 16:35
* NOTE: Here the main "challenge" was to keep track of the fences selected to change their color back to the default one.
And to not color them if a fence is already there (so if the color is black and not light gray)
10.4 Add a fence counter
* PROGRESS: DONE
* Who: Thibaut
* Start : 2023/05/20 16h40
* Estimated end : 2023/05/20 17h20
* Real end : 2023/05/20 17h07
* Notes : No difficulties encountered
10.5 Add button for the save system
10.3.1 Create a load button that opens a FileChooser
* PROGRESS: Done
* Who: David
* Start : 2023/05/20 13:10
* Estimated end : 2023/05/20 14:00
* Real end :2023/05/20 13:30
Note : know how to implement a datechooser
10.3.2 Create a save button that opens a FileChooser
* PROGRESS: Done
* Who: David
* Start : 2023/05/20 13:30
* Estimated end : 2023/05/20 14:40
* Real end : 2023/05/20 14:00
Note : no difficulties
11. Add a main menu and its buttons
11.1 Create the menu Scene
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/20 16:40
* Estimated end : 2023/05/20 17:10
* Real end : 2023/05/20 17:45
11.2 New game button and its event (launch a new game)
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/20 17:45
* Estimated end : 2023/05/20 18:15
* Real end : 2023/05/20 18:30
11.3 Load Game and save game buttons and their events (load and launch a game or save it)
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/21 12:45
* Estimated end : 2023/05/21 13:45
* Real end : 2023/05/22 18:15
* NOTE: Real end is later because tasks 8 was in progress
11.4 Added the case of an already existing save file (overwrite) for the window mode
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/21 17:00
* Estimated end : 2023/05/23 17:30
* Real end : 2023/05/23 17:35
11.5 Added an exit button to leave the program
* PROGRESS: DONE
* Who: Robin
* Start : 2023/05/21 18:20
* Estimated end : 2023/05/23 18:30
* Real end : 2023/05/23 18:30