COMP2045 Coursework 2024
Introduction
This coursework is worth 40% of the module mark. It requires you to write C++
programs and a report that solve the task described below. The deadline for this
exercise is 23:55pm on Monday 29th April 2024.
Read the entire document before beginning the exercise.
If you have any questions about this exercise, please ask in the Q&A forum on
Moodle, after a lecture, in a lab, or during the advertised office hours. Do not post
your program or parts of your program to Moodle as you are not allowed to share
your coursework programs with other students. If any questions require this
exercise to be clarified then this document will be updated and everyone will be
notified via Moodle.
Task
Your task is to implement an algorithm for the game of Goofspiel in C++ and
write a report on testing the algorithm.
Goofspiel is a card game for two players, using cards from a standard deck of
cards. Each suit is ranked, i.e. ace is worth one point, 2 is two points, etc., jack 11,
queen 12, and king 13 points.
One suit is singled out as the "prizes"; each of the remaining suits becomes a
hand for one player, with one suit discarded. The prize cards are shuffled and
placed between the players with one card turned up.
Play proceeds in a series of rounds. The players make sealed bids for the top
(face up) prize by selecting a card from their hand (keeping their choice secret
from their opponent). Once these cards are selected, they are simultaneously
revealed, and the player making the highest bid takes the prize card. If there is a
tie, the prize card value is equally split between the tied players. The cards used for
bidding are discarded, and play continues with a new upturned prize card.
After 13 rounds, there are no remaining cards and the game ends. The player
who has gained the highest sum of the prize cards wins the game.
See reference [1-3] for more details of Goofspiel and the state-of-the-art
strategies for the game.
You should implement a program of Goofspiel game that the user plays against
an automatic algorithm repeatedly. The program should give a score (or scores) on
how well the user has performed in the game playing. You should test the
performance of the strategy you developed against the state-of-the-art strategies
(This can be done in the program of Goofspiel game or in a separate program).
Some other requirements of your C++ program of Goofspiel game include:
1. It must use C++ Object Oriented Programming (OOP), rather than C style
sequential programming.
2. It must be an interactive game that the user plays against computer.
3. It must allow input from the user (by means of keyboard or mouse).
4. It must show results (win, lose, tie, or scores).
Submission
You must submit a zip file that contains a report (no more than 4 pages) and all
source code for this exercise. The code files should compile and run without
warning and error messages on X2Go.
You should explain the details of your programs in the report, including the
hierarchy of classes used in your game and the strategy of Goofspiel you have
designed. You should also evaluate the performance of the strategy – how well it
performs against other strategies and how well it performs against human players.
(See [3] for an example of evaluation of Goofspiel strategies via competitions).
Late submissions: Late submissions will lose 2 percentage points per hour,
rounded up to the next whole hour. No late submissions will be accepted more than
48 hours after the exercise deadline. If you have extenuating circumstances you
must file them before the deadline.
Marking
The marking scheme will be as follows:
• Testing (30% or 12 marks): Your programs should satisfy the hard
requirements. As noted in the submission section, if your programs do not
compile then you will lose all testing marks.
o Correctness. The programs always give correct outputs according to the
rule of game in the tests. (10 tests, 1 mark for each test)
o Robustness. The programs handle some incorrect user inputs. (2 marks)
o No runtime error. (5 marks deduction for a runtime error)
o No memory leak. (1 mark deduction for a memory leak)
• Satisfaction of constraints (10% or 4 marks):
o The programs use C++ object-oriented techniques correctly. (2 marks)
o The programs are well formatted, and they contain appropriate
comments. (1 mark)
o The game contains a user-friend interface to play with. (1 mark)
• Quality of the algorithm (10% or 4 marks):
o Your algorithm has significant differences from others. (2 marks)
o Your algorithm performs better than the deterministic and random
strategies. (1 mark)
o Your algorithm performs well competing against human players in
repeated game playing. (1 mark)
o
• Report (50% or 20 marks):
o Appropriate description of the game, the algorithms, the classes in the
programs, and testing of the performance of your proposed algorithm. (4
marks)
o Evaluation of the algorithm
▪ Clear and accurate statements on the performance of your
proposed algorithm. (2 marks)
▪ Appropriate design of testing (2 marks)
▪ Sufficient testing results to support your conclusions. (4 marks)
▪ Appropriate uses of tables and figures. (4 marks)
▪ Analysis of your algorithm (why does it perform well or poor). (2
marks)
o Structure and language
▪ Well organized structure. (1 mark)
▪ Academic English writing. (1 mark)
Plagiarism
You should complete this coursework on your own. Anyone suspected of plagiarism
will be investigated and punished in accordance with the university policy on
plagiarism (see your student handbook and the University Quality Manual). This may
include a mark of zero for this coursework.
You should write the source code required for this assignment yourself. You must
not copy code from Internet. You must not copy or share source code with other
students. You must not work together on your solution. You can informally talk about
higher-level ideas but not to a level of detail that would allow you all to create the
same source code.
Remember, it is quite easy for experienced lecturers to spot plagiarism in source
code. We also have automated tools that can help us identify shared code, even with
modifications designed to hide copying. If you are having problems you should ask
questions rather than plagiarize. If you are not able to complete the exercise then you
should still submit your incomplete program as that will still get you some of the
marks for the parts you have done (but make sure your incomplete solution compiles
and partially runs!).
请加QQ:99515681 邮箱:99515681@qq.com WX:codehelp