you will have to demonstrate a useful application of the techniques listed below and learned during the course
Basic Techniques
Encapsulation / Information Hiding
Overloading / Constructors
Static Methods and Static Variables
Mutable and Immutable Classes
Inner Classes
Interfaces / Abstract Classes
Inheritance
Polymorphism
Generics
Swing / GUI / Event-Driven Programming
Array and ArrayList / Collections
Exceptions and File I/O
Advanced Techniques
Recursion
Model View Controller (MVC)
Functional Programming
Multithreading
Networking and Sockets
SNAKE GAME
the game has a START button that starts the game (at the beginning or after the end of previous round)
the game has a snake that is a chain of segments that follow each other
the snake moves by itself in one of 4 directions: North, East, South, and WEST
arrow keys change the direction of the snake
there are random elements (different types at random locations) that snake should eat "food" or avoid "poison" (the number of them could be set in your source code constants); different types of elements should look different
if the snake eats an element it grows 1 to 3 segments, if it hits an element to avoid the snake dies
you win if there is nothing eatable left, you loose if you hit a "poison", or boundary, or reverse the direction 180 degrees
the score is the size of the snake
you should remember high score
ADVANCED: upon a win, you present a new and more challenging board and the game continues after a nice and short message
ADVANCED: you can connect to another player over the network and then you can play against each other (game rules are yours to define)