A game I learned about from Berkeley's Professor Dan Garcia's GamesCrafters Site Two knights on a chess board that move like chess, but as they leave a square, it is “burned” (uninhabitable for either player). Players alternate moving their knight trying to avoid being the loser who is left with no place to go. This is a real game that has strategy
Download and run joust_sfhs_2020.jar to see a working version of the game (On macs you have to go to Security and press “Open anyway” since it is not from an Apple identified developer).
This lab is set up so you can discover how to program conditional statements(if..then) and iterations (loops). The starter code has graphics and fancy things like handling input from the mouse. Your job will be to finish writing some vital boolean methods that will make the code work. Here is a zip file Joust.zip containing the starter source code for four classes.
Joustclass is a control class that handles the user's activity. If the user is hovering over a valid move, then that particular
Squareis told it is highlighted. If the user clicks on a valid move, then the current
Knightburns the current square, and is moved to the new location. If it is not a game winning move, the current player switches to the other knight. If it is a victory for some one, a reset button is shown to start a new game.
Squareobjects start out either black or white (like a chess board) and become red when they are “burned” It draws itself, so it needs to know if it is highlighted. Write the
isBurnedmethod by checking what the color is. If you like, you can change the actual Colors used for black, white and burned squares.
Knight(the player's piece) which needs to keep track of its location, what color it is. If you want to have other pieces, you can see how the knight icon is a unicode character. You can modify that if you wish with a different one https://www.chessvariants.com/d.font/unicode.html
Boardhas a collection of
Squareobjects and two
Knightobjects (one for each player. It also keeps track of whose turn it is, what are legal moves, and whether the game is over (and who the winner is). Here you have to write two methods, both involving the possible moves.
isBurnedmethod from the
indexOutOfBoundsruntime errors if you forget to see if you are looking for a square that is off the board. Thank goodness Java uses 'short circut' conditional statements. Good thing, since it would cause a runtime error. Once the first part of the && is false, that is enough to know the whole expression is false.
Once you have it going, you can customize it: