For this assignment you will rework the tile game implementation (provided as st

For this assignment you will rework the tile game implementation (provided as starter code) into the concentration game using the numbered cards (2 through 10) from a standard decks of cards. The 36 cards are dealt out in a 6 by 6 grid face down. In each turn, a player will turn over two cards; if they match in number and color, they are retired from the game, leaving empty spots in the grid and the player can take another turn. Otherwise the next player takes a turn. The game is over when all the cards have been matched. The winner is the player with the most pairs.
More details:
Use the numbers 2 through 10 to represent the denomination of a card, and the Unicode characters ‘u2660’, ‘u2665’, ‘u2663’, and ‘u2666’ to represent the four suits—spades, hearts, clubs, and diamonds. (See Appendix C of the textbook for more information on Unicode characters in Java.) You should also make the color of the text match the color of the suit: thus the 10 of hearts would appear as 10♥ when displayed.
The cards need to be “dealt out” randomly. One way to do this is to systematically add String objects representing each of the 36 possible cards to an ArrayList, then randomly select a position in the list and use the remove method to remove and return the String at that position so that it can then be placed into the two dimensional array representing the game.
To remove a card from the Model, I suggest you replace the String representing the card with “X” or some other String that can be displayed on a JavaFX control (such as a Button), that will obviously look like the card is no longer in play.
You need to modify TilePuzzleView.fxml to specify the rest of the program’s View; i.e., the buttons for saving and restoring a game.
Reorganize code into model, view, and controller packages. The starter code just has one package named csc220 (needed to allow the ButtonGridPane class to be specified in the FXML file); you should delete this package once you’ve reorganized your code.
You need to replace the Model in the starter code with a model that provides the right logic for the concentration game. I recommend you keep the same basic methods as the original model.
The code for the Controller will require only a few changes. You will also need to create a couple of methods in the Controller to save and restore a game.
You need to rename classes and variables to better reflect the fact that the program is implementing a different game.
You also need to provide two extra buttons to save an unfinished game before you quit the program and to open up the saved game later.
I suggest you tackle the project in the following order:
Reorganize the program into model, view, and controller packages, and make sure it still works.
Add buttons to save and restore the current game and “wire” them to methods in the Controller class, without worrying yet about actually saving and restoring the game to/from a file yet. Instead, have the buttons print a simple message to the Output window for now.
Replace the Model of the tile puzzle game with a “stub” for the Model of the concentration game. This stub only needs to specify the size of the game grid at this point (that’s why it’s called a stub—there’s not much functionality yet.) Get the program to display a 6 x 6 blank grid.
Now add some code to the Model that will randomly “deal the cards” into the 36 slots of a two dimensional array of Strings, which can represent the current state of the game, and can also serve as the text to display on a button in the View when a card is “turned over.” Let the View display the cards face up for now so that you can see whether your random dealing is really working.
Once you get the random deal of the cards working, you can make the game put all the cards face down right from the start.
Add code to the Model so that it will play one turn. There will be three situations that need to be dealt with:
The first card is selected, so it should be turned up
The second card is selected, so that it should be turned up and the program can determine whether they match
The players have had a chance to absorb the results of the turn and are ready to start another turn. A good way to handle this would be to let the chosen cards stay face up until a player clicks on something in the grid; then the cards can either be marked as removed from the grid or turned face down again.
Finish the core of the game by adding code to the Model that will determine that all the cards have been matched and the game is over.
Write the code that will actually save the game to a file and restore it from the file. The easiest way to do this is just save the object that is representing your game to a file, as in Examples 11.15 and 11.16 on pages 747-751. It’s a lot easier than it seems, especially since there is only one object to write and read! Note: you will have to make sure that the class that implements the Model implements the Serializable interface—see pp. 744-745 of the textbook.
Link to accept invitation for Project 4
Here is the link to use to accept the invitation for this project.

The objective of this assignment is to create an undo/redo editor (that has no U

The objective of this assignment is to create an undo/redo editor (that has no UI, text document based). This is the second phase of the project.
This is a Computer Science II – Java level assignment.
The topics that pertain to this assignment are ArrayList, ArrayListStack, LinkedList, List, Queue, Enums, and Stack.
This is a fill in the blank type of assignment. The professor has given an outline and there are pre-defined classes that you must implement, specifically in this case MyArrayList(An ArrayList class) and MyArrayListStack. In the code there is green text with TODOs that specify what must be done, and each method has a comment that explains what the specified method should do.
In total there are only 10 methods that require implementation and one of them has already been filled out by the professor in the semi-completed file(specifically the open method).
For example some of the methods that need to be implemented are: save, saveAs, undo, redo, insert, delete, replace, find, moveCursor, getCursor,
These will be the attachments:
(These will be in a zip file)
1. A pre-written Editor.java file given by the professor
2. A test case file along with test text documents (however the professor has said these are untested)
3. A file that includes all the completed classes that were implemented in the first phase for context
Here are the professor’s words about how the assignment will be graded:
“My plan is to open an existing file, apply the various edits, including undo redo and save the file. I will compare it with my expected changes to see if the program works correctly.”
You are more than welcome to email me if any of the attached assignments/instructions need further explanation.