source: 2016/30/LeoM/Akupeli/Akupeli/Akupeli/Akupeli.cs @ 8228

Revision 8228, 7.0 KB checked in by lemaline, 5 years ago (diff)

PELI ON VALMIS!

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Akupeli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 900;
13    const int RUUDUN_KOKO = 40;
14    int kenttanro = 1;
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("akusedo2");
18    Image tahtiKuva = LoadImage("tahti");
19    Image ovikuva= LoadImage("ovi");
20    Image roopekuva = LoadImage("roope");
21
22    SoundEffect maaliAani = LoadSoundEffect("maali");
23    SoundEffect hyppyAani = LoadSoundEffect("jump");
24    SoundEffect roopeAani = LoadSoundEffect("loppu");
25    public override void Begin()
26    {
27        ClearAll();
28        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
29"Aloita peli", "Lopeta");
30        Add(alkuValikko);
31        alkuValikko.AddItemHandler(0, AloitaPeli);
32        alkuValikko.AddItemHandler(1, Exit);
33        MediaPlayer.Play("musa");
34
35
36    }
37
38    void AloitaPeli()
39    {
40        ClearAll();
41        Gravity = new Vector(0, -1000);
42
43        MessageDisplay.Add("Musiikki: Toby Fox");
44
45
46        LuoKentta();
47        LisaaNappaimet();
48
49        Camera.Follow(pelaaja1);
50        Camera.ZoomFactor = 1.2;
51        Camera.StayInLevel = true;
52    }
53
54    void LuoKentta()
55    {
56        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttanro);
57        kentta.SetTileMethod('#', LisaaTaso);
58        kentta.SetTileMethod('*', LisaaTahti);
59        kentta.SetTileMethod('!', LisaaMaali);
60        kentta.SetTileMethod('N', LisaaPelaaja);
61        kentta.SetTileMethod('p', LisaaPiikki);
62        kentta.SetTileMethod('R', LisaaVihollinen);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.Pink, Color.HotPink);
66    }
67
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        Add(taso);
74    }
75    void LisaaMaali(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
78        maali.IgnoresCollisionResponse = true;
79        maali.Position = paikka;
80        maali.Image = ovikuva;
81        maali.Tag = "maali";
82        Add(maali);
83    }
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93
94    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject RoopeSedo = new PhysicsObject(leveys, korkeus);
97        RoopeSedo.Position = paikka;
98        RoopeSedo.Image = roopekuva;
99        RoopeSedo.Tag = "Roope";
100        Add(RoopeSedo);
101        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
102        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
103        seuraajanAivot.DistanceFar = 6000;           // Etäisyys jolla aletaan seurata kohdetta
104        seuraajanAivot.FarBrain = seuraajanAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
105        RoopeSedo.Brain = seuraajanAivot;
106        RoopeSedo.CanRotate = false;
107        RoopeSedo.IgnoresCollisionResponse = true;
108     }
109   
110
111void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
112    {
113        pelaaja1 = new PlatformCharacter(leveys, korkeus);
114        pelaaja1.Position = paikka;
115        pelaaja1.Mass = 4.0;
116        pelaaja1.Image = pelaajanKuva;
117        pelaaja1.Destroyed += delegate () 
118        {
119            roopeAani.Play();
120
121            MessageDisplay.Add("ROOPE SEDÖ SAI SUT KIINNI");
122            Timer.SingleShot(2.0, Begin);
123
124        };
125        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
126        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
127        Add(pelaaja1);
128        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
129        AddCollisionHandler(pelaaja1, "Roope", CollisionHandler.DestroyObject);
130        pelaaja1.Tag = "pelaaja";
131    }
132
133    void LisaaNappaimet()
134    {
135        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
136        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
137
138        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
139        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
140        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
143
144        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
145        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
146        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
147
148        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
149    }
150
151    void Liikuta(PlatformCharacter hahmo, double nopeus)
152    {
153        hahmo.Walk(nopeus);
154    }
155
156    void Hyppaa(PlatformCharacter hahmo, double nopeus)
157    {
158        hahmo.ForceJump(nopeus);
159        hyppyAani.Play();
160    }
161
162    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
163    {
164        maaliAani.Play();
165        MessageDisplay.Add("Keräsit tähden!");
166        tahti.Destroy();
167    }
168    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
169    {
170        maaliAani.Play();
171        MessageDisplay.Add("PÄÄSIT MAALIIN!");
172        Timer.SingleShot(1, SeuraavaKentta);
173       
174    }
175
176    void SeuraavaKentta()
177    {
178        kenttanro++;
179        if(kenttanro > 2)
180        {
181            kenttanro = 1;
182            MessageDisplay.Add("loppu, voitit pelin!");
183            ClearAll();
184            MultiSelectWindow loppuvalikko = new MultiSelectWindow("Pelin loppuvalikko",
185    "uusi peli", "Lopeta");
186            Add(loppuvalikko);
187            loppuvalikko.AddItemHandler(0, AloitaPeli);
188            loppuvalikko.AddItemHandler(1, Exit);
189
190
191        }
192        else { AloitaPeli(); }
193       
194    }
195
196    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
197    {
198        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
199        piikki.IgnoresCollisionResponse = true;
200        piikki.Position = paikka;
201        piikki.Color = Color.Gray;
202        piikki.Tag = "piikki";
203        Add(piikki);
204        piikki.Shape = Shape.Triangle;
205    }
206    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
207    {
208        MessageDisplay.Add("OSUIT PIIKKIIN!");
209        hahmo.Destroy();
210       
211       
212    }
213   
214}
Note: See TracBrowser for help on using the repository browser.