1.1-The purpose of the Revenge of
Birds
1.2.2 Functionality and Performance
2. Proposed software architecture
2.3 Persistent data management
2.4 Access control and security
In “The revenge
of the birds” the mission is about killing all the birds with flu, which have
attacked to the earth. The player should prevent the invasion of the world by
these birds with flue. Some of the birds are flying towards the earth and some
of them are on the ground. Killing the birds brings extra points and some
bonuses like machines; cure kit and energy pack to the player. By these bonuses
it gets easier for the player to complete the mission. At the end of the levels
there is a more challenging mission that a big infected bird, which is the
strongest of all other birds, attacking to world shoul, be killed. After
killing this bird the player passes to the other level. When the earth is saved
and purified from the infected birds than the mission is successfully
completed.
“The
Revenge of the Birds” will be designed to be a single player game. And during
the design we will try to three goals:
The main
goal of our system is to create a system that is easy to use for the players.
the interfaces and the system should be so clear that the player should not
need any external help to play the game so that the game would be enjoyable.
Also the system gives some options like save and load game. These options
should be handled in such a way that the player should not have a complexity to
use these options.
Another
goal of our design is to support functionality and performance in our system.
The system should be as fast as it can be since in the game there are several
objects in the game that are constantly moving and changing directions fast. If
the speed of the system cannot be handled appropriately then the resulting
project should not be as functional as it is expected to be. First of all the
game “The Revenge of the Birds” would not be enjoyable with a lower speed and
this is the most important thing in the marketing of a game.
A good
documentation is necessary for a projects design phase as it is also important
in all other phases. By the help of a good documentation the implementation
phase gets easier and it leads to better and more effective implementation.
Java is a
portable Object-Oriented Programming language and all members of our group are
able to use Java. Since java is a portable language it can be executed on any
platform with JVM.
Also Java
language has a large supporting class libraries and it has simple syntax. Also
java supports multithreading and in our program we need to use multithreads.
And writing multithreaded programs is much easier in Java.
Another
advantage of the Java language is; just-in-time compilers and advanced memory
management makes Java programs faster.
Since we
have decided use Java language as our implementation language, we use Java
classes when appropriate to simplify the design details.
Purposed
software is a single-game having numerous object interactions. Therefore, we aimed to design the game in a way
that provides lowest coupling without making implementation harder.
We propose
two packages for our software: GUI and GameComponents. GUI classes are
responsible for user interface and GameComponents classes are GUI-independent
representations of the game objects.
As
dependency details is shown in Figure 1, only a few classes from different
packages depends on each other. During
game, main interaction between packages occurs between PlayFrame, GUI class of
game play, and GameEngine, main sychronizer class of game objects. In each
interval, GameEngine triggers PlayFrame to draw its objects.
Load and
save operations are made by SaveLoadManager class. Therefore, related GUI
classes (LoadGamePanel, load operation GUI panel, and InGamePanel, paused game
menu panel which provides save operation) depends on SaveLoadManager.
Moreover,
SettingsPanel changes static music/sound level attributes of SoundEngine and
static game speed attribute of GameEngine. Thus, SettingPanel depends on those
two objects.

Figure 1. Package Diagram of the System.
Although
during the rest of the report serialization interface relation is not shown to
reduce the complexity. However, during
implementation, all non-abstract classes should implement java’s Serializable
interface.
Since
requirements report does not state any security restriction and does not
include user account management facilities, there are no user access restrictions
in the software.
In this
section we provide detailed design of the classes and explain the
considerations behind the design.
This
package has all the GUI-independent game classes storing game play data and
providing game play operations. In Figure 2, associations and hierarchy among
objects in the package are presented. Since we believe that in analysis phase
we have stated enough sequence diagram related to this package classes, we do
not provide any further sequence diagram in the section.

Figure 2. Classes in GameComponents Package
In Figure
3, attributes and operations in classes of package GUI are presented.

Figure 3. Classes in GUI Package
GUIManager
class organizes the shown menus in the main menu screen and itself is a Jframe used
to show related panels as a window. According to user clicks in the main
screen, GUIManager sets the relevant panel visible. If game is to be started,
it hides itself and sets a new PlayFrame object as the current frame.
Therefore, it uses almost all other classes in the package.
All of
these panels are the parts of the main menus as described in requirements
report. According to the requirements
specifications, we stated the required swing components required, briefly.

Figure 4. Recep changes settings
In Figure
4, a sequence diagram is given to present the set of operations to open
settings panel and change options.