In this project, you will create a useful program with Java. Subject to a few requirements, you can do whatever you like, although there are a few suggestions below if you have trouble coming up with something on your own.
Write a Java application. Your program can do anything you like, except TicTacToe, subject to the following requirements:
Main
Feel free to use the Java 21 API as a reference for any piece of Java you might need; you are not restricted to only things we have covered in class. You may incorporate any code you wish from previous projects, but the majority of your project should be new code.
To help you make progress on your project, you will need to submit a design idea via email on or before February 13th. This design idea should be at least two sentences, discussing your plan for the project. You will receive feedback and approval of your design idea within 1 day.
Here are a few suggestions to get you thinking, if you need them. Even if you choose one of these suggestions, you do not have to do it exactly as described (in fact, you shouldn’t!).
Nim. Write a program to play the game of Nim (either human vs. human, or human vs. computer). This classic game starts with some number of piles of (counters, coins, beans, whatever). On your turn you must choose one of the remaining piles, and take anywhere from one counter up to all the counters in that pile. However, you may only take counters from a single pile on each turn. The winner is whoever takes the very last counter. Here is what part of an imaginary run of your program might look like:
A *** (3) B ******* (7) C * (1) D (0) E **** (4) Your move? A5 You can't take that many counters from pile A! Try again. Your move? E3 A *** (3) B ******* (7) C * (1) D (0) E * (1)
Water Jugs. Reimplement the Water Jug game from CSCI 150 in Java.
Connect 4. Implement a classic grid-based two-player game such as Connect 4.
Game of Life or other cellular automaton. Implement the classic Game of Life, or some other cellular automaton.
As a reminder:
Submit a zip file via Teams containing
To receive Level 1 Credit for this project, your project must
To receive Level 2 Credit for this project, the project must,
In addition to the above specifications, you must schedule a one-on-one meeting with me to discuss your app. In this meeting, I will be asking you to explain your coding decisions and make a modification to your code base. If your explanation or code modification is not completed satisfactorily, this project will remain Level 1. This meeting requirement can be reattempted two more times before the grade of Level 1 is permanent.