AP CS Summer Assignment
You should review the AP CS Skills Intro for the purpose of this assignment and collaboration rules.
You can do this assignment at any time in the summer. Unlike a math class, I do not believe it will be better to do the work in August near when school starts. Spend some time on it and make something good.
Project Description
You have two choices: Reversi (Othello) or Checkers.
Reversi
Write the two player board game known as Reversi or Othello. I will refer to this game as “Reversi” since that is the older, non-trademarked name, but the rules I have in mind are the modern rules for Othello.
Follow the initial setup and rules as described for Othello in the Wikipedia page.
I have written up details about writing Reversi, including all of the parts that I found particularly troublesome. Consult it if you need help. Here is a short demo video of how Reversi could work.
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vAWcwxsJyTo?autoplay=0&controls=1&end=0&loop=0&mute=0&start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
></iframe>
</div>
Checkers
You almost certainly know the game of checkers. There is guidance for the board and basic motion as well as how to only allow legal moves (question 3).
Lights Out (2021-2022)
You can play Lights Out online. The Wikipedia page has lights out rules.
This game is easier to program than Reversi, so I am leaving you with fewer (no) details.
Exceptions
Write the game in any language that you know. A text-based user interface is perfectly acceptable. If you know Racket, it should be easy to write a graphical interface.
You may choose a different project, just review the list of skills linked at the start of the document.
Notes
My favorite advanced tools in Racket: struct-copy
, for/fold
,
and match
. Check the Racket Guide.