SlideShare a Scribd company logo
1 of 51
Java Help/a4.pdf
ASSIGNMENT 4 : A game and an email system
COMP-202, Winter 2014, All Sections
Due: Tuesday, 25th of March, 2014, 23:59
Please read the entire pdf before starting.
You must do this assignment individually and, unless otherwise
specified, you must follow all the general
instructions and regulations for assignments. Graders have the
discretion to deduct up to 10% of the value
of this assignment for deviations from the general instructions
and regulations.
Part 1: 0 points
Part 2a: Question 1: 25 points
Part 2b, Question 1: 10 points
Part 2b, Question 2: 25 points
Part 2b, Question 3: 5 points
Part 2b, Question 4: 10 points
Part 2b, Question 5: 15 points
Part 2c, Question 1: 10 points
100 points total
It is very important that you follow the directions as closely as
possible. The directions, while
perhaps tedious, are designed to make it as easy as possible for
the TAs to mark the assignments by letting
them run your assignment through automated tests. While these
tests will not determine your entire grade, it
will speed up the process significantly, which will allow the
TAs to provide better feedback and not waste time
on administrative details. Plus, if the TA is in a good mood
while he or she is grading, then that increases
the chance of them giving out partial marks. Marks can be
removed if comments are missing, if the code is
not well structured, and if the problems your solution does not
respect the assignment requirement.
Part 1 (0 points): Warm-up
Do NOT submit this part, as it will not be graded. However,
doing these exercises might help you to do the
second part of the assignment, which will be graded. If you
have difficulties with the questions of Part 1, then
we suggest that you consult the TAs during their office hours;
they can help you and work with you through
the warm-up questions.
Warm-up Question 1 (0 points)
Write a class Vector. A Vector should consist of three private
properties of type double: x,y, and z.
You should add to your class a constructor which takes as input
3 doubles. These doubles should be
assigned to x,y, and z. You should then write methods getX(),
getY(), getZ(), setX(), setY(), and
setZ() which allow you to get and set the values of the vector.
Warm-up Question 2 (0 points)
Add to your Vector class a method calculateMagnitude() which
returns a double representing the
magnitude of the vector. The magnitude can be computed by
taking√
x2 + y2 + z2
1
Warm-up Question 3 (0 points)
Write a method scalarMultiply which takes as input a double[],
and a double scale, and returns
void. The method should modify the input array by multiplying
each value in the array by scale.
Question to consider: Would this approach work if we had a
double as input instead of a double[]?
Warm-up Question 4 (0 points)
Write a method deleteElement which takes as input an int[] and
an int target and deletes all
occurrences of target from the array. The method should return
the new int[]. Question to consider:
Why is it that we have to return an array and can’t simply
change the input parameter array?
Warm-up Question 5 (0 points)
Write the same method, except this time it should take as input
a String[] and a String. What is
different about this than the previous method? (Hint: Remember
that String is a reference type.)
Part 2
The questions in this part of the assignment will be graded.
There are two parts to this assignment. In part one, you will
write a little two-player game. In the second
part, you will write a very simple email system.
The focus of the questions is on how to structure a more
complex model, how to represent complex data,
and how the different classes you are going to create interact
with each other. There will not be any
complex algorithm that you have to design and implement,
except of some array manipulation in the second
questions.
The descriptions are not very detailed, and this is on purpose.
We want to leave some of the design choices
to you.
Part 2a
Assume the following 2-player game which is played in rounds
and has some similarity to a card game where
two players each pick a card and the player with the larger card
wins.
In each round, each player picks two numbers: a base number
and a tie number. Each of the numbers must
be between 0 and a given max. (e.g., the base number can be a
0, 1, 2 or 3, and the tie number can be 0
or 1). The player who has chosen the bigger base number wins
the round. In case of a tie, i.e. both players
have chosen the same base number, the one who has the bigger
tie number wins the round. If this one is
also tied, there is no winner in this round.
At the start of the game (before the first round), each player has
a fixed budget for the game numbers and
a fixed budget for the tie numbers. In each round, the budgets
are reduced according to the numbers the
player has chosen. In any round, a player can choose only
numbers that are smaller or equal to the budget
the player has left. The game finishes, once both players have
used up the budgets for both their base
number and their tie number. The player who has won the most
rounds has won.
Let’s look at an example. Assume the budget for base numbers
is 5, and the budget for tie numbers is 2
at the beginning of the game. Assume players can choose as
base numbers 0,1,2,3 and as tie numbers 0 or
1.
• Round 1
– p1 chooses base number b = 2 and tie number t = 0. p2
chooses b = 1 and t = 1.
– p1 wins the round because its base number is higher than p2’s
base number
– p1’s base budget after the round is 3, and the tie budget is 2
Page 2
– p2’s base budget after the round is 4, and the tie budget is 1
• Round 2
– p1 chooses b = 2 and t = 1, p2 chooses b = 3 and t = 0.
– p2 wins the round because its base number is higher than p1’s
base number
– p1’s base budget after the round is 1, and the tie budget is 1
– p2’s base budget after the round is 1, and the tie budget is 1
• Round 3
– p1 chooses b = 2 and t = 0, p2 chooses b = 1 and t = 1.
– p1’s base budget is only 1, so the system will automatically
reduce the bid from b = 2 to b = 1
(the maximum that is still available).
– p2 wins the round. Both have the same base number, but p2’s
tie number is higher than p1’s tie
number.
– p1’s base budget after the round is 0, and the tie budget is 1
– p2’s base budget after the round is 0, and the tie budget is 0
• Round 4: Although p2 has no budget left, the game still
continues as p1 still has some budget left
– p1 chooses b = 0 and t = 1, p2 can choose whatever it likes,
the system will automatically set it
to b = 0 and t = 0 because p2 has used up all the available
budget.
– p1 wins. Both base numbers are 0, but p1 has a higher tie
number than p2.
– All budgets are now 0.
• The game ends because all budgets are depleted. Overall the
game is a tie, because both have won 2
rounds.
In this assignment, you have to implement a class Player that
maintains most of the state needed to play
the game as well as some of the game semantics.
Question 1: Player Class (30 points)
The Player Class has the following private properties:
• baseBudget: the budget to be used for base numbers
• tieBudget: the budget used for tie numbers
• lastBase: the base number that the player chose last
• lastTie: the tie number that the player chose last
• wins: the number of rounds the player has won
The Player Class has the following public methods:
• A constructor Player (int b, int t) initializes the baseBudget
and the tieBudget according
to the values of the input parameters, and the other properties to
0.
• void playRound(int base, int tie): base and tie are the numbers
the player has chosen for
that round. Thus, the method should keep track of these values
by assigning them to lastBase and
lastTie, and also accordingly reduce the baseBudget and
tieBudget. However, both baseBudget
and tieBudget may not go below 0. Thus, if base or tie is bigger
than the corresponding budget,
we have to adjust it so that it is equal to the budget before we
modify the object properties.
• boolean canStillPlay() returns true if at least one of the
budgets is bigger than zero.
Page 3
• int compare(Player p) checks who has won the last round. For
instance, assume player variables
p1 and p2. If we make a call p1.compare(p2), the compare
method should do the following. It
compares the properties lastBase and lastTie of both players.
The one with the bigger lastBase
wins. If they are equal, the one with the bigger lastTie wins. If
both values are equal, nobody
wins. The method returns 1 if player p1, that is, the player on
which the method is called, wins.
It returns -1 if p2, that is, the player that was given as input
parameter, wins. It returns 0 in the
case that nobody wins.
• void win() increases the wins property by one.
• int getWins() returns the number of wins.
• String toString returns the properties of the object in a nice
String format. That is useful for
debugging. Using that method, you can print the object at any
time to make sure the properties
are always set correctly.
On myCourses, together with the assignment description you
can find a Game.java. This file implements
the game using the player data type to maintain and manipulate
most of the data. This file will help
you see how the methods of Player are used. It will also help
you debug your system. Game.java
automatically maintains one of the players. The other player is
you running the program.
Part 2b: An email system
You will implement a simplified email system. The email
system has users. A registered user can send an
email to another registered user (or to somebody else, but then
the email will disappear to nowhere...). The
system keeps track of all messages sent among users.
For this assignment, you will write several classes and use
object oriented programming to build up the email
system. In general, you may NOT add extra public methods or
properties to any of the classes. If you
want to add extra methods or properties, you should make them
private.
Please note that for this assignment you MAY NOT use
ArrayList, or any other form of sets or lists that
you might be familiar with. As described below, you always
have to use arrays whenever you have to keep
track of multiple elements.
Question 1: Message class (10 points)
In this question, you will define a type Message that represents
an email message.
A Message object should have the following properties
(attributes): sender, receiver, subject and
body. Furthermore, it should have at least the following public
methods:
• A constructor that has as four input arguments, one for each of
the properties, and which sets the
properties to the given input values.
• toString returns the properties of the message in a proper
format suitable for printing.
• A set of getter (observer) methods (getSender, getReceiver,
...) to get the value of the individual
attributes.
• Once an attribute is set through the constructor, it should not
be changed anymore by the calling
class. This can be achieved by having no setter methods, and by
making the properties private.
(Encapsulation).
Question 2: Mailbox class (30 points)
In this question, you will write a class Mailbox. The point of
this class is to keep track of a set of
messages. Internally, a mailbox object will maintain an array
that holds all these messages. As the
mailbox system allows each user only to have a maximum
number of messages in a mailbox, the array
Page 4
will have a fixed size. However, once the mailbox is full,
instead of disallowing any further operations,
the mailbox will discard old messages in order to make space
for new ones.
A Mailbox needs to have at least the following property:
• private Message[] mb : This is an array with a certain size
dictated by the class that creates the
mailbox.
Furthermore, the system has to keep track of how large the
array is and how many messages are currently
stored in the array (or in which slot of the array you would put
the next message). Think about which
properties you might need to store such information.
You should have the following public methods.
• public Mailbox(int size) that takes as the size of the message
array and creates an array of the
corresponding size.
• A method void addMsg(Message m). This method takes a
message as input and adds it to the
next free element in the array. If the array is full, the oldest
message should be removed. In this
case, one possibility to maintain the array in proper order is to
shift all elements in the array
appropriately (message in slot 1 is moved to slot 0, message in
slot 2 is moved to slot 1, etc. and
the new message is added to the last slot). You can do such a
shift one by one or by using the
System.arraycopy method. Alternatively, you simply put the
new message into the slot currently
occupied by the oldest message. The latter case avoids a lot of
shifting around in the array. On
the other hand, you have to make sure that you keep track of
where the oldest message is.
• A method viewMailbox that does a pretty print of the
messages in the mailbox indicated in the
example below:
Viewing mailbox with 3 messages:
No Sender Receiver Subject
1 Alice Xi great weather
2 Alice Sandra nothing new
3 Alice Peter my third message
In particular, messages are shown in the order they were added
to the mailbox (oldest first). In
each line, the first column provides a consecutive number. The
second column presents the sender,
the third the receiver, and the last column the subject.
The Sender, Receiver and Subject columns should all always be
of a specific width. For this
assignment, sender and receiver columns should have a max
width of 20 and the subject of 30.
Keep track of these values in variables that are final. If the
sender/receiver/subject values of
a message are longer than these predefined values, they should
be cut accordingly to fit in the
predefined space. (You might want to delegate the padding (in
case a value is shorter than the
predefined 20/30), or the cutting (in case it is longer) to some
helper method.
• A method printMailboxMsg has as input the number of a
message as shown by the viewMailbox
method (described above) and prints the corresponding message.
If there is no such message a
corresponding note should be printed.
• A method removeMailboxMsg takes as input the number of a
message as shown by the viewMailbox
method and removes the corresponding message, shifting all
other messages accordingly in the array.
If there is no such message a corresponding note should be
printed.
If you create any ”helper” methods to further split up your code
and avoid redundant code, then these
messages should not be callable from other classes.
Question 3: User Class (5 points)
In this question, you will define a type User that represents a
user of the mailbox system.
Page 5
The user class has properties username, and two mailboxes, one
is an inbox for messages to be received
by the user, and an outbox that keeps the last messages the user
has sent.
The class has only a single constructor, that takes the user name
and the mailbox maximum size as
input and initializes all properties accordingly. Otherwise, this
class should make the properties directly
accessible from other classes (by making them public). No
getter or setter methods are thus needed.
Note that making attributes directly accessible from other
classes (by making them public) is only
recommended for very simple classes like this one, where no
additional methods are associated with the
class but the class really only represents a new data type.
Question 4: UserList Class (10 points)
This class should maintain an array of users as property. In
principle, the system wants to allow arbitrary
many users. Thus, choosing the right array size is a challenge.
Therefore, the idea is to create an array
with an initial, fairly small size. Then, if there are more users
than fit in the array, we create a new,
larger array on the fly. Note that as with the mailboxes, at the
beginning not all elements of the arrays
are filled with users. Thus, at any time, we have to keep track of
the size of the current array as well as
the number of users in that array.
Methods:
• The Constructor initializes the array with a size of 2. (No
users yet in the array).
• A method findUser takes as input a string username and looks
whether the user array contains a
user that has this name. If yes, the user is returned, otherwise
null is returned.
• A method addUser takes as input a user. If a user with that
name already exists in the array, then
an according message should be printed and the user not be
added. Otherwise, the user should be
added to the array (first free element). If the array is full, the
array size should be doubled. For
that, a new array has to be created of the according size, the
users from the old array copied and
array variables accordingly reassigned so that they refer to the
bigger array. Note that we always
have to keep track of how many users are currently in the array.
Question 5: MailboxSystem Class (15 points)
You have already a rudimentary class MailboxSystem given on
MyCourses. This class provides a (very
simple) interface to the user. It maintains a list of users as static
global variable in which all users are
maintained. It has a main method that offers the main menu of
the system, a method handleUser that
handles the menu once a user has logged in, and an auxiliary
method transform that makes sure that
input from the keyboard does not mess up the system.
Within this code, you have to add functionality. Whenever you
find a comment that starts with
/* TODO .... */
you have to add code that does what the TODO line indicates.
Note that at the end of this specification, you have the output of
some execution of the system. This
might give you a better idea of how this should work.
Part 2c
Question 1: Variable and Method Declarations (10 points)
Below find 3 class definitions whose variable declarations,
property declarations and method declarations
are incomplete. You have to correct the lines that are marked
with a comment (// line x). Write each
of the lines into a file Part2c.txt, one line for each line to be
corrected (and in the proper order). Things
to consider are the date type, whether public or private, whether
static or not static, return type, data
type of the input parameters, etc.
Page 6
public class ASimpleType
{
int att1; // line 1
String att2; // line 2
}
public AMoreComplexType
{
int att1; // line 3
int att2; // line 4
AMoreComplexType (... a1, ... a2) // line 5
{
att1 = a1;
att2 = a2;
}
getAtt1() // line 6
{
return att1;
}
getAtt2() // line 7
{
return att2;
}
increaseCalculation() // line 8
{
att1 = att1 * 2;
att2 = att2 + att1;
}
}
public UseMyObjects
{
public static main void (String[] args)
{
x = 1; // line 9
ASimpleType o1 = new ASimpleType();
AMoreComplexType o2 = new AMoreComplexType(2, x);
o1.att1 = x;
o1.att2 = "A String";
o2.increaseCalculation();
x = o2.getatt1;
System.out.println(aFunManipulation(o1, x));
}
aFunManipulation( ...a, .... b ) // line 10
{
int x = a.att1 + b;
String s = "The result is " + x;
return s;
}
}
Page 7
What To Submit
You should submit your assignment on MyCourses. In order to
do this, you will need to make a zip of the
file. You can do this on windows by following the instructions
at this link: http://condor.depaul.edu/
slytinen/instructions/zip.html. On a mac or linux, you can find
instructions at http://osxdaily.
com/2012/01/10/how-to-zip-files-in-mac-os-x/
You should submit a zip file called Assignment4.zip with the
following files inside of it.
Player.java
Message.java
Mailbox.java
User.java
UserList.java
MailboxSystem.java
Part2c.txt
Confession.txt (optional but strongly recommended) In this file,
you can tell the TA about
any issues you ran into doing this assignment. If you point out
an error that you know occurs
in your problem, it may lead the TA to give you more partial
credit. On the other hand, it also
may lead the TA to notice something that otherwise he or she
would not. You should include a
description of what you tried to fix the problem, what part of
code you think it occurs in, etc.
Marking Scheme
Up to 30% can be removed for bad indentation of your code as
well as omitting comments, coding struc-
ture, or missing files. Marks will be removed as well if the class
names and other requirements are not
respected.
Part 2a: Question 1
each method except of win and getWins 4 (20) points
win and getWins each 2.5 (5) points
25 points
Part 2b: Question 1
properties/constructor and toString each 3 (6) points
getter (observer) and setter (modifier) methods 4 points
10 points
Part 2b: Question 2
properties and constructor 3 points
addMsg 5 points
viewMailbox 10 points
printMailboxMsg 2 points
removeMailboxMsg 5 points
25 points
Part 2b: Question 3
all 5 points
5 points
Part 2b: Question 4
properties and constructor 3 points
findUser 3 points
addUser 4 points
10 points
Page 8
Part 2b: Question 5
all together 15 points
15 points
Part 2c: Question 1
each line 1 point
10 points
Page 9
Example Execution Mailbox System
The following is a run with having mailboxes of size 3 and the
initial user array of size 2.
> run MailboxSystem
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 1
Name of the User:
>Alice
User Created
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
> Bob
User can’t be found.
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 1
Name of the User:
> Bob
User Created
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 1
Name of the User:
> Xue
User Created
Page 10
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
Alice
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 3
Receiver:
> Bob
Subject:
> first message
One line msg body:
> blub
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 3
Receiver:
> Bob
Subject:
> second message
One line msg body:
...
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
Page 11
7: Logout:
> 3
Receiver:
> Bob
Subject:
> 3rd message
One line msg body:
> here it goes
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 3
Receiver:
> another one
Subject:
> s1
One line msg body:
> m1
Mailbox full; remove oldest message
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 2
Viewing mailbox with 3 msg
No Sender Receiver Subject
1 Alice Bob second message
2 Alice Bob 3rd message
3 Alice another one s1
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Page 12
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
> Bob
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 1
Viewing mailbox with 3 msg
No Sender Receiver Subject
1 Alice Bob first message
2 Alice Bob second message
3 Alice Bob 3rd message
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 6
Message Number in Inbox to be removed
> 2
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 1
Viewing mailbox with 2 msg
No Sender Receiver Subject
1 Alice Bob first message
2 Alice Bob 3rd message
Page 13
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
> Xue
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 3
Receiver:
> Bob
Subject:
> different senders
One line msg body:
> ...
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Page 14
Name of the User:
> Bob
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 1
Viewing mailbox with 3 msg
No Sender Receiver Subject
1 Alice Bob first message
2 Alice Bob 3rd message
3 Xue Bob different senders
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
> Xue
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 3
Receiver:
> Bob
Subject:
> last one
One line msg body:
Page 15
> ...
Mailbox full; remove oldest message
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 2
Name of the User:
> Bob
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 1
Viewing mailbox with 3 msg
No Sender Receiver Subject
1 Alice Bob 3rd message
2 Xue Bob different senders
3 Xue Bob last one
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 4
Message Number in Inbox:
> 2
Sender: Xue
Receiver: Bob
Subject: different senders
Page 16
Message: ...
User Menu Options:
------------------
1: View your inbox:
2: View your outbox:
3: Send a message:
4: View specific inbox message
5: View specific output message
6: Remove specific inbox message
7: Logout:
> 7
Main Menu Options:
-------------
1: Create a user
2: Login
3: Exit
> 3
Exit
>
Page 17
Java Help/Game.javaJava Help/Game.javaimport java.util.*;
publicclassGame
{
// needed to get input from the player
staticScanner sc =newScanner(System.in);
// game specific values
staticfinalint baseBudget =10;
staticfinalint tieBudget =3;
staticfinalint baseMax =3;
staticfinalint tieMax =1;
publicstaticvoid main (String args[])
{
// p1 and p2 will play against each other
Player p1 =newPlayer(baseBudget, tieBudget);
Player p2 =newPlayer(baseBudget, tieBudget);
int base, tie;// numbers played in this round
int playResult;
Random r =newRandom();// for the computer generated player
System.out.println("Welcome: you have a base budget of "+ bas
eBudget +
" and a tie budget of "+ tieBudget);
while(p1.canStillPlay()|| p2.canStillPlay())
{
System.out.println("Indicate your base number between 0 and "
+ baseMax);
base = sc.nextInt();
sc.nextLine();
System.out.println("Indicate your tie number between 0 and "+ t
ieMax);
tie = sc.nextInt();
sc.nextLine();
if((base <0|| base > baseMax ||
tie <0|| tie > tieMax))
{
System.out.println("Wrong input");
}
else
{
// play for the user
p1.playRound(base, tie);
// now play for the computer
base = r.nextInt(baseMax+1);
tie = r.nextInt(tieMax+1);
p2.playRound(base, tie);
System.out.println("You: "+ p1.toString());
System.out.println("Computer: "+ p2.toString());
// check the win
playResult = p1.compare(p2);
if(playResult ==1)
{
p1.win();
System.out.println("You won this round");
}
elseif(playResult ==-1)
{
p2.win();
System.out.println("You loose this round");
}
else
{
System.out.println("It's a tie");
}
}
}
System.out.println("Game over");
System.out.println("You have numer of wins: "+ p1.getWins());
System.out.println("Your opponent has number of wins: "+ p2.g
etWins());
if(p1.getWins()> p2.getWins())
System.out.println("You are the winner");
elseif(p1.getWins()< p2.getWins())
System.out.println("You are the looser");
else
System.out.println("It's a tied game");
}
}
Java Help/MailboxSystem.javaJava
Help/MailboxSystem.javapublicclassMailboxSystem
{
publicstaticfinalintMailboxSize=3;// for easier debugging, this s
ystem supports mailboxes with up to 3 messages
publicstaticUserlist emailUsers =newUserlist();// the list of regi
stered users
// we need that one all the time...
publicstatic java.util.Scanner sc =new java.util.Scanner(System.
in);
publicstaticvoid main (String args[])
{
while(true)
{
System.out.println("nMain Menu Options:");
System.out.println("-------------");
System.out.println("1: Create a user");
System.out.println("2: Login");
System.out.println("3: Exit");
String inputString = sc.nextLine();
int input = transform(inputString,4);// make sure input is readab
le
if(input ==1)
{
// read name of user to be created
System.out.println("Name of the User:");
String username = sc.nextLine();
/* TODO: check whether user exists, if not create user and add t
o the emailUser List */
}
elseif(input ==2)
{
// read name of user to be logged in
System.out.println("Name of the User:");
String username = sc.nextLine();
User u = emailUsers.findUser(username);
if(u ==null)
System.out.println("User can't be found.");
else
handleUser(u);
}
elseif(input ==3)
{
System.out.println("Exit");
return;
}
}
}
// User menu
publicstaticvoid handleUser (User u)
{
while(true)
{
System.out.println("n User Menu Options:");
System.out.println("------------------");
System.out.println("1: View your inbox:");
System.out.println("2: View your outbox:");
System.out.println("3: Send a message:");
System.out.println("4: View specific inbox message");
System.out.println("5: View specific output message");
System.out.println("6: Remove specific inbox message");
System.out.println("7: logout:");
String inputString = sc.nextLine();
int input = transform(inputString,8);
int msgn;
switch(input)
{
case1:
u.inbox.viewMailbox();
break;
case2:
/* TODO: make according call to view outbox mailbox */
break;
case3:
System.out.println("Receiver: ");
String receiver = sc.nextLine();
System.out.println("Subject: ");
String subject = sc.nextLine();
System.out.println("One line msg body: ");
String body = sc.nextLine();
/* TODO: create message, add it to user's outbox, and if the rec
eiver is also a user with the
* very same email system, then add the messages to the r
eceiver's inbox (if the receiver is not
* a registered user, then the email should still be added t
o the sender's outbox */
break;
case4:
System.out.println("Message Number in Inbox:");
msgn = sc.nextInt();
sc.nextLine();
/* TODO: make the proper call to print the message */
break;
case5:
System.out.println("Message Number in Outbox");
msgn = sc.nextInt();
sc.nextLine();
/* TODO: make the proper call to print the message */
break;
case6:
System.out.println("Message Number in Inbox to be deleted");
msgn = sc.nextInt();
sc.nextLine();
/* TODO: make the proper call to remove the message from the
mailbox */
break;
case7:
return;
default:
}
}
}
// just make sure that input has correct format; if not, transform
it into the exist number
publicstaticint transform(String inputstring,int other)
{
if(inputstring.length()!=1)
return other;
char c = inputstring.charAt(0);
if(c >48&& c <=48+ other)
returnCharacter.getNumericValue(c);
return other;
}
}
Java Help/Player.javaJava
Help/Player.javaimport java.util.Scanner;
publicclassPlayer
{
privateint baseBudget;
privateint tieBudget;
privateint lastBase =0;
privateint lastTie =0;
privateint wins =0;
//constructor (always public)
publicPlayer(int b,int t)
{
baseBudget = b;
tieBudget = t;
}
//keep track of base and tie values and update base and tie budg
ets
//make sure that base and tie budgets do not go below zero
// Need help ............................................................................
....
publicvoid playRound (int base,int tie)
//is at least one of the budgets greater than zero?
publicboolean canStillPlay(){
if(baseBudget >0|| tieBudget >0)
returntrue;
returnfalse;
}
//getter method for base
publicint getLastBase()
{
return lastBase;
}
//getter method for tie
publicint getLastTie()
{
return lastTie;
}
//check who has won the last round.... Is this correct?????
publicint compare(Player P){
if(getLastBase()> P.getLastBase())
System.out.println("Player 1 wins!");
elseif(P.getLastBase()> getLastBase())
System.out.println("Player 2 wins!");
elseif(getLastBase()== P.getLastBase()){
if(getLastTie > P.getLastTie)
System.out.println("Player 1 wins!");
else
System.out.println("Player 2 wins!");
}
}
//increase wins property by one
publicvoid win()
{
wins++;
}
//return the number of wins (getter method)
publicint getWins()
{
return wins;
}
//toString method
publicString toString()
{
return"Base budget is "+ baseBudget +"/n Tie Budget is "+ tieB
udget +"/n lastBase is "+ lastBase +"/n Last tie is "+ lastTie +"/
n Number of wins is "+ wins;
}

More Related Content

Similar to Java Helpa4.pdfASSIGNMENT 4 A game and an email system.docx

(7) Inquiry Lab - Add Integers
(7) Inquiry Lab - Add Integers(7) Inquiry Lab - Add Integers
(7) Inquiry Lab - Add Integerswzuri
 
Omp 220 complete class omp220
Omp 220 complete class omp220Omp 220 complete class omp220
Omp 220 complete class omp220arnitaetsitty
 
Little book of programming challenges
Little book of programming challengesLittle book of programming challenges
Little book of programming challengesysolanki78
 
ch05-program-logic-indefinite-loops.ppt
ch05-program-logic-indefinite-loops.pptch05-program-logic-indefinite-loops.ppt
ch05-program-logic-indefinite-loops.pptMahyuddin8
 
COMP 220 Entire Course NEW
COMP 220 Entire Course NEWCOMP 220 Entire Course NEW
COMP 220 Entire Course NEWshyamuopeight
 
Laquando Young Comp. Sci.pdf
Laquando Young Comp. Sci.pdfLaquando Young Comp. Sci.pdf
Laquando Young Comp. Sci.pdfIsaacRamdeen
 
GSP 215 RANK Become Exceptional--gsp215rank.com
GSP 215 RANK Become Exceptional--gsp215rank.comGSP 215 RANK Become Exceptional--gsp215rank.com
GSP 215 RANK Become Exceptional--gsp215rank.comclaric119
 
GSP 215 RANK Achievement Education--gsp215rank.com
GSP 215 RANK Achievement Education--gsp215rank.comGSP 215 RANK Achievement Education--gsp215rank.com
GSP 215 RANK Achievement Education--gsp215rank.comclaric169
 
Dee 2034 chapter 1 number and code system (Baia)
Dee 2034 chapter 1 number and code system (Baia)Dee 2034 chapter 1 number and code system (Baia)
Dee 2034 chapter 1 number and code system (Baia)SITI SABARIAH SALIHIN
 
DevLearn 2017 Play to Learn workshop slides
DevLearn 2017 Play to Learn workshop slidesDevLearn 2017 Play to Learn workshop slides
DevLearn 2017 Play to Learn workshop slidesSharon Boller
 

Similar to Java Helpa4.pdfASSIGNMENT 4 A game and an email system.docx (16)

Game theory
Game theoryGame theory
Game theory
 
(7) Inquiry Lab - Add Integers
(7) Inquiry Lab - Add Integers(7) Inquiry Lab - Add Integers
(7) Inquiry Lab - Add Integers
 
Omp 220 complete class omp220
Omp 220 complete class omp220Omp 220 complete class omp220
Omp 220 complete class omp220
 
Python in details
Python in detailsPython in details
Python in details
 
Control System Assignment Help
Control System Assignment HelpControl System Assignment Help
Control System Assignment Help
 
Little book of programming challenges
Little book of programming challengesLittle book of programming challenges
Little book of programming challenges
 
ch05-program-logic-indefinite-loops.ppt
ch05-program-logic-indefinite-loops.pptch05-program-logic-indefinite-loops.ppt
ch05-program-logic-indefinite-loops.ppt
 
Number_System .pdf
Number_System .pdfNumber_System .pdf
Number_System .pdf
 
COMP 220 Entire Course NEW
COMP 220 Entire Course NEWCOMP 220 Entire Course NEW
COMP 220 Entire Course NEW
 
Enar short course
Enar short courseEnar short course
Enar short course
 
Laquando Young Comp. Sci.pdf
Laquando Young Comp. Sci.pdfLaquando Young Comp. Sci.pdf
Laquando Young Comp. Sci.pdf
 
GSP 215 RANK Become Exceptional--gsp215rank.com
GSP 215 RANK Become Exceptional--gsp215rank.comGSP 215 RANK Become Exceptional--gsp215rank.com
GSP 215 RANK Become Exceptional--gsp215rank.com
 
GSP 215 RANK Achievement Education--gsp215rank.com
GSP 215 RANK Achievement Education--gsp215rank.comGSP 215 RANK Achievement Education--gsp215rank.com
GSP 215 RANK Achievement Education--gsp215rank.com
 
Dee 2034 chapter 1 number and code system (Baia)
Dee 2034 chapter 1 number and code system (Baia)Dee 2034 chapter 1 number and code system (Baia)
Dee 2034 chapter 1 number and code system (Baia)
 
DevLearn 2017 Play to Learn workshop slides
DevLearn 2017 Play to Learn workshop slidesDevLearn 2017 Play to Learn workshop slides
DevLearn 2017 Play to Learn workshop slides
 
Python Homework Help
Python Homework HelpPython Homework Help
Python Homework Help
 

More from priestmanmable

9©iStockphotoThinkstockPlanning for Material and Reso.docx
9©iStockphotoThinkstockPlanning for Material and Reso.docx9©iStockphotoThinkstockPlanning for Material and Reso.docx
9©iStockphotoThinkstockPlanning for Material and Reso.docxpriestmanmable
 
a 12 page paper on how individuals of color would be a more dominant.docx
a 12 page paper on how individuals of color would be a more dominant.docxa 12 page paper on how individuals of color would be a more dominant.docx
a 12 page paper on how individuals of color would be a more dominant.docxpriestmanmable
 
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docxpriestmanmable
 
92 Academic Journal Article Critique  Help with Journal Ar.docx
92 Academic Journal Article Critique  Help with Journal Ar.docx92 Academic Journal Article Critique  Help with Journal Ar.docx
92 Academic Journal Article Critique  Help with Journal Ar.docxpriestmanmable
 
A ) Society perspective90 year old female, Mrs. Ruth, from h.docx
A ) Society perspective90 year old female, Mrs. Ruth, from h.docxA ) Society perspective90 year old female, Mrs. Ruth, from h.docx
A ) Society perspective90 year old female, Mrs. Ruth, from h.docxpriestmanmable
 
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docxpriestmanmable
 
9 AssignmentAssignment Typologies of Sexual AssaultsT.docx
9 AssignmentAssignment Typologies of Sexual AssaultsT.docx9 AssignmentAssignment Typologies of Sexual AssaultsT.docx
9 AssignmentAssignment Typologies of Sexual AssaultsT.docxpriestmanmable
 
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docxpriestmanmable
 
900 BritishJournalofNursing,2013,Vol22,No15©2.docx
900 BritishJournalofNursing,2013,Vol22,No15©2.docx900 BritishJournalofNursing,2013,Vol22,No15©2.docx
900 BritishJournalofNursing,2013,Vol22,No15©2.docxpriestmanmable
 
9 Augustine Confessions (selections) Augustine of Hi.docx
9 Augustine Confessions (selections) Augustine of Hi.docx9 Augustine Confessions (selections) Augustine of Hi.docx
9 Augustine Confessions (selections) Augustine of Hi.docxpriestmanmable
 
8.3 Intercultural CommunicationLearning Objectives1. Define in.docx
8.3 Intercultural CommunicationLearning Objectives1. Define in.docx8.3 Intercultural CommunicationLearning Objectives1. Define in.docx
8.3 Intercultural CommunicationLearning Objectives1. Define in.docxpriestmanmable
 
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docxpriestmanmable
 
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docxpriestmanmable
 
800 Words 42-year-old man presents to ED with 2-day history .docx
800 Words 42-year-old man presents to ED with 2-day history .docx800 Words 42-year-old man presents to ED with 2-day history .docx
800 Words 42-year-old man presents to ED with 2-day history .docxpriestmanmable
 
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docxpriestmanmable
 
8.0 RESEARCH METHODS These guidelines address postgr.docx
8.0  RESEARCH METHODS  These guidelines address postgr.docx8.0  RESEARCH METHODS  These guidelines address postgr.docx
8.0 RESEARCH METHODS These guidelines address postgr.docxpriestmanmable
 
95People of AppalachianHeritageChapter 5KATHLEEN.docx
95People of AppalachianHeritageChapter 5KATHLEEN.docx95People of AppalachianHeritageChapter 5KATHLEEN.docx
95People of AppalachianHeritageChapter 5KATHLEEN.docxpriestmanmable
 
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docxpriestmanmable
 
8-10 slide Powerpoint The example company is Tesla.Instructions.docx
8-10 slide Powerpoint The example company is Tesla.Instructions.docx8-10 slide Powerpoint The example company is Tesla.Instructions.docx
8-10 slide Powerpoint The example company is Tesla.Instructions.docxpriestmanmable
 
8Network Security April 2020FEATUREAre your IT staf.docx
8Network Security  April 2020FEATUREAre your IT staf.docx8Network Security  April 2020FEATUREAre your IT staf.docx
8Network Security April 2020FEATUREAre your IT staf.docxpriestmanmable
 

More from priestmanmable (20)

9©iStockphotoThinkstockPlanning for Material and Reso.docx
9©iStockphotoThinkstockPlanning for Material and Reso.docx9©iStockphotoThinkstockPlanning for Material and Reso.docx
9©iStockphotoThinkstockPlanning for Material and Reso.docx
 
a 12 page paper on how individuals of color would be a more dominant.docx
a 12 page paper on how individuals of color would be a more dominant.docxa 12 page paper on how individuals of color would be a more dominant.docx
a 12 page paper on how individuals of color would be a more dominant.docx
 
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx
978-1-5386-6589-318$31.00 ©2018 IEEE COSO Framework for .docx
 
92 Academic Journal Article Critique  Help with Journal Ar.docx
92 Academic Journal Article Critique  Help with Journal Ar.docx92 Academic Journal Article Critique  Help with Journal Ar.docx
92 Academic Journal Article Critique  Help with Journal Ar.docx
 
A ) Society perspective90 year old female, Mrs. Ruth, from h.docx
A ) Society perspective90 year old female, Mrs. Ruth, from h.docxA ) Society perspective90 year old female, Mrs. Ruth, from h.docx
A ) Society perspective90 year old female, Mrs. Ruth, from h.docx
 
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx
9 dissuasion question Bartol, C. R., & Bartol, A. M. (2017)..docx
 
9 AssignmentAssignment Typologies of Sexual AssaultsT.docx
9 AssignmentAssignment Typologies of Sexual AssaultsT.docx9 AssignmentAssignment Typologies of Sexual AssaultsT.docx
9 AssignmentAssignment Typologies of Sexual AssaultsT.docx
 
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx
9 0 0 0 09 7 8 0 1 3 4 4 7 7 4 0 4ISBN-13 978-0-13-44.docx
 
900 BritishJournalofNursing,2013,Vol22,No15©2.docx
900 BritishJournalofNursing,2013,Vol22,No15©2.docx900 BritishJournalofNursing,2013,Vol22,No15©2.docx
900 BritishJournalofNursing,2013,Vol22,No15©2.docx
 
9 Augustine Confessions (selections) Augustine of Hi.docx
9 Augustine Confessions (selections) Augustine of Hi.docx9 Augustine Confessions (selections) Augustine of Hi.docx
9 Augustine Confessions (selections) Augustine of Hi.docx
 
8.3 Intercultural CommunicationLearning Objectives1. Define in.docx
8.3 Intercultural CommunicationLearning Objectives1. Define in.docx8.3 Intercultural CommunicationLearning Objectives1. Define in.docx
8.3 Intercultural CommunicationLearning Objectives1. Define in.docx
 
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx
8413 906 AMLife in a Toxic Country - NYTimes.comPage 1 .docx
 
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx
8. A 2 x 2 Experimental Design - Quality and Economy (x1 and x2.docx
 
800 Words 42-year-old man presents to ED with 2-day history .docx
800 Words 42-year-old man presents to ED with 2-day history .docx800 Words 42-year-old man presents to ED with 2-day history .docx
800 Words 42-year-old man presents to ED with 2-day history .docx
 
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx
8.1 What Is Corporate StrategyLO 8-1Define corporate strategy.docx
 
8.0 RESEARCH METHODS These guidelines address postgr.docx
8.0  RESEARCH METHODS  These guidelines address postgr.docx8.0  RESEARCH METHODS  These guidelines address postgr.docx
8.0 RESEARCH METHODS These guidelines address postgr.docx
 
95People of AppalachianHeritageChapter 5KATHLEEN.docx
95People of AppalachianHeritageChapter 5KATHLEEN.docx95People of AppalachianHeritageChapter 5KATHLEEN.docx
95People of AppalachianHeritageChapter 5KATHLEEN.docx
 
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx
9 781292 041452ISBN 978-1-29204-145-2Forensic Science.docx
 
8-10 slide Powerpoint The example company is Tesla.Instructions.docx
8-10 slide Powerpoint The example company is Tesla.Instructions.docx8-10 slide Powerpoint The example company is Tesla.Instructions.docx
8-10 slide Powerpoint The example company is Tesla.Instructions.docx
 
8Network Security April 2020FEATUREAre your IT staf.docx
8Network Security  April 2020FEATUREAre your IT staf.docx8Network Security  April 2020FEATUREAre your IT staf.docx
8Network Security April 2020FEATUREAre your IT staf.docx
 

Recently uploaded

This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxDr. Sarita Anand
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfSherif Taha
 
Philosophy of china and it's charactistics
Philosophy of china and it's charactisticsPhilosophy of china and it's charactistics
Philosophy of china and it's charactisticshameyhk98
 
Tatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsTatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsNbelano25
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxannathomasp01
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsSandeep D Chaudhary
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...Poonam Aher Patil
 
latest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answerslatest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answersdalebeck957
 
Basic Intentional Injuries Health Education
Basic Intentional Injuries Health EducationBasic Intentional Injuries Health Education
Basic Intentional Injuries Health EducationNeilDeclaro1
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17Celine George
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptxJoelynRubio1
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 

Recently uploaded (20)

This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Philosophy of china and it's charactistics
Philosophy of china and it's charactisticsPhilosophy of china and it's charactistics
Philosophy of china and it's charactistics
 
Tatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsTatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf arts
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & Systems
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
latest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answerslatest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answers
 
Basic Intentional Injuries Health Education
Basic Intentional Injuries Health EducationBasic Intentional Injuries Health Education
Basic Intentional Injuries Health Education
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx21st_Century_Skills_Framework_Final_Presentation_2.pptx
21st_Century_Skills_Framework_Final_Presentation_2.pptx
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 

Java Helpa4.pdfASSIGNMENT 4 A game and an email system.docx

  • 1. Java Help/a4.pdf ASSIGNMENT 4 : A game and an email system COMP-202, Winter 2014, All Sections Due: Tuesday, 25th of March, 2014, 23:59 Please read the entire pdf before starting. You must do this assignment individually and, unless otherwise specified, you must follow all the general instructions and regulations for assignments. Graders have the discretion to deduct up to 10% of the value of this assignment for deviations from the general instructions and regulations. Part 1: 0 points Part 2a: Question 1: 25 points Part 2b, Question 1: 10 points Part 2b, Question 2: 25 points Part 2b, Question 3: 5 points Part 2b, Question 4: 10 points Part 2b, Question 5: 15 points Part 2c, Question 1: 10 points 100 points total It is very important that you follow the directions as closely as possible. The directions, while perhaps tedious, are designed to make it as easy as possible for the TAs to mark the assignments by letting
  • 2. them run your assignment through automated tests. While these tests will not determine your entire grade, it will speed up the process significantly, which will allow the TAs to provide better feedback and not waste time on administrative details. Plus, if the TA is in a good mood while he or she is grading, then that increases the chance of them giving out partial marks. Marks can be removed if comments are missing, if the code is not well structured, and if the problems your solution does not respect the assignment requirement. Part 1 (0 points): Warm-up Do NOT submit this part, as it will not be graded. However, doing these exercises might help you to do the second part of the assignment, which will be graded. If you have difficulties with the questions of Part 1, then we suggest that you consult the TAs during their office hours; they can help you and work with you through the warm-up questions. Warm-up Question 1 (0 points) Write a class Vector. A Vector should consist of three private properties of type double: x,y, and z. You should add to your class a constructor which takes as input 3 doubles. These doubles should be assigned to x,y, and z. You should then write methods getX(), getY(), getZ(), setX(), setY(), and setZ() which allow you to get and set the values of the vector. Warm-up Question 2 (0 points) Add to your Vector class a method calculateMagnitude() which returns a double representing the magnitude of the vector. The magnitude can be computed by taking√
  • 3. x2 + y2 + z2 1 Warm-up Question 3 (0 points) Write a method scalarMultiply which takes as input a double[], and a double scale, and returns void. The method should modify the input array by multiplying each value in the array by scale. Question to consider: Would this approach work if we had a double as input instead of a double[]? Warm-up Question 4 (0 points) Write a method deleteElement which takes as input an int[] and an int target and deletes all occurrences of target from the array. The method should return the new int[]. Question to consider: Why is it that we have to return an array and can’t simply change the input parameter array? Warm-up Question 5 (0 points) Write the same method, except this time it should take as input a String[] and a String. What is different about this than the previous method? (Hint: Remember that String is a reference type.) Part 2 The questions in this part of the assignment will be graded. There are two parts to this assignment. In part one, you will write a little two-player game. In the second part, you will write a very simple email system.
  • 4. The focus of the questions is on how to structure a more complex model, how to represent complex data, and how the different classes you are going to create interact with each other. There will not be any complex algorithm that you have to design and implement, except of some array manipulation in the second questions. The descriptions are not very detailed, and this is on purpose. We want to leave some of the design choices to you. Part 2a Assume the following 2-player game which is played in rounds and has some similarity to a card game where two players each pick a card and the player with the larger card wins. In each round, each player picks two numbers: a base number and a tie number. Each of the numbers must be between 0 and a given max. (e.g., the base number can be a 0, 1, 2 or 3, and the tie number can be 0 or 1). The player who has chosen the bigger base number wins the round. In case of a tie, i.e. both players have chosen the same base number, the one who has the bigger tie number wins the round. If this one is also tied, there is no winner in this round. At the start of the game (before the first round), each player has a fixed budget for the game numbers and a fixed budget for the tie numbers. In each round, the budgets are reduced according to the numbers the player has chosen. In any round, a player can choose only numbers that are smaller or equal to the budget the player has left. The game finishes, once both players have
  • 5. used up the budgets for both their base number and their tie number. The player who has won the most rounds has won. Let’s look at an example. Assume the budget for base numbers is 5, and the budget for tie numbers is 2 at the beginning of the game. Assume players can choose as base numbers 0,1,2,3 and as tie numbers 0 or 1. • Round 1 – p1 chooses base number b = 2 and tie number t = 0. p2 chooses b = 1 and t = 1. – p1 wins the round because its base number is higher than p2’s base number – p1’s base budget after the round is 3, and the tie budget is 2 Page 2 – p2’s base budget after the round is 4, and the tie budget is 1 • Round 2 – p1 chooses b = 2 and t = 1, p2 chooses b = 3 and t = 0. – p2 wins the round because its base number is higher than p1’s base number – p1’s base budget after the round is 1, and the tie budget is 1 – p2’s base budget after the round is 1, and the tie budget is 1
  • 6. • Round 3 – p1 chooses b = 2 and t = 0, p2 chooses b = 1 and t = 1. – p1’s base budget is only 1, so the system will automatically reduce the bid from b = 2 to b = 1 (the maximum that is still available). – p2 wins the round. Both have the same base number, but p2’s tie number is higher than p1’s tie number. – p1’s base budget after the round is 0, and the tie budget is 1 – p2’s base budget after the round is 0, and the tie budget is 0 • Round 4: Although p2 has no budget left, the game still continues as p1 still has some budget left – p1 chooses b = 0 and t = 1, p2 can choose whatever it likes, the system will automatically set it to b = 0 and t = 0 because p2 has used up all the available budget. – p1 wins. Both base numbers are 0, but p1 has a higher tie number than p2. – All budgets are now 0. • The game ends because all budgets are depleted. Overall the game is a tie, because both have won 2 rounds. In this assignment, you have to implement a class Player that maintains most of the state needed to play
  • 7. the game as well as some of the game semantics. Question 1: Player Class (30 points) The Player Class has the following private properties: • baseBudget: the budget to be used for base numbers • tieBudget: the budget used for tie numbers • lastBase: the base number that the player chose last • lastTie: the tie number that the player chose last • wins: the number of rounds the player has won The Player Class has the following public methods: • A constructor Player (int b, int t) initializes the baseBudget and the tieBudget according to the values of the input parameters, and the other properties to 0. • void playRound(int base, int tie): base and tie are the numbers the player has chosen for that round. Thus, the method should keep track of these values by assigning them to lastBase and lastTie, and also accordingly reduce the baseBudget and tieBudget. However, both baseBudget and tieBudget may not go below 0. Thus, if base or tie is bigger than the corresponding budget, we have to adjust it so that it is equal to the budget before we modify the object properties. • boolean canStillPlay() returns true if at least one of the budgets is bigger than zero.
  • 8. Page 3 • int compare(Player p) checks who has won the last round. For instance, assume player variables p1 and p2. If we make a call p1.compare(p2), the compare method should do the following. It compares the properties lastBase and lastTie of both players. The one with the bigger lastBase wins. If they are equal, the one with the bigger lastTie wins. If both values are equal, nobody wins. The method returns 1 if player p1, that is, the player on which the method is called, wins. It returns -1 if p2, that is, the player that was given as input parameter, wins. It returns 0 in the case that nobody wins. • void win() increases the wins property by one. • int getWins() returns the number of wins. • String toString returns the properties of the object in a nice String format. That is useful for debugging. Using that method, you can print the object at any time to make sure the properties are always set correctly. On myCourses, together with the assignment description you can find a Game.java. This file implements the game using the player data type to maintain and manipulate most of the data. This file will help you see how the methods of Player are used. It will also help you debug your system. Game.java automatically maintains one of the players. The other player is you running the program.
  • 9. Part 2b: An email system You will implement a simplified email system. The email system has users. A registered user can send an email to another registered user (or to somebody else, but then the email will disappear to nowhere...). The system keeps track of all messages sent among users. For this assignment, you will write several classes and use object oriented programming to build up the email system. In general, you may NOT add extra public methods or properties to any of the classes. If you want to add extra methods or properties, you should make them private. Please note that for this assignment you MAY NOT use ArrayList, or any other form of sets or lists that you might be familiar with. As described below, you always have to use arrays whenever you have to keep track of multiple elements. Question 1: Message class (10 points) In this question, you will define a type Message that represents an email message. A Message object should have the following properties (attributes): sender, receiver, subject and body. Furthermore, it should have at least the following public methods: • A constructor that has as four input arguments, one for each of the properties, and which sets the properties to the given input values. • toString returns the properties of the message in a proper
  • 10. format suitable for printing. • A set of getter (observer) methods (getSender, getReceiver, ...) to get the value of the individual attributes. • Once an attribute is set through the constructor, it should not be changed anymore by the calling class. This can be achieved by having no setter methods, and by making the properties private. (Encapsulation). Question 2: Mailbox class (30 points) In this question, you will write a class Mailbox. The point of this class is to keep track of a set of messages. Internally, a mailbox object will maintain an array that holds all these messages. As the mailbox system allows each user only to have a maximum number of messages in a mailbox, the array Page 4 will have a fixed size. However, once the mailbox is full, instead of disallowing any further operations, the mailbox will discard old messages in order to make space for new ones. A Mailbox needs to have at least the following property: • private Message[] mb : This is an array with a certain size dictated by the class that creates the mailbox. Furthermore, the system has to keep track of how large the
  • 11. array is and how many messages are currently stored in the array (or in which slot of the array you would put the next message). Think about which properties you might need to store such information. You should have the following public methods. • public Mailbox(int size) that takes as the size of the message array and creates an array of the corresponding size. • A method void addMsg(Message m). This method takes a message as input and adds it to the next free element in the array. If the array is full, the oldest message should be removed. In this case, one possibility to maintain the array in proper order is to shift all elements in the array appropriately (message in slot 1 is moved to slot 0, message in slot 2 is moved to slot 1, etc. and the new message is added to the last slot). You can do such a shift one by one or by using the System.arraycopy method. Alternatively, you simply put the new message into the slot currently occupied by the oldest message. The latter case avoids a lot of shifting around in the array. On the other hand, you have to make sure that you keep track of where the oldest message is. • A method viewMailbox that does a pretty print of the messages in the mailbox indicated in the example below: Viewing mailbox with 3 messages: No Sender Receiver Subject
  • 12. 1 Alice Xi great weather 2 Alice Sandra nothing new 3 Alice Peter my third message In particular, messages are shown in the order they were added to the mailbox (oldest first). In each line, the first column provides a consecutive number. The second column presents the sender, the third the receiver, and the last column the subject. The Sender, Receiver and Subject columns should all always be of a specific width. For this assignment, sender and receiver columns should have a max width of 20 and the subject of 30. Keep track of these values in variables that are final. If the sender/receiver/subject values of a message are longer than these predefined values, they should be cut accordingly to fit in the predefined space. (You might want to delegate the padding (in case a value is shorter than the predefined 20/30), or the cutting (in case it is longer) to some helper method. • A method printMailboxMsg has as input the number of a message as shown by the viewMailbox method (described above) and prints the corresponding message. If there is no such message a corresponding note should be printed. • A method removeMailboxMsg takes as input the number of a message as shown by the viewMailbox method and removes the corresponding message, shifting all other messages accordingly in the array. If there is no such message a corresponding note should be
  • 13. printed. If you create any ”helper” methods to further split up your code and avoid redundant code, then these messages should not be callable from other classes. Question 3: User Class (5 points) In this question, you will define a type User that represents a user of the mailbox system. Page 5 The user class has properties username, and two mailboxes, one is an inbox for messages to be received by the user, and an outbox that keeps the last messages the user has sent. The class has only a single constructor, that takes the user name and the mailbox maximum size as input and initializes all properties accordingly. Otherwise, this class should make the properties directly accessible from other classes (by making them public). No getter or setter methods are thus needed. Note that making attributes directly accessible from other classes (by making them public) is only recommended for very simple classes like this one, where no additional methods are associated with the class but the class really only represents a new data type. Question 4: UserList Class (10 points) This class should maintain an array of users as property. In principle, the system wants to allow arbitrary many users. Thus, choosing the right array size is a challenge.
  • 14. Therefore, the idea is to create an array with an initial, fairly small size. Then, if there are more users than fit in the array, we create a new, larger array on the fly. Note that as with the mailboxes, at the beginning not all elements of the arrays are filled with users. Thus, at any time, we have to keep track of the size of the current array as well as the number of users in that array. Methods: • The Constructor initializes the array with a size of 2. (No users yet in the array). • A method findUser takes as input a string username and looks whether the user array contains a user that has this name. If yes, the user is returned, otherwise null is returned. • A method addUser takes as input a user. If a user with that name already exists in the array, then an according message should be printed and the user not be added. Otherwise, the user should be added to the array (first free element). If the array is full, the array size should be doubled. For that, a new array has to be created of the according size, the users from the old array copied and array variables accordingly reassigned so that they refer to the bigger array. Note that we always have to keep track of how many users are currently in the array. Question 5: MailboxSystem Class (15 points) You have already a rudimentary class MailboxSystem given on MyCourses. This class provides a (very simple) interface to the user. It maintains a list of users as static global variable in which all users are
  • 15. maintained. It has a main method that offers the main menu of the system, a method handleUser that handles the menu once a user has logged in, and an auxiliary method transform that makes sure that input from the keyboard does not mess up the system. Within this code, you have to add functionality. Whenever you find a comment that starts with /* TODO .... */ you have to add code that does what the TODO line indicates. Note that at the end of this specification, you have the output of some execution of the system. This might give you a better idea of how this should work. Part 2c Question 1: Variable and Method Declarations (10 points) Below find 3 class definitions whose variable declarations, property declarations and method declarations are incomplete. You have to correct the lines that are marked with a comment (// line x). Write each of the lines into a file Part2c.txt, one line for each line to be corrected (and in the proper order). Things to consider are the date type, whether public or private, whether static or not static, return type, data type of the input parameters, etc. Page 6 public class ASimpleType
  • 16. { int att1; // line 1 String att2; // line 2 } public AMoreComplexType { int att1; // line 3 int att2; // line 4 AMoreComplexType (... a1, ... a2) // line 5 { att1 = a1; att2 = a2; } getAtt1() // line 6 { return att1; } getAtt2() // line 7
  • 17. { return att2; } increaseCalculation() // line 8 { att1 = att1 * 2; att2 = att2 + att1; } } public UseMyObjects { public static main void (String[] args) { x = 1; // line 9 ASimpleType o1 = new ASimpleType(); AMoreComplexType o2 = new AMoreComplexType(2, x); o1.att1 = x; o1.att2 = "A String";
  • 18. o2.increaseCalculation(); x = o2.getatt1; System.out.println(aFunManipulation(o1, x)); } aFunManipulation( ...a, .... b ) // line 10 { int x = a.att1 + b; String s = "The result is " + x; return s; } } Page 7 What To Submit You should submit your assignment on MyCourses. In order to do this, you will need to make a zip of the file. You can do this on windows by following the instructions at this link: http://condor.depaul.edu/ slytinen/instructions/zip.html. On a mac or linux, you can find instructions at http://osxdaily. com/2012/01/10/how-to-zip-files-in-mac-os-x/
  • 19. You should submit a zip file called Assignment4.zip with the following files inside of it. Player.java Message.java Mailbox.java User.java UserList.java MailboxSystem.java Part2c.txt Confession.txt (optional but strongly recommended) In this file, you can tell the TA about any issues you ran into doing this assignment. If you point out an error that you know occurs in your problem, it may lead the TA to give you more partial credit. On the other hand, it also may lead the TA to notice something that otherwise he or she would not. You should include a description of what you tried to fix the problem, what part of code you think it occurs in, etc. Marking Scheme Up to 30% can be removed for bad indentation of your code as well as omitting comments, coding struc- ture, or missing files. Marks will be removed as well if the class names and other requirements are not respected.
  • 20. Part 2a: Question 1 each method except of win and getWins 4 (20) points win and getWins each 2.5 (5) points 25 points Part 2b: Question 1 properties/constructor and toString each 3 (6) points getter (observer) and setter (modifier) methods 4 points 10 points Part 2b: Question 2 properties and constructor 3 points addMsg 5 points viewMailbox 10 points printMailboxMsg 2 points removeMailboxMsg 5 points 25 points Part 2b: Question 3 all 5 points 5 points Part 2b: Question 4 properties and constructor 3 points findUser 3 points addUser 4 points
  • 21. 10 points Page 8 Part 2b: Question 5 all together 15 points 15 points Part 2c: Question 1 each line 1 point 10 points Page 9 Example Execution Mailbox System The following is a run with having mailboxes of size 3 and the initial user array of size 2. > run MailboxSystem Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit
  • 22. > 1 Name of the User: >Alice User Created Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit > 2 Name of the User: > Bob User can’t be found. Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit
  • 23. > 1 Name of the User: > Bob User Created Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit > 1 Name of the User: > Xue User Created Page 10 Main Menu Options: ------------- 1: Create a user
  • 24. 2: Login 3: Exit > 2 Name of the User: Alice User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 3 Receiver: > Bob Subject:
  • 25. > first message One line msg body: > blub User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 3 Receiver: > Bob Subject: > second message One line msg body:
  • 26. ... User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message Page 11 7: Logout: > 3 Receiver: > Bob Subject: > 3rd message One line msg body:
  • 27. > here it goes User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 3 Receiver: > another one Subject: > s1 One line msg body: > m1 Mailbox full; remove oldest message
  • 28. User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 2 Viewing mailbox with 3 msg No Sender Receiver Subject 1 Alice Bob second message 2 Alice Bob 3rd message 3 Alice another one s1 User Menu Options: ------------------ 1: View your inbox:
  • 29. 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Page 12 Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit > 2 Name of the User: > Bob User Menu Options:
  • 30. ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 1 Viewing mailbox with 3 msg No Sender Receiver Subject 1 Alice Bob first message 2 Alice Bob second message 3 Alice Bob 3rd message User Menu Options: ------------------ 1: View your inbox: 2: View your outbox:
  • 31. 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 6 Message Number in Inbox to be removed > 2 User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 1
  • 32. Viewing mailbox with 2 msg No Sender Receiver Subject 1 Alice Bob first message 2 Alice Bob 3rd message Page 13 User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Main Menu Options: -------------
  • 33. 1: Create a user 2: Login 3: Exit > 2 Name of the User: > Xue User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 3 Receiver: > Bob
  • 34. Subject: > different senders One line msg body: > ... User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Main Menu Options: ------------- 1: Create a user 2: Login
  • 35. 3: Exit > 2 Page 14 Name of the User: > Bob User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 1 Viewing mailbox with 3 msg No Sender Receiver Subject
  • 36. 1 Alice Bob first message 2 Alice Bob 3rd message 3 Xue Bob different senders User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit
  • 37. > 2 Name of the User: > Xue User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 3 Receiver: > Bob Subject: > last one One line msg body:
  • 38. Page 15 > ... Mailbox full; remove oldest message User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Main Menu Options: ------------- 1: Create a user 2: Login
  • 39. 3: Exit > 2 Name of the User: > Bob User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 1 Viewing mailbox with 3 msg No Sender Receiver Subject 1 Alice Bob 3rd message 2 Xue Bob different senders
  • 40. 3 Xue Bob last one User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 4 Message Number in Inbox: > 2 Sender: Xue Receiver: Bob Subject: different senders Page 16
  • 41. Message: ... User Menu Options: ------------------ 1: View your inbox: 2: View your outbox: 3: Send a message: 4: View specific inbox message 5: View specific output message 6: Remove specific inbox message 7: Logout: > 7 Main Menu Options: ------------- 1: Create a user 2: Login 3: Exit > 3 Exit
  • 42. > Page 17 Java Help/Game.javaJava Help/Game.javaimport java.util.*; publicclassGame { // needed to get input from the player staticScanner sc =newScanner(System.in); // game specific values staticfinalint baseBudget =10; staticfinalint tieBudget =3; staticfinalint baseMax =3; staticfinalint tieMax =1; publicstaticvoid main (String args[]) { // p1 and p2 will play against each other Player p1 =newPlayer(baseBudget, tieBudget); Player p2 =newPlayer(baseBudget, tieBudget); int base, tie;// numbers played in this round int playResult; Random r =newRandom();// for the computer generated player System.out.println("Welcome: you have a base budget of "+ bas eBudget + " and a tie budget of "+ tieBudget); while(p1.canStillPlay()|| p2.canStillPlay()) { System.out.println("Indicate your base number between 0 and " + baseMax);
  • 43. base = sc.nextInt(); sc.nextLine(); System.out.println("Indicate your tie number between 0 and "+ t ieMax); tie = sc.nextInt(); sc.nextLine(); if((base <0|| base > baseMax || tie <0|| tie > tieMax)) { System.out.println("Wrong input"); } else { // play for the user p1.playRound(base, tie); // now play for the computer base = r.nextInt(baseMax+1); tie = r.nextInt(tieMax+1); p2.playRound(base, tie); System.out.println("You: "+ p1.toString()); System.out.println("Computer: "+ p2.toString()); // check the win playResult = p1.compare(p2); if(playResult ==1) { p1.win(); System.out.println("You won this round"); } elseif(playResult ==-1) { p2.win();
  • 44. System.out.println("You loose this round"); } else { System.out.println("It's a tie"); } } } System.out.println("Game over"); System.out.println("You have numer of wins: "+ p1.getWins()); System.out.println("Your opponent has number of wins: "+ p2.g etWins()); if(p1.getWins()> p2.getWins()) System.out.println("You are the winner"); elseif(p1.getWins()< p2.getWins()) System.out.println("You are the looser"); else System.out.println("It's a tied game"); } } Java Help/MailboxSystem.javaJava Help/MailboxSystem.javapublicclassMailboxSystem { publicstaticfinalintMailboxSize=3;// for easier debugging, this s ystem supports mailboxes with up to 3 messages publicstaticUserlist emailUsers =newUserlist();// the list of regi stered users
  • 45. // we need that one all the time... publicstatic java.util.Scanner sc =new java.util.Scanner(System. in); publicstaticvoid main (String args[]) { while(true) { System.out.println("nMain Menu Options:"); System.out.println("-------------"); System.out.println("1: Create a user"); System.out.println("2: Login"); System.out.println("3: Exit"); String inputString = sc.nextLine(); int input = transform(inputString,4);// make sure input is readab le if(input ==1) { // read name of user to be created System.out.println("Name of the User:"); String username = sc.nextLine(); /* TODO: check whether user exists, if not create user and add t o the emailUser List */ } elseif(input ==2) { // read name of user to be logged in System.out.println("Name of the User:");
  • 46. String username = sc.nextLine(); User u = emailUsers.findUser(username); if(u ==null) System.out.println("User can't be found."); else handleUser(u); } elseif(input ==3) { System.out.println("Exit"); return; } } } // User menu publicstaticvoid handleUser (User u) { while(true) { System.out.println("n User Menu Options:"); System.out.println("------------------"); System.out.println("1: View your inbox:"); System.out.println("2: View your outbox:"); System.out.println("3: Send a message:"); System.out.println("4: View specific inbox message"); System.out.println("5: View specific output message"); System.out.println("6: Remove specific inbox message"); System.out.println("7: logout:"); String inputString = sc.nextLine(); int input = transform(inputString,8);
  • 47. int msgn; switch(input) { case1: u.inbox.viewMailbox(); break; case2: /* TODO: make according call to view outbox mailbox */ break; case3: System.out.println("Receiver: "); String receiver = sc.nextLine(); System.out.println("Subject: "); String subject = sc.nextLine(); System.out.println("One line msg body: "); String body = sc.nextLine(); /* TODO: create message, add it to user's outbox, and if the rec eiver is also a user with the * very same email system, then add the messages to the r eceiver's inbox (if the receiver is not * a registered user, then the email should still be added t o the sender's outbox */ break; case4: System.out.println("Message Number in Inbox:"); msgn = sc.nextInt(); sc.nextLine();
  • 48. /* TODO: make the proper call to print the message */ break; case5: System.out.println("Message Number in Outbox"); msgn = sc.nextInt(); sc.nextLine(); /* TODO: make the proper call to print the message */ break; case6: System.out.println("Message Number in Inbox to be deleted"); msgn = sc.nextInt(); sc.nextLine(); /* TODO: make the proper call to remove the message from the mailbox */ break; case7: return; default: } } } // just make sure that input has correct format; if not, transform it into the exist number publicstaticint transform(String inputstring,int other) { if(inputstring.length()!=1) return other; char c = inputstring.charAt(0); if(c >48&& c <=48+ other) returnCharacter.getNumericValue(c);
  • 49. return other; } } Java Help/Player.javaJava Help/Player.javaimport java.util.Scanner; publicclassPlayer { privateint baseBudget; privateint tieBudget; privateint lastBase =0; privateint lastTie =0; privateint wins =0; //constructor (always public) publicPlayer(int b,int t) { baseBudget = b; tieBudget = t; } //keep track of base and tie values and update base and tie budg
  • 50. ets //make sure that base and tie budgets do not go below zero // Need help ............................................................................ .... publicvoid playRound (int base,int tie) //is at least one of the budgets greater than zero? publicboolean canStillPlay(){ if(baseBudget >0|| tieBudget >0) returntrue; returnfalse; } //getter method for base publicint getLastBase() { return lastBase; } //getter method for tie publicint getLastTie() { return lastTie; } //check who has won the last round.... Is this correct????? publicint compare(Player P){ if(getLastBase()> P.getLastBase()) System.out.println("Player 1 wins!"); elseif(P.getLastBase()> getLastBase()) System.out.println("Player 2 wins!"); elseif(getLastBase()== P.getLastBase()){ if(getLastTie > P.getLastTie) System.out.println("Player 1 wins!"); else
  • 51. System.out.println("Player 2 wins!"); } } //increase wins property by one publicvoid win() { wins++; } //return the number of wins (getter method) publicint getWins() { return wins; } //toString method publicString toString() { return"Base budget is "+ baseBudget +"/n Tie Budget is "+ tieB udget +"/n lastBase is "+ lastBase +"/n Last tie is "+ lastTie +"/ n Number of wins is "+ wins; }