C#定制 | IERG3080 – Project Specifications
IERG3080 – Project Specifications (Part I, Part II)
(Updated after Early Semester Termination, Part II Updated with
Dr. William K.Y. Hui, Department of Information Engineering, CUHK (Oct 2019)
Course Project (30%) is divided into two parts – Part (I) and Part (II)
● Part (I) is individual, compulsory and simple; required to pass the course;
● Part (II) is optional, group based and is a requirement for qualifying to get A/A- in
course grade. Part (II) is 10x more work than Part (I).
How final project score is computed:
1. If you have Part I only final project score is Part I
2. If you have Part I and Part II, final project score is max of Part I and Part II
3. If you have Part II but no Part I, final project score is zero
Everyone is welcome to try Project Part (II) but bear in mind it’s a very difficult task. In fact,
getting full mark (30 marks) in Part (II) will be quite an achievement and is definitely very
rare (1 to 2 groups in past years). Please focus on Part (I) first, if you are unsure.
WPF is a vast framework. It is impossible to learn them all. In real software engineering, a
software engineer will often need to learn on the go what is necessary to accomplish the task at
hand. This is the same attitude you should adopt in learning WPF for your project!
To help you cope with your Project better, we actually have a ProjectHints project which
contains a bunch of examples which will cover almost all WPF control usages you will need in
the topics! Please download the project from blackboard and study it well before you start your
project. It will be released in the coming week.
There are four topics. You cannot choose your topic – it is assigned (keep an eye on
Blackboard-> announcement). Screenshot is deliberately absent in some cases to encourage
Topic 1. Whack-a-Mole
Implement a simple time-limited whack-a-mole game with:
1. A Button to start the game, of course
2. A Slider to determine the difficulty of the game, affecting BOTH frequency of moles and
speed of moles disappearing after appearance
3. A collection of Buttons to represent the moles
4. A Timer to do countdown for player and end the game when time is up
5. A way to show the score of player and potentially top score. The score should be a
percentage of hit (e.g. 60%!).
Topic 2. Wheel of Fortune
Implement a Wheel of Fortune game in which you have:
1. A Canvas that shows a kind of Wheel of Fortune
2. A Button that rotates the Wheel and another Button that stops the Wheel
3. A TextBlock that shows the amount of money you currently have.
4. The Wheel should have at least 4 distinct Colors, each represent the amount of money
you earned in this spinning; text is optional.
a. Red: $1000
b. Blue: $100
c. Green: $10
d. Grey: -$500
e. You can add additional Colors
5. Player starts with $1000. If player loses all the money, prompt “Game Over” in some
manner and Reset everything.
Topic 3. Typing Game
Implement a Typing Game! If the “words” fall from the top to the bottom then the player is set to
be hurt (or you can do other sensible motion). A player should have limited lives.
The game should have:
1. A Start Button or Starting Screen
2. Continuously falling “words” that the player have to type correctly to “destroy” (some
way to choose the word and type into a TextBox).
3. A Timer to show when the game will end
4. A way to show the final score, and the remaining health of player
5. Some way to make the Background less boring, zombies not needed
Topic 4. Hangman
Implement a Hangman game. In a Hangman game, one keeps drawing a hanged man when
guessing a random word. Every time a character is guessed, and if it is in the random word, the
character is displayed. If the character is NOT in the random word, a part of the man is drawn.
The player wins if the word is complete before the man is fully drawn.
Implement the game with:
1. A start Button
2. A guess Button with a ListBox on selecting what to guess; after guess a certain
character, that character should NOT appear again in the ListBox
3. Some way to show the successful guess on the word so far
4. A Canvas control to draw the hangman
2. Project (Part I) Submission and Assessment Criteria (Updated)
IMPORTANT: Your submission must use the Controls specified in the requirement or we will
consider that feature NOT done. You can use your own decision on things not specified but
please use common sense.
You have to submit a zipped Visual Studio project and a Word Doc with screenshots of
your program (named readme.doc) included in the zip.
Deadline: 14 Dec 2019 (Sat) (you are recommended to finish as soon as possible if are
participating in Part II)
Submission Quality Mark
No submission, submission copied from some Internet example,
submission that is irrelevant, submission of topic other than the
Submission that resembles the project spec but not working
properly, or works properly but have no explanation file
Submission that works exactly like specified but with a wrongly
named screenshot file (or late)
Submission that works exactly like specified and a proper
Submission that works exactly like specified and shows attention
to details and principles of software design
Submission that works and is super super awesome and is in full
3D, shoots laser, and comes with original soundtrack and signed
(Spend your efforts in
Part II instead, please)
3. Project Part (II) Introduction – “Baba is You” (Updated)
In this project, you implement a C#, WPF version of a puzzle game called “Baba is You”. A free
version on PC can be downloaded here:
A commercial version can be found here:
Your instructor is not affiliated with the author and will not finance you to buy the commercial
There are several major elements of the game that you need to implement:
● The Sokoban element of the game, in which the player avatar can move blocks around
● The Undo element of the game, by pressing z, which allows you and EVERY game state
to go back to the previous
● The Game-rules element of the game, which is changed when different valid phrases are
formed in the map (you need to model all features in the GAME JAM VERSION)
● It is not necessary to replicate the levels in the game; though some replication is needed
for you to confirm whether you are implementing the game correctly
A lua script (a certain kind of game scripting) source code comes with the free jam version of the
game. I do not recommend reading it to reverse the game. It is not in OOP and you can clearly
see it is hard to extend upon it (it is a jam product afterall). Play the game instead to understand
the rules, and consider how it can be modeled in proper OOP.
We do will only accept projects made with WPF, C# and is expected to run on Windows
machine on a typical Windows desktop. For fairness, I will NOT accept proposals for using other
Additional Requirement (Announced 3 Dec 2019)
Your game should allow the player to choose between two modes
● The Normal, WPF GUI mode (in which you have creative freedom)
● The Textbox mode, in which ONE main WPF Textbox Control displays the output; it is
a simulation of running Baba is You in console. You are encouraged to follow the
model Setup below:
*It is not necessary to make the Textbox mode pretty
The game logic should run exactly the same in these two modes, except for the presentation.
The two modes do NOT need to run simultaneously. It is expected that you will reuse as
much code as possible between two modes – in professional terms, your game should allow
TWO Views while maintaining the same Model. (The WORST case is that you write two
completely independent programs to achieve it – then it is considered worst design.)
Obviously, do NOT cheat by making your Normal mode to be the same as the Textbox Mode.
I repeat my warning: Project Part (II) is optional and is only required for qualifying to get
A/A- in this course. You won’t get a meaningfully higher mark by forcing yourself to do it. It
is a good learning experience if you are willing to put in the extra effort.
It’s around 10 times of work compared to the mandatory Part (I).
4. Project (Part II) Submission and Assessment Criteria
You have to submit a GitHub repository (details on Piazza) and an individual or group 5-page
design report with details on your class design, class reuse, software patterns used and
challenges overcome during your project. You also have to explain what happened to your
design and code when accommodating the Additional Requirement announced in early Dec.
Deadline: 23 Dec 2019 (Mon) (Updated)
Submission Quality Mark
No submission, partially working submissions, submissions that
did not follow the above mentioned rules
Submission that fulfill all the requirements but designed poorly or
submitted without proper design report
Submission that fulfill all the requirements and have reasonable
22 (max of Part I)
Submission that fulfill all requirements and have shown thoughtful,
Submission that is considered acceptable work in a real world
5. How to Participate in Project Part (II)?
If you believe you want to participate in Project Part (II), you should:
1. Form a group with another student who wishes to and can possibly get A/A- in this
2. Download the game and observe the rules; you don’t need to necessarily enjoy it
3. Join a Piazza group and tell us the group you have formed, or look for teammate if
4. Go on and implement a WPF project for the game and wait for eventual Additional
Requirement to be announced in early Dec
1. This is a two person project. Good understanding of OOP will allow the two of you to
come up with a working product with the least amount of work. If you are new to OOP
you will get to know more as we proceed in course.
2. Since everyone end up in the same final product, clearly, I am looking at your OOP
3. You must divide the duties between the two members and each of you are
responsible to make sure the classes will function as it is designed – the division of
labour will be required in the future report. (“Everyone did every class” is NOT
4. Since the classes you created must work with each other’s, you must communicate
with each other to come up with good class designs.
5. As education use, you can copy any official game graphics for use in your project (or
use your own)
6. I will give recommendation on whether you should try Project Part (II) after Test #2
results is out, if you are unsure whether you can do it or not.