finish submission files

This commit is contained in:
SowinskiBraeden committed 2025-11-29 16:24:20 -08:00
1 parent 5f779cb027
commit ecb9527471
2 files changed
+40 -23

No files matched your search

+24 -23
View File
@@ -1,40 +1,41 @@
lesson 1:
- static initializer used in Mines.java
- static initializer used in MinesUI.java
- method overloading in Mines.java > startNewGame()
- static initializer in Mines.java (static block initializing RANDOM_GENERATOR)
- static initializer in MinesUI.java (static block initializing BUTTON_THEMES)
- constructor overloading demonstrated across project (e.g., RandomNumberGenerator and Mines constructors)
lesson 2:
- inheritance in Mines.java (extends GameBoard)
- custom exception in InvalidMoveException.java
- throwing exception in Mines.java > reveal()
- catching exception in MinesUI.java > handleReveal()
- inheritance: Mines extends GameBoard (GameBoard.java → Mines.java)
- custom exception class: InvalidMoveException (thrown in Mines.reveal)
- throwing exceptions in Mines.reveal()
- catching exceptions in MinesUI.handleReveal() within UI logic
lesson 3:
- method overriding in Mines.java > reset()
- substitution via GameBoard parent reference in constructor chain
- method overriding: Mines overrides abstract GameBoard.reset()
- substitution: GameBoard constructor called via super(width, height) inside Mines
lesson 4:
- abstract class in GameBoard.java
- abstract method reset() in GameBoard.java
- implementation of abstract method in Mines.java > reset()
- abstract class: GameBoard.java
- abstract method: reset() defined in GameBoard
- implementation of abstract method in Mines.reset()
lesson 5:
- collections in MinesUI.java > List<Button> buttons
- iterators in MinesUI.java > disableAllButtons()
- collections: MinesUI stores buttons in List<Button> (ArrayList)
- iterators: MinesUI.disableAllButtons() uses Iterator<Button>
lesson 6:
- lambda expressions in Mines.java > forEachNeighbor()
- lambda expressions in MinesUI.java > button.setOnMouseClicked()
- lambda expressions: Mines.forEachNeighbor() uses Consumer<Integer> with lambdas
- lambda expressions: MinesUI.createGrid() uses lambdas for event handlers (setOnMouseEntered, setOnMouseExited, setOnMouseClicked)
lesson 8:
- Scanner used in Mines.java > loadBestScore()
- BufferedReader used in Mines.java > loadBestScore()
- BufferedWriter used in Mines.java > saveScore()
- File used in Mines.java > loadBestScore()
- file reading: MinesScore.readScoresFromFile() uses BufferedReader and FileReader
- file writing: MinesScore.appendScoreToFile() uses BufferedWriter and FileWriter
- parsing and formatting data via DateTimeFormatter
- path management using String file paths (e.g., SCORE_FILE)
- Scanner usage present in Main CLI for input collection
lesson 9:
- JavaFX GUI in MinesUI.java
- JavaFX application entry class in MyGame.java > start()
- JavaFX application structure: MyGame extends Application and overrides start()
- JavaFX UI design: MinesUI builds scenes, stages, layouts, buttons, labels, handlers
lesson 10:
- unit tests to be shown in accompanying JUnit test files
- JUnit tests included in external test files (MinesTest, MinesScoreTest, etc.)
+16
View File
@@ -0,0 +1,16 @@
The best part of using chat gipity was how it helped me debug JavaFX issues, especially with
launching multiple applications within the same JVM instance. It was very good at analyzing
my code and identifying where I could implement concepts from each lesson. It also helped generate
boilerplate code and assisted with commenting, refactoring, and creating static variable names.
The worst parts occurred after the game logic was complete and I needed refactoring to meet the
assignment requirements. I asked gipity to reorganize code such as moving logic into an abstract
class and overriding methods while keeping the existing logic the same. Even with explicit
instructions not to change behavior, it still altered the logic and introduced bugs that I had
to spend a little while debugging.
Gipity is a useful tool that can speed up development and improve the overall coding experience,
but it still struggles with larger codebases and strictly following constraints. It often broke
rules like avoiding magic numbers or separating declarations and assignments, and sometimes
modified working code. Its a good assistant for certain tasks, but the core, important coding
is still best done manually. Future jobs are safe—for now.