source: 2013/26/WilleK/Ensimmäinen Peli/Ensimmäinen Peli/Ensimmäinen Peli/Ensimmäinen_Peli.cs @ 4237

Revision 4237, 7.7 KB checked in by wiaukota, 7 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Ensimmäinen_Peli : PhysicsGame
10{
11    IntMeter nopeus;
12    IntMeter hyppyNopeus;
13    const int RUUDUN_KOKO = 40;
14
15    Vector alkupiste;
16
17    PlatformCharacter pelaaja1;
18
19    Image pelaajanKuva = LoadImage("norsu");
20    Image tahtiKuva = LoadImage("tahti");
21    Image PosuKuva = LoadImage("Possu");
22    Image LisäVoima = LoadImage("Voima");
23    Image Ruoho = LoadImage("GrassTexture");
24    Image Palikka2 = LoadImage("alkuun");
25    Image tyyppiLyoKuva = LoadImage("TyyppiLyo");
26    Image nyrkkikuva = LoadImage("Nyrkki");
27
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29    DoubleMeter elamaLaskuri;
30
31    public override void Begin()
32    {
33        AloitaPeli();
34    }
35
36    public void AloitaPeli()
37    {
38        nopeus = new IntMeter(200);
39        hyppyNopeus = new IntMeter(700);
40
41        ClearAll();
42        Gravity = new Vector(0, -1000);
43        LuoElamaLaskuri();
44
45        LuoKentta();
46        LisaaNappaimet();
47        Camera.Follow(pelaaja1);
48        Camera.ZoomFactor = 1.2;
49        Camera.StayInLevel = true;
50        MediaPlayer.Play("GroundTheme");
51        MediaPlayer.IsRepeating = true;
52        MediaPlayer.Volume = 0.2;
53    }
54
55    void LuoKentta()
56    {
57        ColorTileMap kentta = ColorTileMap.FromLevelAsset("kentta1");
58        kentta.SetTileMethod(Color.Black, LisaaTaso);
59        kentta.SetTileMethod("FFD800", LisaaTahti);
60        kentta.SetTileMethod("4CFF00", LisaaPelaaja);
61        kentta.SetTileMethod("0026FF", LisaaPalikka);
62        kentta.SetTileMethod("FF0000", LisaaVihu);
63        kentta.SetTileMethod("B6FF00", LisaaRuoho);
64        kentta.SetTileMethod("404040", Palikka3);
65        //kentta.SetTileMethod("")
66        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
67        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
68    }
69
70    void Palikka3(Vector paikka, double leveys, double korkeus)
71    {
72        PhysicsObject Palikka3 = PhysicsObject.CreateStaticObject(leveys, korkeus);
73        Palikka3.Image = Palikka2;
74        Palikka3.Position = paikka;
75        Add(Palikka3);
76    }
77
78    void LisaaRuoho(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject Ruoho1 = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        Ruoho1.Image = Ruoho;
82        Ruoho1.Position = paikka;
83        Add(Ruoho1);
84    }
85
86    void LuoElamaLaskuri()
87    {
88        elamaLaskuri = new DoubleMeter(10);
89        elamaLaskuri.MaxValue = 10;
90        elamaLaskuri.LowerLimit += ElamaLoppui;
91
92        ProgressBar elamaPalkki = new ProgressBar(150, 20);
93        elamaPalkki.Left = Screen.Left + 30;
94        elamaPalkki.Top = Screen.Top - 30;
95        elamaPalkki.BindTo(elamaLaskuri);
96        elamaPalkki.BorderColor = Color.Black;
97        Add(elamaPalkki);
98    }
99
100    void ElamaLoppui()
101    {
102        MessageDisplay.Add("Elämät loppuivat, voi voi.");
103        pelaaja1.Position = alkupiste;
104        elamaLaskuri.Value = elamaLaskuri.MaxValue;
105    }
106
107    void LisaaVihu(Vector paikka, double leveys, double korkeus)
108    {
109        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
110        vihu.Position = paikka;
111        vihu.Image = PosuKuva;
112        vihu.Brain = new PlatformWandererBrain();
113        vihu.Tag = "pahis";
114        Add(vihu);
115    }
116
117    void LisaaTaso(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        taso.Position = paikka;
121        taso.Color = Color.Brown;
122        Add(taso);
123    }
124
125    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
126    {
127        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
128        palikka.IgnoresCollisionResponse = true;
129        palikka.Image = LisäVoima;
130        palikka.Position = paikka;
131        palikka.Tag = "palikka";
132        Add(palikka);
133    }
134
135    void LisaaTahti(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        tahti.IgnoresCollisionResponse = true;
139        tahti.Position = paikka;
140        tahti.Image = tahtiKuva;
141        tahti.Tag = "tahti";
142        Add(tahti);
143    }
144
145    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
146    {
147        alkupiste = paikka;
148        pelaaja1 = new PlatformCharacter(leveys, korkeus);
149        pelaaja1.Position = paikka;
150        pelaaja1.Mass = 4.0;
151        pelaaja1.Image = pelaajanKuva;
152        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
153        AddCollisionHandler(pelaaja1, "palikka", TormaaPalikkaan);
154        AddCollisionHandler(pelaaja1, "pahis", CollisionHandler.AddMeterValue(elamaLaskuri, -1));
155        Add(pelaaja1);
156    }
157
158    void LisaaNappaimet()
159    {
160        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
161        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
162        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Pelaa Uudestaan");
163
164        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus, -1);
165        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus, 1);
166        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
167        Keyboard.Listen(Key.Space, ButtonState.Pressed, Lyo, "Pelaaja Lyö", pelaaja1);
168
169
170        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
171
172        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, nopeus, 1);
173        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus, -1);
174        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175
176        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
177    }
178
179    void Lyo(PlatformCharacter hahmo)
180    {
181        hahmo.Image = tyyppiLyoKuva;
182        GameObject nyrkki = new GameObject(hahmo.Width, hahmo.Height);
183        nyrkki.Image = nyrkkikuva;
184        hahmo.Add(nyrkki);
185        int suunta = hahmo.FacingDirection == Direction.Right ? 1 : -1;
186        if (hahmo.FacingDirection == Direction.Left) nyrkki.Image = Image.Mirror(nyrkki.Image);
187        nyrkki.Position = new Vector(suunta * hahmo.Width, 0);
188        //nyrkki.Position = hahmo.Position + new Vector(hahmo.Width, 0);
189        //Add(nyrkki);
190
191        List<GameObject> vihutLahella = GetObjectsAt(hahmo.Position + nyrkki.Position, "pahis", nyrkki.Width);
192        vihutLahella.ForEach(x => x.Destroy());
193
194        Timer.SingleShot(0.2, delegate
195        {
196            hahmo.Image = pelaajanKuva;
197            nyrkki.Destroy();
198        });
199    }
200
201    void Liikuta(PlatformCharacter hahmo, IntMeter nopeus, int suunta)
202    {
203        hahmo.Walk(nopeus.Value * suunta);
204    }
205
206    void Hyppaa(PlatformCharacter hahmo, IntMeter nopeus)
207    {
208        hahmo.Jump(nopeus);
209    }
210
211    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
212    {
213        maaliAani.Play();
214        tahti.Destroy();
215    }
216
217    void TormaaPalikkaan(PhysicsObject hahmo, PhysicsObject palikka)
218    {
219        maaliAani.Play();
220        palikka.Destroy();
221        nopeus.Value += 200;
222        hyppyNopeus.Value += 100;
223        MessageDisplay.Add("Nopeus&HyppyNopeus suurempi 30s");
224        Timer.SingleShot(30, PalautaNopeus);
225    }
226
227    void PalautaNopeus()
228    {
229        nopeus.Value -= 200;
230        hyppyNopeus.Value -= 100;
231    }
232}
Note: See TracBrowser for help on using the repository browser.