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

Revision 8189, 5.3 KB checked in by lemaline, 3 years ago (diff)

kentät toimii ja piikit toimii. ei vielä roope sedööööööööööööö

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
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    public override void Begin()
24    {
25        ClearAll();
26        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
27"Aloita peli", "Lopeta");
28        Add(alkuValikko);
29        alkuValikko.AddItemHandler(0, AloitaPeli);
30        alkuValikko.AddItemHandler(1, Exit);
31
32       
33       
34    }
35
36    void AloitaPeli()
37    {
38        ClearAll();
39        Gravity = new Vector(0, -1000);
40
41
42        LuoKentta();
43        LisaaNappaimet();
44
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48    }
49
50    void LuoKentta()
51    {
52        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttanro);
53        kentta.SetTileMethod('#', LisaaTaso);
54        kentta.SetTileMethod('*', LisaaTahti);
55        kentta.SetTileMethod('!', LisaaMaali);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.SetTileMethod('p', LisaaPiikki);
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateGradient(Color.Pink, Color.HotPink);
61    }
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Color = Color.Green;
68        Add(taso);
69    }
70    void LisaaMaali(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        maali.IgnoresCollisionResponse = true;
74        maali.Position = paikka;
75        maali.Image = ovikuva;
76        maali.Tag = "maali";
77        Add(maali);
78    }
79    void LisaaTahti(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        tahti.IgnoresCollisionResponse = true;
83        tahti.Position = paikka;
84        tahti.Image = tahtiKuva;
85        tahti.Tag = "tahti";
86        Add(tahti);
87    }
88   
89   
90   
91
92void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
93    {
94        pelaaja1 = new PlatformCharacter(leveys, korkeus);
95        pelaaja1.Position = paikka;
96        pelaaja1.Mass = 4.0;
97        pelaaja1.Image = pelaajanKuva;
98        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
99        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
100        Add(pelaaja1);
101        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
102    }
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108
109        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
110        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
114
115        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
116        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
117        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
118
119        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
120    }
121
122    void Liikuta(PlatformCharacter hahmo, double nopeus)
123    {
124        hahmo.Walk(nopeus);
125    }
126
127    void Hyppaa(PlatformCharacter hahmo, double nopeus)
128    {
129        hahmo.Jump(nopeus);
130    }
131
132    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
133    {
134        maaliAani.Play();
135        MessageDisplay.Add("Keräsit tähden!");
136        tahti.Destroy();
137    }
138    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
139    {
140        maaliAani.Play();
141        MessageDisplay.Add("PÄÄSIT MAALIIN!");
142        Timer.SingleShot(1, SeuraavaKentta);
143       
144    }
145
146    void SeuraavaKentta()
147    {
148        kenttanro++;
149        if(kenttanro > 2)
150        {
151            Exit(); //Hieno lopetus
152        }
153        AloitaPeli();
154    }
155
156    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
157    {
158        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
159        piikki.IgnoresCollisionResponse = true;
160        piikki.Position = paikka;
161        piikki.Color = Color.Gray;
162        piikki.Tag = "piikki";
163        Add(piikki);
164        piikki.Shape = Shape.Triangle;
165    }
166    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
167    {
168        MessageDisplay.Add("KUOLIT!");
169        hahmo.Destroy();
170        Timer.SingleShot(1, Begin);
171    }
172}
Note: See TracBrowser for help on using the repository browser.