Held Monday, February 14, 2000
Overview
Today, we consider the overall architecture of our
Othello game.
Notes
- I've rearranged the schedule for this week slightly.
- The version of ``When Things Go Wrong'' that I was thinking of
is by Robin Lane and the Chartbusters, a great Boston band of the
late 70's/early 80's (Ms. Lane still records as a solo artist).
The single was in the
Village Voice top singles list of 1979. It also made it to
87 on the Billboard charts.
- Are there questions on exam 1?
- I've updated
Fraction.java
so that it contains a toString
method.
- I tried to bring in my copy of Othello, but it seems to have
disappeared. The local WalMart doesn't carry it. I'll keep
trying.
- Assignments:
- Read Lab G2 for Tuesday.
- Decide on your project team (3 or 4 people per team) for Wednesday.
- You should also indicate which subprojects you'd prefer to work
on. (I'll decide who works on what subproject, but I will pay
some attention to your preferences.)
- To encourage you to work with different students, I will require
that homework groups not overlap project groups. That is, if you
work with someone on the project, you can't work with him or her
on group homework assignments.
Contents
Summary
- Discussion:
- Project components and architecture
- Working in a team
- Selecting components
- Before we move on to designing our othello implementation
we need to consider some requirements that I'm putting on
the implementation.
- We may also want to decide whether the class has additional
issues it wants to consider.
- We should supply at least two interfaces: one textual and
one graphical.
- Our Othello should permit two players to play against each
other.
- Our Othello should permit one player to play against the
computer.
- Our AI routine need not be very sophisticated.
- Our Othello might also permit someone to watch two computer
players play against each other.
- Do we want to allow networked play?
- Our design should be sufficiently segmented that each
project team will have a reasonable-size part to work on.
- Our design should be sufficiently general that it is possible
to change particular aspects of the game
- What objects and classes do you envision?
- How will they communicate?
- Are there times that we can take advantage of subclassing
and inheritance?
- It would be nice if we designed a somewhat general
Othello game so that players can introduce variant
rules and such.
- Of course, any AI routine that we build is unlikely to
do well with variants.
- Here are some variants we might consider:
- Different size boards (or different shape boards)
- More than two players
- Different kinds of moves
- Different kinds of pieces
- Time restrictions
- Video-game like components
- (Can you tell that I like more chaotic games?)
- Of course, each variant must be considered carefully.
- Consider the multi-player game:
- What are legal moves? Can you surround different color pieces,
or only one color?
- What does it mean to ``flip'' a piece?
- I'll work on a list of variants. Send me suggestions.