source: 2015/30/EllenH/OmaPeli/OmaPeli/OmaPeli/OmaPeli.cs @ 6970

Revision 6970, 5.6 KB checked in by ellihutt, 4 years ago (diff)

pistelaskuri ja top10

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OmaPeli : PhysicsGame
10{
11    const double nopeus = 250;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("esponi");
18    Image tahtiKuva = LoadImage("tahti");
19
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    Timer kiihtyvyysajastin;
23
24    EasyHighScore topLista = new EasyHighScore();
25
26    public override void Begin()
27    {
28        topLista.HighScoreWindow.Closed += w => Alkuvalikko();
29        Alkuvalikko();
30    }
31
32    void AloitaKentta()
33    {
34        ClearAll();
35        Gravity = new Vector(0, -150);
36
37        LuoKentta();
38        LisaaNappaimet();
39        LuoLaskuri();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.2;
43        Camera.StayInLevel = true;
44
45        kiihtyvyysajastin = new Timer();
46        kiihtyvyysajastin.Interval = 1;
47        kiihtyvyysajastin.Timeout += Kiihdytys;
48        kiihtyvyysajastin.Start();
49    }
50
51    void LuoKentta()
52    {
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaTahti);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
58        Level.CreateBorders();
59        Level.Background.CreateStars();
60    }
61
62    void LisaaTaso(Vector paikka, double leveys, double korkeus)
63    {
64        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
65        taso.Position = paikka;
66        taso.Color = Color.HotPink;
67        taso.Tag = "taso";
68        Add(taso);
69    }
70
71    void LisaaTahti(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        tahti.IgnoresCollisionResponse = true;
75        tahti.Position = paikka;
76        tahti.Image = tahtiKuva;
77        tahti.Tag = "tahti";
78        Add(tahti);
79    }
80
81    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
82    {
83        pelaaja1 = new PlatformCharacter(leveys, korkeus);
84        pelaaja1.Position = paikka;
85        pelaaja1.Mass = 4.0;
86        pelaaja1.Image = pelaajanKuva;
87        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
88        AddCollisionHandler(pelaaja1, "taso", TormaaTasoon);
89        Add(pelaaja1);
90    }
91
92    void LisaaNappaimet()
93    {
94        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
95        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
96
97        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
98        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
99        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
100
101        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
102
103        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
104        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
105        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
106
107        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
108    }
109
110    void Liikuta(PlatformCharacter hahmo, double nopeus)
111    {
112        hahmo.Walk(nopeus);
113    }
114
115    void Hyppaa(PlatformCharacter hahmo, double nopeus)
116    {
117        hahmo.Jump(nopeus);
118    }
119
120    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
121    {
122        maaliAani.Play();
123        pisteLaskuri.Value += 1;
124        tahti.Destroy();
125    }
126
127    void TormaaTasoon(PhysicsObject hahmo, PhysicsObject taso)
128   {
129       maaliAani.Play();
130       MessageDisplay.Add("Törmäsit tasoon ja kuolit");
131       hahmo.Destroy();
132       ParhaatPisteet();
133   }
134
135    void Kiihdytys()
136    {
137        if (Gravity.Y < -500)
138        {
139            kiihtyvyysajastin.Stop();
140        }
141        Gravity = Gravity - new Vector(0, 25);
142    }
143
144    void Alkuvalikko()
145    {
146        MultiSelectWindow alkuValikko = new MultiSelectWindow("Valitse pelihahmo", "Herkko Hemiläinen", "Sateenkaariponi", "Kääpiö",
147            "Parhaat pisteet", "Poistu");
148        alkuValikko.AddItemHandler(0, ValitseHerkko);
149        alkuValikko.AddItemHandler(1, ValitseESPoni);
150        alkuValikko.AddItemHandler(2, ValitseKaapio);
151        alkuValikko.AddItemHandler(3, topLista.Show);
152        alkuValikko.AddItemHandler(4, Exit);
153        alkuValikko.DefaultCancel = 4;
154        Add(alkuValikko);
155    }
156
157    void ValitseHerkko()
158    {
159        pelaajanKuva = LoadImage("herkko");
160        AloitaKentta();
161    }
162
163    void ParhaatPisteet()
164    {
165       pelaaja1.Destroy();
166       topLista.EnterAndShow(pisteLaskuri.Value);
167    }
168   
169    void ValitseESPoni()
170    {
171        pelaajanKuva = LoadImage("esponi");
172        AloitaKentta();
173    }
174
175    void ValitseKaapio()
176    {
177        pelaajanKuva = LoadImage("kaapio");
178        AloitaKentta();
179    }
180
181    IntMeter pisteLaskuri;
182
183    void LuoLaskuri()
184    {
185        pisteLaskuri = new IntMeter(0);
186
187        Label pisteNaytto = new Label();
188        pisteNaytto.X = Screen.Left + 100;
189        pisteNaytto.Y = Screen.Top - 100;
190        pisteNaytto.TextColor = Color.White;
191        pisteNaytto.Title = "Pisteet";
192
193        pisteNaytto.BindTo(pisteLaskuri);
194        Add(pisteNaytto);
195
196
197    }
198}
Note: See TracBrowser for help on using the repository browser.