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

Revision 7014, 5.7 KB checked in by ellihutt, 4 years ago (diff)

valmis

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