onsdag 7 september 2016

Programmera Pokemon Go klon – del 2 pseudokod av spelet

I förra delen så skrev jag och mina elever ner, i text, hur pokemon go fungerar. I denna del beskriver vi spelet i pseudokod. https://sv.wikipedia.org/wiki/Pseudokod
Detta steg gör vi för att det ska bli lättare att göra om detta till syntaxkod. Så här blev pseudokoden efter lite diskussion med mina elever.

Startar programmet
  Om spelet startas första gången
Godkänn att spelet får använda kamera & plats
Fråga epost och lösenord
Skapa konto
                            Välj namn till din avatar
                            Välj kläder och färger, tryck ok
                             25 bollar skapas hamnar i bagpack
                           Avataren syns på din karta         
Annars
                             Logga in med ditt konto
Fight mode                    
 Om fight mode första gången
Tre starter pokemons dyker upp
                           Spelaren väljer en av dom
                           Tryck på en pokemon, augmented reality mode läget kommer upp
                           Spelaren håller in fingret på en boll, svep med fingret mot pokemon
                           Om träffar bollen på pokemonen
Pokemon fångas  
500xp till spelaren
                                                      Pokemonen hamnar i spelarens pokedex
Karta
På kartan finns det pokestops
Om pokestop inom ca 20 meter
Om klicka på ett pokestop  
                                                          Om snurra på ikonen
                                                                                     Få bollar, mat till pokemon och ägg
                                                                                    Tre typer av ägg, 2km, 3km och 10km
                                                                                       Sätt 5 minuter cooldown på pokestop
                                                                                       Items hamnar i bagpack.
Annars
                             Skriv ”pokestop för långt borta”
Om spelaren har ägg
                             Om spelaren stoppat in ägget i en incubator
                                                          Om spelaren gått sträcka för ägg
Ägg kläcks
                                                                                      
Menyer
Lista över pokemon i närheten
Meny för avatarern
Röd pokeboll
Om klickar pokeboll
                             Lista över spelarens pokemon
                             Items
                             Shop
                             Pokedex
                             Settings
Om pokemon inom ca 20 meter
                             Visa på nearby list
Om trycker på pokemon
Augmented reality mode läget kommer upp
Om spelare accepterat kamera
Enhetens kamera startas
                           Spelaren håller in fingret på boll eller curve ball (snurrar bollen), svep med fingret mot pokemon
                                                        Om träffar bollen på pokemonen
                                                                                       Bollen skakar tre gånger
Pokemon fångas 
Om ny pokemon
                                                          500xp till spelaren
Annars
                                                          100xp till spelaren
                                                                                   Pokemonen hamnar i spelarens pokedex
                                                          Annars
                                                                                       Förlorar en boll


Gym
Om tillräckligt nära gym
Om klicka på gymmet och spelare level 5 eller mer
Om första gången i gym
                             Introducera lag
                             Spelaren väljer ett lag
Annars
                                                          Om spelaren och gym samma lag
                                                                                       Träna eller lägga till en pokemon i gym
                                                          Annars
Om spelaren utmanar gymmet
Välj 6 pokemons du vill slåss med
                                                                                                                   Pokemon ställer sig mot gymägaren
                                                                                                                  Om klickar på motståndaren
                                                                                                                                                 Om tryck med fingret
Basattack
                                                                                                                                                                              Mätare blå
                                                                                                                                              Om mätare blå full
Om håller in fingret
                             specialattack 
Om swipe med fingret
                             Hoppa åt sidan
                                                                                                                  Om vinst
                                                                                                                                                 100 xp
Tar över gymmet
Om shop trycker collect award
Får pokecoins
                                                                                                                 Annars
Läk pokemon


      

onsdag 31 augusti 2016

Programmera Pokemon Go klon – del 1 en beskrivande text av spelet

Jag och mina elever tänker försöka göra en enkel klon av Pokemon Go spelet denna höst. För att skapa en klon av något spel måste man först veta hur spelet fungerar. Så jag bad mina elever att beskriva spelet så bra de kan och här kommer lite av det de skrev.

När man startar spelet ska man ge godkännande för att använda mobilens kamera, gps, internet m.m.
Det första som händer när du har laddat ner spelet till din mobil är att du ska döpa, skriv ditt namn,  och designa din avatar. Du väljer kön, hårfärg, ögonfärg samt färger på kepsen, ryggsäcken, tröjan, byxorna och skorna.

Efter att ha skapat sin karaktär visas spelarens avatar på en karta som är baserad på var spelarens telefon befinner sig i världen, detta fungerar med hjälp av mobiltelefoners GPS-funktion.
Man får ett antal pokébollar och man får välja mellan 3 olika pokémon att börja spelet med.  I spelet får man börjar med typ 25 Pokémon bollar som man ska fånga Pokémon med och massa andra saker. Till slut kommer Pokémon bollar att tar slut så hur kan får mer Pokémon bollar? Jo! det finns ”Poké stop” som kan få Pokémon bollar och andra saker. 

Pokestops är som små brevlådor kan man kalla det, går du nära ett pokestop så kan du snurra på ikonen som du får upp om du klickar på den, då kan du få bollar m.m. 
Du ska gå runt för att hitta pokémons som du kan fånga. Målet med att hitta dessa 151 pokémons (vissa finns bara på en speciell kontinent, t.ex. i Europa finns 146 men det går att få resten via ägg som slumpar fram olika pokemons) är för att du ska kunna fånga dom och sedan utveckla dom för att få dom starkare och kunna slåss mot andra pokémons i gym.

De pokémons som finns i närheten är från början osynliga men när man väl kommer tillräckligt nära dem så poppar dem upp runt omkring dig. (100 meter kommer de fram i en near by list, sen ca 20 meter så poppar de upp) När väl en pokémon har spawnat och syns på din skärm kan man trycka på den för att sedan se vilken slag pokémon det är.
Om man vill fånga dom så trycker man på pokémonen. Om man trycker på pokémonen så startas en match där du kan se pokémonens CP, välja att fly och så kan man kasta pokébollar på pokémonen.
När man väl hittat en Pokémon ploppar den upp på spelets karta. Efter att spelaren klickat på den lille filuren hamnar man i spelets så kallade Augmented reality mode. I detta läge använder spelet mobilkameran för att få det att se ut som om Pokémonen är i världen med spelaren. Här måste spelaren försöka fånga Pokèmonen genom att kasta Pokèballs på den.
Du ska lobba en av dina pokébollar i cirkeln genom att swipea på skärmen. När du träffar i cirkeln så kommer pokemonen att fångas i bollen men den kan rymma vilket tvingar dig att behöva kasta och försöka igen.
Pokeball finns i tre kategorier, vanliga pokebollar som är vita på undersidan och röd ovanpå som också har en rund knapp i mitten. Greatball som man får vid nivå 12 och ultraball som man får vid nivå 20. Desto bättre pokéball man använder, desto större blir chansen att man fångar sin pokémon. För att ha en ännu större chans kan man välja att kasta ett hallon (razz berry) och sedan kasta en pokéball. Dock så är det inte garanterat att man fångar en pokémon då den kan försvinna och du kan då inte fånga den igen på samma ställe. Dock om man skulle fånga en pokémon så får man även xp för att kunna levla upp sin karaktär och man får även candy för den specifika pokémonen. Dessa godisar är även till för att kunna evolva den specifika pokémonen.
Dra med fingret uppåt skärmen för att kasta bollen på den Pokémon du vill fånga in. Håll inne fingret på bollen och gör det tills den skinande ringen runt figuren har krympt innan du kastar iväg bollen. Höjd och hastighet påverkar bollens rörelse mot pokemon.

Om man fångar en Pokémon så får man 100 exp och om det var första gången du fånga de pokémonen så får du 500 exp. man kan också få 500 exp om man utvecklar en Pokémon till det nästa steget. Med exp kan man gå upp i spelarnivå som kan ge en spelare nya pokébollar eller andra hjälpmedel för att få exp eller för att fånga Pokémon.
Så får du XP i Pokémon Go:
500 XP – Capture a New Pokémon
500 XP – Evolve a Pokémon
200 XP – Hatch a Pokémon
150 XP – Defeating a Pokémon Trainer at Gym
100 XP – Capture a Pokémon
100 XP – Excellent Throw
100 XP – Battling a Pokémon Trainer at Gym
50 XP – Beat a Pokémon in Training at a Gym
50 XP – Checking in at a Pokéstop
50 XP – Great Throw
10 XP – Nice Throw
10 XP – Curve Ball

När man trycker på pokemonbollen som ligger längst ned i mitten så kommer denna meny upp:
Det här betyder ikonerna på skärmen: 
Avatar-ikonen: Din spelares ansikte syns längst ner till vänster på skärmen. Tryck där för att se information om din spelare, samt en lista på det du har lyckats med i spelet.
Ryggsäcken: Här samlas alla saker du samlar på dig under spelet.
Pokédex: Här är ett index över alla Pokémon och där kan du även se information om de pokémons som du har fångat in.
Pokémon: Här kan du se alla pokémons som du har fångat in.
Pokémon nära dig: På skärmen längst ner till höger kan du klicka för att se vilka pokémons som Oftast hittar du pokémons i närheten av PokéStops, som är den stora blåa ringen på kartan. Poke stop som man kan gå till och snurra på en cirkel. När man snurrar på den får man olika saker som är random nummer. Andra platser som är bra för att fånga pokémons är på platser där det finns mycket turister och konstverk. Köpcentrum är ett exempel på bra ställen!
LureModule rosa datachip som lockar till sig pokemons till pokestops. Dessa lägger man ut själv.
Det finns även ett item som är väldigt likt lures, dessa kallas incense. Incense är som en lure, fast den är inte stationär som luren, men istället mobil, så man kan gå eller cykla och ha incensen runtom sig, detta är användbart om man tex: cyklar, och vill fånga någon extra pokemon på vägen.
Om du har fångat likadana pokémons så kan du byta bort dina dubletter mot godis. Spara de bästa exemplaren (de med högst CP). Om du vill byta bort någon så öppnar du ditt pokémonbibliotek, trycker på den du vill byta bort och scrollar längst ner och trycker på ”Transfer”. Då får du godis i utbyte som du kan använda för att göra dina andra pokémons starkare (genom att trycka på ”Power up”).

Varje Pokemon du fångar får ett visst nummer beroende på spelarens nivå vilket kallas “CP” som står för “Combat Power”. Combat Power bestämmer hur stark din Pokemon är och hur mycket skada de kan tåla emot andra spelares Pokemon. Man kan strida mot andra spelare I “Pokemon gym” vilket är ställen som finns runtom kartan, om spelaren vinner mot ägaren av Pokemon gymmet så får spelaren gymmet tills någon annan spelare vinner mot den nya ägaren. Varje spelare kan välja ett lag när de når nivå 5, dessa lagen används för att ta över gym, det finns tre lag, det gula Team Instinct, det röda Team Valor och det blåa Team Mystic.
I Pokémon GO är ditt mål att fånga alla typer av Pokémon och sedan träna upp dem för att kunna fightas i gym. Jag kan göra så att mitt team kan sätta in flera spelare i gymmet.
I pokemon go finns även så kallade gym som man kan ta över för att få pokecoins, dessa gym är som en arena man lägger in sin bästa pokemon i för att fightas med eventuella rivaler i andra lag. Dessa pokecoins man kan få från gymmen kan man i sin tur använda sig av i en shop, där kan man köpa lures, pokeballs, etc.

I pokemon go så kan man välja att gå med i olika lag, Valor, mystic & instinct. Om man går med I tex: instinct så kan man slåss emot valor & mysic i dessa gym som nämnts ovan.
spelet kan man ta över olika specifika platser som kallas för ”Gym” som kan vara en allmän byggnad som kyrka eller skulptur enligt min erfarenhet. Man kan ta över ett Gym genom att slåss med andra laget som äger Gym eller om ditt lag har över två beskyddare i ett Gym, måste man också slåss med sin egen lag för att kunna vara med och skydda Gym. I striden kommer den Pokémon som använder i striden att blir svårt skadad eller svimmad, därför finns det ”Potions” och ”Revive”. Potions är en typ av spray som behandlar sår som Pokémon har fått i striden och Revive gör sätt Pokémon återfår medvetande.   
Så slåss du mot andra Pokémon:
– Klicka på motståndaren för att göra basattacker.
– För varje basattack fylls en blå mätare i vänstra hörnet. När den är full så håller du in fingret på skärmen för att göra en specialattack som skadar mer än en basattack.
– Undvik att bli attackerad genom att dra åt höger eller vänster på skärmen när du ser att motståndaren ska attackera dig.

Så nu har vi, i text, koll på hur Pokemon Go fungerar. Nästa steg kommer att bli att förenklar detta (eftersom vi inte är proffsprogrammerare på Niantic https://www.nianticlabs.com/ ), göra om till pseudokod och sen till syntaxkod.