Programming of Interactive Systems
In-class work and Homework 1, 2 and 3: Minesweeper
Your goal is to storyboard and then develop your own version of an interactive game inspired by the legendary legacy game Minesweeper. Mines are placed in a grid and then hidden, and players try to uncover grid cells without hitting a mine, while uncovered cells can give them clues about the number of mined in the neighbouring cells. A version of the game can be found online here http://minesweeperonline.com/#, and a bit on its history can be found on wikipedia.
You must work individually.
We suggest to implement the user interface in Java. If you want to use another language you should ask the instructors first.
We expect from the game the following basic characteristics and functionalities. The game is some form of grid (or other geometric arrangement) of cells that can be empty or contain a mine (or other items of interestt). Players can open a cell, and this can reveal a mine (if one is underneath) and the game ends. If the cell is empty, and is adjacent to one or more mines, the cell shows the number of adjacent mines. A player wins when they have opened all the cells not containing a mine. The game should indicate its state (lost, in progress, number of cells opened, time spent in game). Players should be able to start a new game, or play games of at least 2 difficulties (size + number of mines).
You can use any interactions your can think of for doing the above actions (e.g., mouse clicks, mouse drags, pass over, etc.). Although this is a basic interface there is a lot of room for improvement or extensions. We are interested in how everything fits together in your system, and how creative you are in your interactions. To get a good mark we expect you to go beyond the above recommended functionalities: they will be judged by their complexity and how they fit overall with your prototype (storyboard or code).
evaluation criteria
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 it. If you decide to code in a platform other than JavaFX, 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!
Individual Homework 1:see ecampus for deadline. Be ready to show its the next day in class (Tuesday). The first h/w assignment is a sketch and a storyboard. We ask you to first sketch what your interface would look like. Then we want you to storyboard 4 interaction sequences. The first two should relate to the basic functionality described before. The remaining two should present functionality beyond the basic one. You can be as creative as you want them to be. Do not limit yourself to what you can actually code, we will adpat these for your coding exercises. You can consider a different input (e.g. voice, dragging, etc.), revealing additional information on the game (e.g., stats), other gaming contexts (e.g. collaborative gameplay and interfaces), weird grids, annotations, ways to help users, etc. You need to give enough details in your storyboard so that it is clear how the different user input leads to a resuting change in the interrface. The storyboard can be done by sketching on paper (ideally) or with pictures of paper prototypes (please avoid wireframes). You can then take pictures of your storyboards and share it with us by email. Examples of interaction storyboards as sketches can be found here. If you want to learn more about storyboards than what we cover in class you can have a look here (but please not the examples here do not focus on interaction and input). Upload your storyboard on the date indicated in ecampus and be ready to show it in class the next day. Individual Homework 2 and 3: Each homework is a seperate version of your minesweeper. Deadlines can be found on ecampus. Be ready to show them running the next day in class (Tuesday). The second h/w assignment (in two versions) is an implementation of your minesweerper. We expect you to implement the basic functionality described before. To get a good mark you need to go beyond this functionality and implement at least 2 extensions. We will judge your project based on the criteria mentioned above. In the first version of the minesweeper (Homework 2), we expect you to have built the window(s) you will need in your game, with their interface components layed out, and at least one type of interaction (it does not need to be the finalized one, e.g., clicking on a button gives you on the console some information about what is under the button). In the second version of the assignment (Homework 3), you need to hand-in the complete game, that includes all interface components and all interactions implemented. some advice Define the limits of your project before starting. Developing more functionalities will not necessarily give you a better mark (or a better product). Focus on aspects of the tool that conform to the described requirements. 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. 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 too hard, try to simplify things. Try to structure well and comment your code. Be ready to show your program running in class. Also create an archive (zip or tar.gz) named firstname-lastname.zip or firstname-lastname.tar.gz that includes: Upload both versions of your project on ecampus on the dates indicated. Depending on time, you may be asked to show your assignment running in class, so make sure you have it handy (and working).
what to submit
what to submit