Poketype is a web-application that takes two pokemon and gives you the most effective move in terms of move type and damage dealt to each pokemon.
Click here http://criiptico.pythonanywhere.com/ to view the build.
To run this app locally, from the main directory go to poketype/Front-end/main
, then run the home.py
file.
The pokemon PokeType web-app is finally up! I hope you enjoy using it as much as I did creating it. For my first web-app project, I think I did pretty well. I identified a problem and decided that this was a good solution to it, then I tried to stick to it without changing it too much, then I finally finished it.
Working on this project has been awesome but I wish I had more wiggle room to experiment with threads and integrate Javascript into the application. The issue was that I didn't want to introduce Javascript because I don't know it, but I know that I want to use it for sure in my next project "YouTube Purger", an app that unsubscribes you from youtube channels. Another reason why I didn't use Javascript was because I wasn't sure how threads was going to interact with wherever I was going to deploy my application. This was a huge issue because I can't assume something if I've never worked with it before. I think I still have that worry, so I'll have to thoroughly research that topic for my next project.
This app will not be maintained but feel free to use this code in whichever code you might need it for. I especially encourage using the pokemon api wrapper that I made which you can access here https://github.com/criiptico/PokeTypeAdvantage. This api wrapper is where I spent most of my time learning and debugging. It has useful info on serialization, retrieval, and processing json from the PokeApi which can be found here https://pokeapi.co/.
- Back-end
- Hosting and Development
- Front-end
-
Back-end
- Implementing Move and Pokemon class into all functions.
- API related
- Verify you can input pokemon
- Verify you can retrieve the moves that are effective with that pokemon. This is sorted with respect to the type of move (which is its effectiveness) and how much damage the move actually does.
- Filter for move type | Not Possible
- Filter for move damage
- Accessing different type of pokemon
- Accessing the types of attacks a particular pokemon can do
- Accessing damage an attack can do interms of type
- Finish the Prototype app program.
- Documentation
- Parse api data
- Pokémon & Move Name
- Move Base Power
- Move type
- Pokémon type effectiveness needs:
- Attacking Move base power
- Attacking Move type
- Defending Pokémon type(s) {Single type and Dual type}
- Develop a txt file to store single type effectiveness of Pokémon of a single type.
- Found one online Refer to: https://github.com/johanngan/pokemon_types/blob/master/type_chart.txt
- Note: This also works for dual type pokemon. Refer the the bullet point below.
- Find a method to implement the dual type Pokémon chart. Refer to the raw format of README.md for a formatted explanation.
-
Suppose we have Charizard, charizard is of these types:
defType1 = Fire defType2 = Flying
Charizard needs to defend against this type of move
atkType = Water
Using the single type chart for each type that Charizard is:
Atk Def
Water vs. Fire = 200% (Super-Effective aka 2) Water vs. Flying = 100% (Normal aka 1)
Then multiplying those effectiveness: 2 (Water vs. Fire) * 1 (Water vs. Flying) = 2 (Resulting Effectiveness)
-
- Parse and Load type chart from https://github.com/johanngan/pokemon_types/blob/master/type_chart.txt
- Load Type Chart Function - Loads the type chart with data from https://github.com/johanngan/pokemon_types/blob/master/type_chart.txt
- This is unnecessary,
Type Chart Dump - Dumps all data processed with the type chart.
- Eval efficacy function - One of the most important functions in the program which serves in determining the effectiveness of a move.
- Use these in to return the resulting effectiveness of a Move with respect to its type and the defending pokemon's defense
- No effect (0%) No damage
- Not very effective (50%) Cuts base power by half
- Normal (100%) Normal base power
- Super-effective (200%) Doubles base power
- Pokemon Type Efficacy Dump - Dumps all effective moves against a pokemon.
- Use these in to return the resulting effectiveness of a Move with respect to its type and the defending pokemon's defense
- Additional Feature Damage filter - If attack is normal, then search for the normal move with the most damage. Same with any other move effectiveness.
-
Hosting and Development:
- Use flask and python to make a webapp prototype - Preferably one that works like a "portfolio". Ex. portfolio.com/poketype, portfolio.com/about, etc.
- Form handling
- Managing dynamic data with and without flask and/or python. - Dynamic: ex. What is your name: INPUT: someName \ OUTPUTS: Hi someName!
- Receiving data
- Figure out how to access it once it's received
- Figure out how to use it
- Sending data
- Non-calculative and dynamic data
- Calculative and dynamic data
- Figure out how to send it back
- Figure out how to output data onto client
- [ ] Find a way to host on Firebase- [ ] Purchase a domain - Build around a "portfolio" website. Ex. portfolio.com/poketype, portfolio.com/about, etc.
- Receiving data
- Managing dynamic data with and without flask and/or python. - Dynamic: ex. What is your name: INPUT: someName \ OUTPUTS: Hi someName!
- Form handling
- Use flask and python to make a webapp prototype - Preferably one that works like a "portfolio". Ex. portfolio.com/poketype, portfolio.com/about, etc.
-
Front-end
- Web Design
- Work on a Mockup - Refer to "../Front-end/pokeType_mockup.png" and "../Front-end/poketype.fig"
- Different stages of the mockup - Unloaded and loaded pokemon
- Include App Instructions in the mockup - Self explanatory & you can use normal html.
- Work on a Mockup - Refer to "../Front-end/pokeType_mockup.png" and "../Front-end/poketype.fig"
- Web Design