1. System Functionalities
Design, extend, and implement Pokemon, Move, Item, Player classes to make them work together. You are encouraged to add more modules to make your system more interesting and robust.
In your system design, your team should decide what other functionalities you want to add in your Pokemon game. Examples of some functionalities are listed below for your reference. Note that:
1) Depending on the expected difficulty, novelty, and amount of work for each implementation, different scores are assigned to each example. But actual score you can get depends on the actual quality, difficulty, novelty, and amount of your work. For example, Pokemon Encounter and Capturing is 1pt. The sample code uploaded on Blackboard already implements most parts of this system. So if you do minor work to extend it a little, you can receive only 1 pt. But if you do extensive amount of work to make the encounter and capturing system very fancy, it is possible to earn 2 points or even 3 or more points. The working code should be demonstrated in presentation to claim for credits.
2) It's good to make your system functions as complete as possible. But there's no requirement to make the data complete. For example, you don't have to prepare data for all 800+ pokemons. You don't have to make everything identical to official Pokemon/PokemonGo games.
3) The total is 15 points depending on which functionalities you chose to implement. For impressive project, up to 3 extra credits may be given and make the total 18 points.
Sample functionalities to add/extend:
1. Pokemon Encounter and Capturing System (1 pt)
In the given sample code, a player can encounter random wild pokemons. When a specific wild pokemon appears, its CP, HP, sex and moves should be randomized. Pokeballs can be used to capture wild pokemons with probability p (0<p<1). The value of p varies based on different kinds of pokeballs. Pokemons can only be captured during wild Pokémon encounters, not during player-to-player battles.
To extend, you can design your own mechanisms of randomization (e.g., rare and strong pokemons appear less frequently). Another idea is to set different capture rate (success rate) for different pokemons (e.g., rare or strong pokemons are harder to catch). You can also design mechanisms so that pokemons may escape when certain condition are met.
2. Type system and Battle Tweak (1~2 pt)
Each pokemon has at least two move attributes (e.g., fast move, and special move which is stronger). Each pokemon is associated with one (1) or two (2) type attributes (e.g., fire, water, grass etc.). Each move is associated with only one (1) type attribute.
The pokemon's type and combat power (CP) attributes affect the damage dealt by pokemon’s moves. You can decide by yourself how it is affected, but you should try to make combats balanced and interesting.
The following are examples of battle tweak (but you can choose not to follow them):
1) If a pokemon uses a move that has the same type as the pokemon's type (or one of the two types), the damage is multiplied by 1.5.
2) If a move with fire type is used against a pokemon with grass type, the damage is doubled. If a move with fire type is used against a pokemon with water type, the damage is halved. If a move with fire type is used against a pokemon with grass & water type, the damage keeps the same (doubled and then halved).
3. Player Battle
Pokemons can fight against each other. When two players meet, they can make their pokemons at hand to participate in the battle. The combat is a turn-based battle (i.e., two players take turns to decide what action to take, such as attacking, using items, or change pokemons. When an action is done, the other player takes the next action... and so on). If attacking, the player can decide which move to use. If using item, the player can decide which item to use, and when appropriate, which pokemon to use item on. If changing pokemon, which pokemon to use needs to be decided by the player.
You can also consider AI and make opponent player make decisions automatically.
4. Candies, Stardust, and Evolution
Each pokemon can be fed with pokemon candies and stardust. When fed, pokemons can increase CP which in turn powers them up (because attack damage and HP are related to CP).
Some pokemons can evolve (transform to a different pokemon object) when a certain amount of candies are fed.
In addition to candies and stardust, you can design your own mechanism to increase pokemon’s CP. For example, one of the possible ideas is to win battles. You can decide how much CP are earned by winning over other pokemon or players.
5. Location and PokeStop
A PokeStop is an object representing a certain location in real world. When a player visits a pokestop, the player can obtain 1~5 random items.
Your PokeStop system should interact with Google Map API to obtain interesting locations near the IP address of player, and allow players to interact with these locations.
5. Egg and Incubator System
Players can find eggs by levelling up, visiting PokeStops, and by other approaches. Players can use incubators to hatch eggs. When players walk, the eggs being incubated will accumulate distances. When the distance reaches to a certain amount, random pokemons can hatch from the eggs.
6. Faction and Gym
Each player belongs to one of the three factions (like guilds): Valor, Mystic, and Instinct. A gym is an object representing a certain location. The gym can be occupied by 1~6 players of the same faction. Each player can assign one and only one pokemon that he or she carries to the gym, so at maximum a gym is defensed by six pokemons of the same faction.
A player can occupy a gym when the gym is not occupied by anyone else. Pokemon battles take place when a player visits a gym occupied by player(s) from a different faction. If the player defeats all the pokemons in the gym, the gym becomes occupied by the winning player.
7. Database Management
A database can be used to organize data related to above-mentioned functionalities.
8. GUI (Graphic user interface)
Making a GUI of your app will make your interface very impressive.
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of