Assignment 4: Super Mario Brothers May 2019
General Instructions
The assignment is to be done in groups of 2 people. You may also choose to work solo.
We will be using GitHub for version control. Make sure to regularly commit your changes to your repository, rather than making a single commit at the end of the assignment. The commit history of the repository will be checked to verify the same.
The deadline for Assignment 4 is 11:59 p.m. on June 7th, 2019. The latest commit in your GitHub repository, as of 11.59 p.m. on the 9th of June will be considered as your final submission.
Academic dishonesty is unacceptable and will not be tolerated in this course. To compare the code committed by the teams, an automatic system called MOSS will be used for determining the similarity of the programs.
2
This assignment requires you to develop an Android game that mimics the classic game Super Mario Brothers. You
can read more about the game at http://www.mariowiki.com/Super_Mario_Bros.. We have made the following simplifying changes to the game:
1. There need not be any sounds.
2. You only need 3 levels.
3. You can redesign the AI behaviors of the opponents as you wish.
Here are the basic points of the game (we leave lots of implementation choices to you):
1. The game is side-scrolling. This means that the characters onscreen are viewed from a side-view camera angle.
Your game must make the onscreen characters move from the left to right side, like the original game.
2. The game must run in Landscape mode, unlike the Tetris games which was Potrait oriented.
3. The original game has several items. But, you need to implement only the following:
• Brick blocks: Brick Blocks can be broken by jumping into them from below. They give the player 10 points.
• Coins: They are worth 200 points and are very common.
• Super Mushroom: They are worth 1000 points, and are less common. It gives Mario the ”Super” form.
• Starman: They are also worth 1000 points and they make Mario invincible temporarily, by transforming him into ”Invincible Mario” form.
4. Mariohasdifferenttransformations.Mariotransformsbetweenthoseversionsbytouchinganenemyorobstacle, or by acquiring a particular type of item. You need to implement the ”Super” and ”Invincible Mario” versions, apart from the original version of Mario at the beginning of the game.
1
1. 2.
3. 4.
Assignment Description
1
5. Among the many enemies that Mario has, you have to implement at least 2 types. The enemies are:
• Little Goomba : A mushroom traitor that walks back and forth. They are the weakest and most common enemies throughout the game and can be stomped or hit with fireballs or a Starman.
Figure 1: Little Goomba
• Piranha Plant: It is a carnivorous plant that lives in pipes. It rises up trying to hit Mario and retreats. If Mario is near, it won’t rise up.
Figure 2: Piranha Plant
6. Mario should be able to jump. He should also be able to break certain types of blocks, or jump onto the enemies.
7. Mario should have 3 lives. Keep a running score and also keep track of the number of lives.
8. Artwork does not matter in this class. But, Mario should be animated in some fashion.
9. The different levels should be controlled by a data structure. The placement of items should be controlled by the data structure. There should be no hard coded checks in the game engine about what level you are in (other than the code to load the correct data structure for the level).
10. You will have to develop touch controls.
3 Hints
The Android development kit documentation is your friend. Reference it to figure out how the entire thing works. The URL is http://developer.android.com/reference/packages.html. A copy also gets installed in your Android installation.
3.1
1. 2.
4
The assignment must contain the following statement in the file “statement.txt”:
We, your name and your partner, hereby certify that the files we submitted represent our own work, that we did not copy any code from any other person or source, and that we did not share our code with any other students.
NOTE: It is acceptable to use code you find in the Android or Java APIs.
How do I change the orientation of the screen?
The method void setRequestedOrientation (int requestedOrientation) can be used to set the orientation of the activity.
The value of requestedOrientation can be set to SCREEN ORIENTATION LANDSCAPE, to render the game in landscape fashion.
No-Copy Policy
2