Software Engineering

ChessForge Part 2: GUI

Due on October 4th at 11:59 PM.

This is an individual assignment. You are to complete this assignment on your own, although you may discuss the lab concepts with your classmates. Remember the Academic Integrity Policy: do not show your work to anyone outside of the course staff and do not look at anyone else’s work for this lab. If you need help, please post on the Piazza forum or contact the instructor. Note that no exception is made for your group members; collaboration with your group members is a violation of the Academic Integrity Policy as much as collaboration with other members of the class. If you have any doubts about what is okay and what is not, it’s much safer to ask than to risk violating the Academic Integrity Policy.


In this assignment, you will write a graphical user interface (GUI) for ChessForge. This GUI comprises the view and controller parts of the MVC design pattern.


Your GUI implementation should be developed in the same repository in which you developed your model. Although you may wish to refer to that assignment for a refresher on the rules of the game, the fundamental purpose of this application is to give a human user the ability to interact with a ChessForge model.

You will need to write several classes to complete this implementation. You are strongly encouraged to place your code in a different package than the one you used for the first part of this assignment. Your GUI code will communicate with the ChessForge model via the provided interfaces; you will not name any model classes directly.

To develop your JavaFX application, you’ll need to write a subclass of the Application class as we discussed in class. You’ll also want a main class with a main method that looks something like this:

public static void main(String[] arg) {
    Application.launch(MyChessForgeGUI.class, arg);

In writing your program, you may wish to refer to the JavaFX Guide for the course. That link also leads to a number of other resources, such as the JavaFX tutorials published by Oracle.

You should feel free to use the reference implementation of the ChessForge model during this assignment. You may use your own model, but you are not required to do so; this way, you don’t have to worry about debugging anything wrong with your model implementation while you work on your GUI.


Your GUI must have the following properties:

Finally, your GUI code is expected to conform to the same style requirements as the previous assignment.


You may (but are not required to) use the images in the tile-images subdirectory for this project. If you wish to do so, make sure to add that directory as a “resources root” in IntelliJ and refer to the images as Java resources in your code (instead of opening them as Files).

Submitting Your Work

As with the previous assignment, you will add to your previous file in the root of your repository. This document should identify the main class for your GUI application. Once you have done so, you may submit your assignment simply by pushing to the Swarthmore GitHub.

Extra Credit

There is also the opportunity for extra credit in this assignment as well. If your GUI goes significantly beyond the above requirements, you may receive some extra points for your efforts. Examples of extra credit-worthy features include:

Make sure to include mention of the features you implemented in your The amount of extra credit will depend upon the effect your decision has upon the user interface.