Flash-peliohjelmointi tutorial 4

 

Tutorial 4

 

Ohjeistusta maze pelin rakenteluun:

  1. Tee kuusi movieclippiä:
    1. sokkelo mc (sisältää pelitason) (rekisteröintipiste ylh. vasemalla, koko sama kuin stagen koko: esim 800 x 600)
      1. jonka sisälle sijoitetaan:
        1. kivi mc (useampia instansseja)
        2. avain
        3. pelihahmo
        4. ovi mc
        5. pahis mörkö mc
  2. linkitä sokkelo mc Sokkelo_taso1 luokkaan eli valitse movieclipistä properties > Export for actionscript ja luokkanimi: Sokkelo_taso1
  3. kopioi Y:\Käpylä\AV-Viestinta_2\flashpeli\maze_tiedostot
    kansiosta kaikki .as tiedostot omaan kansioosi
  4. muuta Sokkelo_taso1_pohja.as tiedostonnimi Sokkelo_taso1.as tiedostoksi
  5. valitse kirjastosta kivi mc ja properties > Export for actionscript ja luokkanimeksi Wall (isoilla ja pienillä kirjaimilla oli väliä)
  6. tarkista myös, että kivi mc:n rekisteröintipiste on keskellä
  7. valitse kirjastosta pelihahmo mc ja properties > Export for actionscript ja luokkanimeksi Player ( rekisteröintipiste on keskellä) (täällä myös isoilla ja pienillä kirjaimilla oli väliä)
  8. valitse kirjastosta ovi mc ja properties > Export for actionscript ja luokkanimeksi Door ( rekisteröintipiste keskellä)
  9. instanssin nimet:
    pelihahmolle instanssin nimi: player
    avain mc: lle instanssin nimi: doorKey
    ovi mc:lle instanssin nimi: doorOne
    pahis mörkö movieclipille instanssin nimi: pahisUno
    toiselle pahis mörkö movieclipille instanssin nimi: pahisDue
  10. tuo kivi mc:t kirjastosta sokkelo mc- movieclipin pelitasoon
  11. pistemittari: health meter:
    tee pistemittari / pelihahmon "terveystilamittari" movieclippi:
    1. kaksi sisäkkäistä movieclippiä: suorakulma (instanssin nimi health), jonka sisällä täyteväri myös erillinen movieclippi (instanssin nimi meter)
  12. Game over movieclippi: tee movieclip kirjastoon (ei vielä stagella)
    valitse properties > Export for actionscript ja luokkanimeksi GameOver
  13. tee Game over movieclipin sisälle dynaaminen tekstikenttä, jonka instanssin nimi messageDisplay: tekstikenttä tyyppiä classic ja dynamic, lisää myös embed nappulalla merkit: uppercase, lowercase, ja muut tarvittavat merkit "Also include these characters" tekstikenttään tarvitaan ainakin huutomerkki: !
  14. koodin kohtaa 7. varten tee movieclip jolla instanssin nimi exit (kun pelihahmo osuu tähän movieclippiin pelaaja voittaa pelin)
  15. pahishahmot saa liikkumaan esim. motiontween animoinnilla movieclipin omalla aikajanalla
  16. avaa Sokkelo_taso1.as luokkatiedosto editointia varten
  17. täydennä seuraavaan Sokkelo_taso1 koodipohjaan onEnterFrame metodin pelilooppi monisteesta: (tämä koodi löytyi siis myös y asemalta ( ks. kohta 4.)
  18.     package {
    	import flash.display.MovieClip;
    	import flash.events.Event;
    
    	public class Sokkelo_taso1 extends MovieClip {
    		public function Sokkelo_taso1() {
    			addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    		}
    		private function onAddedToStage(event:Event):void {
    			//Tapahtumakäsittelijät:
    			addEventListener(Event.ENTER_FRAME, onEnterFrame);
    			addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
    		}
    		private function onRemovedFromStage(event:Event):void {
    			//Poistetaan tapahtumakäsittelijät jos 
    			//tämä objekti poistetaan stagelta
    			removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    			removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    			removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
    			trace("Dungeon removed");
    		}
    
    		private function onEnterFrame(event:Event):void {
    			//1. 
    			
    			
    			
    		}
    
    		public function checkCollisionWithPlayer(wall:MovieClip) {
    			if (player!=null) {
    				Collision.block(player, wall);
    			}
    		}
    
    	}
    }
        

    syntyy jotain tällaista: näytä

    klikkaa kuvaa niin näppäin fokus aktivoituu

    Content on this page requires a newer version of Adobe Flash Player.

    Get Adobe Flash player

  19. tästä eteenpäin ohjeet liittyvät lisätehtäviin (koodi ei ole monisteessa)

  20. Tehtävä: lisää toinen ovi ja toinen avain ratkaisu
  21. Luo hahmo movieclipille GameOver tila (esim. jos häviää)
    vinkki: luo hahmo mc:n omalla aikajanalla
    1. uusi layer: labels layer
    2. avainkehys esim kohtaan 10
    3. framelabel nimi
    4. actions layer
    5. stop(); ekaan frameen
    6. luokan koodissa gameover kohdassa: player.gotoAndStop("kohdan3framelabelinnimi")
    7. piilotetaan rivi //parent.removeChild(this);
    8. mutta nyt ongelma: ohjelma alkaa jumittaa
    9. ratkaisu: ehkä täällä
  22. tehtävä: lisää jotain muuta, jota pelaaja voi noukkia vinkki: esim timantti: toiminto: kun pelaaja törmää timanttiin se katoaa pelikentältä. Toteutus: samanlainen luokka kun Wall mutta onEnterFrame funktio:

        private function onEnterFrame(event:Event):void
    		{
    		if (MovieClip(parent).player.hitTestObject(this))
    			{
    				trace("timantti löytyi");
    				MovieClip(parent).lisaaSaaliinLukumaaraa();
    				MovieClip(parent).removeChild(this);
    			}
    
    		}
        
  23. pidetään kirjaa kerätyistä objekteista dynaamisessa tekstikentässä, jonka instanssin nimi saalisSaldo:
    luokan alussa uusi muuttuja:
        public class Sokkelo_taso1 extends MovieClip {
    		
    		var saalisSaldonLukum:int = 0;
            
            
    //        enterFrame metodin jälkeen lisätään  tällainen metodi:
        		public function lisaaSaaliinLukumaaraa():void {
    			 saalisSaldonLukum++;
    			 trace("saalisSaldonLukum ", saalisSaldonLukum);
    			 saalisSaldo.text =  saalisSaldonLukum+"";
    		}
    	
        
  24. tutorial 04b