HCID Introductory Programming Project 2017
TA: (Stacy) Shu-Yuan Hsueh (class managed by Anastasia Bezerianos)
The goal of this class is for you to practice the skills acquired in your different classes and create a programming project that is more involved than previous exercises in the Programming of Interactive Systems.
Your TA will be present each week to answer questions and give you a hand, in the form of lab hours. Occasionally she will also do exercises with you, abd present material that we will not cover in the class, and that will help you in your project.
The topic of the project is fairly broad and open to allow you to be creative in the direction you want to.
news and announcements
11/10: By next TA class (18/10) be prepared to discuss with your TA what you chose to implement, your sketches and UML diagram
11/10: Project presentation slides
You must work in pairs (if we have odd number of students we can have a single group of 3).
A topic is proposed, but if you would like to do another one talk with your TA or Anastasia to see if your level of programming and the complexity of the project are appropriate.
We suggest to implement the user interface in Java. If you want to use another language you should ask the instructors first, and it is not certain we will be able to help with coding problems.
An interactive maze
Your goal in this project is to create an interactive maze where user-controlled and automated characters move around. Why they do so is up to you: is it to reach the end the fastest, is it to cover it all, is it to win as many points as possible within a time-limit?
You need to decide how the user interacts with their character: do they move him step by step, draw a path to follow, etc.?
What exists inside the maze is also up to you: is it open and locked access points, traps that delay the characters, treasures that give them extra powers?
The interaction of the characters is also open: if one character is in a room in the maze does she block it for others, when two characters meet do they fight or do they exchange information about the maze, etc.? Do they take turns moving or are they all moving at the same time?
Two simple examples of such mazes (with images) are seen in the project presentation slides: and briefly presented here:
A boat race: the weather in different areas of the sea maze changes unexpectedly. It pushes the boats that have an initial speed and direction into different directions, causing them damage that delays them. Depending on their size and weight the boats are affected differently by the weather conditions. The user does swipe gestures to adjust and correct the direction of movement of her boat when weather conditions shift it off course. The user and NPC boats try to reach the island safely.
A warrior’s challenge: in a turn taking maze characters of different races and different equipment (armour, arms) move in a “fog of war” (i.e. cannot see the maze areas they have not yet visited). The user clicks towards the area of the maze they want their character to move. When characters meet others of their race they share information about what they know of the maze and its traps, while if they meet characters of other races they fight, and gain or loose arms and treasures. Their goal is to find as many treasures in the maze as possible.
Your maze application should have at least the following aspects:
Define the limits of your project before starting. Developing more functionalities will not necessarily give you a better mark (or a better product). This project can be very simple to very complex. Discuss with your partner your programming experience before deciding on what you want to do exactly. If you have doubts about the difficulty of your choice, ask your TA for her opinion.
You are encouraged to be creative, but make sure what you decide to do is inside your competence level and abilities. If some aspects seem to hard, try to simplify things.
Your implementation should be usable. You should prevent users from reaching unexpected states in the system and provide feedback and feedforward mechanisms to avoid user errors.
Remember, this is an HCI course, we are interested in the interface and UI aspect of this game. We do not expect impressive gaming mechanisms or non-player characters with AI :). NPCs can have very simple behaviours (e.g. random movement or always go left).
Try to structure well and comment your code.
Your work will be evaluated based on the following criteria:
Criteria 1 and 2 have a higher weight. However, a poorly documented submission risks to get evaluated more strictly, e.g., if we do not manage to run or use it. If you decide to code in a platform other than Java Swing/Java 2D, make sure that you provide clear instructions about how to run it. Also make also sure that your TA has the necessary hardware to test it!
what to submit
One week before the last day of class (Wed, Nov 8) you should be prepared to show the TA your progress (this is an official landmark that will give you a mark, so be there!).
Create an archive (zip or tar.gz) named firstname-lastname.zip or firstname-lastname.tar.gz that includes:
Email your compressed archive to Anastasia and Stacy by Tue, November 14 (23:00pm)the latest. Use the subject [ProjIS] in your email. You will be asked to give a brief 10 min presentation of your project in exam week (Wed, Nov 15, 13:30). Do not prepare slides, just show the application running.