In my AP Computer Science class, one student has been working overtime on a pet project of his that deals with cryptography. Watching his project evolve over time made me assign a project (of their choosing) to all my students. Not wanting to be left out, I decided to join in with my own Java case study project: converting the 1972 Avalon Hill game Football Strategy to a computer version.
Football Strategy was a great game. Luck played a very small role in the game and both teams were equal and ... generic. The game was not like most football simulations like the Statis Pro games or even Paydirt, which attempted to reproduce the results of a real NFL season, statistically basing it on the real NFL results. No, Paydirt ignored that and instead based the game entirely on your playcalling and your opponnent's playcalling, resolving each play by cross referencing your choices on an ingenius 10 by 22 matrix. If you thought your opponent would call a long pass, you could call the appropriate defense to stop him cold. However, if he suspeced you would call that defence, he may instead call something like an End Run and bite off a big chunk of yards. So...do you stick to the long pass defence or switch to a spread defense--or choose something else entirely? That's what made the game so fun.
Without an opponent, though, Football Strategy was a real bore. For solitaire play I prefered Paydirt. In fact, I'm still finding on the net some old text files I wrote describing the AI solo play system I developed for Paydirt. Yes, I was a lonely boy.... :-)
Anyway, the goal is to write up a good version of Football Strategy in Java. The focus on OOP will allow me to develop the game through time, having the AI Coaches evolve to get better and better. That would have been nearly impossible in the past, when Football Strategy was just a paper and dice game.