source: 2013/26/Olli-PekkaL/'Murica/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 4243

Revision 4243, 6.5 KB checked in by olalleht, 6 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("UKKELI 2.0");
18    Image tahtiKuva = LoadImage("PURILAINEN");
19    Image piikkikuva = LoadImage("Piikki");
20    Image porkkanakuva = LoadImage("Porkkana");
21    Image Makkari = LoadImage("Makkari");
22
23    SoundEffect maaliAani = LoadSoundEffect("maali");
24
25    IntMeter hampurilaislaskuri = new IntMeter(0, 0, 50);
26
27    int kenttaNro = 1;
28
29    public override void Begin()
30    {
31        SeuraavaKentta();
32    }
33
34    void LuoKentta(string kentanNimi)
35    {
36        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
37        kentta.SetTileMethod('#', LisaaTaso);
38        kentta.SetTileMethod('*', LisaaTahti);
39        kentta.SetTileMethod('N', LisaaPelaaja);
40        kentta.SetTileMethod('P', LisaaPiikki);
41        kentta.SetTileMethod('O', LisaaPorkkana);
42        kentta.SetTileMethod('M', LisaaMaali);
43        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
44        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
45    }
46
47    void LisaaTaso(Vector paikka, double leveys, double korkeus)
48    {
49        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
50        taso.Position = paikka;
51        taso.Color = Color.Green;
52        Add(taso);
53       
54    }
55
56    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
57    {
58        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
59        piikki.Position = paikka;
60        piikki.Image = piikkikuva;
61        piikki.Tag = "piikki";
62        Add(piikki);
63
64    }
65    void LisaaMaali(Vector paikka, double leveys, double korkeus)
66    {
67
68        PhysicsObject maali = PhysicsObject.CreateStaticObject(200, 100);
69        maali.Image = Makkari;
70        maali.IgnoresCollisionResponse = true;
71        maali.Position = paikka;
72        maali.Tag = "Makkari";
73        Add(maali);
74
75    }
76
77    void LisaaTahti(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject hampurilainen = PhysicsObject.CreateStaticObject(leveys, korkeus/2);
80        hampurilainen.IgnoresCollisionResponse = true;
81        hampurilainen.Position = paikka;
82        hampurilainen.Image = tahtiKuva;
83        hampurilainen.Tag = "Hampurilainen";
84        Add(hampurilainen);
85    }
86
87
88
89    void LisaaPorkkana(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject porkkana = PhysicsObject.CreateStaticObject(leveys / 2, korkeus);
92        porkkana.IgnoresCollisionResponse = true;
93        porkkana.Position = paikka;
94        porkkana.Image = porkkanakuva;
95        porkkana.Tag = "Porkkana";
96        Add(porkkana);
97    }
98
99
100
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Shape = Shape.FromImage(pelaajanKuva);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 5.0;
107        pelaaja1.Image = pelaajanKuva;
108        AddCollisionHandler(pelaaja1, "Hampurilainen", TormaaTahteen);
109        AddCollisionHandler(pelaaja1, "piikki", TormaaPiikkiin);
110        AddCollisionHandler(pelaaja1, "Porkkana", tormaaPorkkanaan);
111        AddCollisionHandler(pelaaja1, "Makkari", tormaaMaaliin);
112        Add(pelaaja1);
113    }
114
115    void LisaaNappaimet()
116    {
117        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
119
120        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
121        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
122        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
123
124        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
125
126        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
127        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
128        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
129
130        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
131    }
132
133    void Liikuta(PlatformCharacter hahmo, double nopeus)
134    {
135        hahmo.Walk(nopeus);
136    }
137
138    void Hyppaa(PlatformCharacter hahmo, double nopeus)
139    {
140        hahmo.Jump(nopeus);
141    }
142
143    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject tahti)
144    {
145        Timer.SingleShot(2.0, SeuraavaKentta);
146        Explosion rajahdys = new Explosion(100 * hahmo.Size.X/40.0);
147        rajahdys.Position = hahmo.Position;
148        Add(rajahdys);
149        for (int i = 0; i < hampurilaislaskuri.Value; i++)
150        {
151            PhysicsObject purilainen = new PhysicsObject(30, 30);
152            purilainen.Position = hahmo.Position + RandomGen.NextVector(10, 50);
153            purilainen.Image = tahtiKuva;
154            Add(purilainen);
155        }
156        hahmo.Destroy();
157        MessageDisplay.Add("Kuolit...");
158    }
159
160    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
161    {
162        maaliAani.Play();
163        MessageDisplay.Add("SÖIT PURILAISEN!!!!!");
164        tahti.Destroy();
165        pelaaja1.Size *= 1.1;
166        hampurilaislaskuri.Value++;
167
168    }
169
170   void SeuraavaKentta()
171    {
172        ClearAll();
173
174        hampurilaislaskuri.Value = 0;
175
176        if (kenttaNro == 1) LuoKentta("kentta1");
177        else if (kenttaNro == 2) LuoKentta("kentta2");
178        else if (kenttaNro == 3) LuoKentta("kentta2");       
179        else if (kenttaNro > 3) Exit();
180
181
182        LisaaNappaimet();
183        Gravity = new Vector(0, -1000);
184
185        Camera.Follow(pelaaja1);
186        Camera.ZoomFactor = 1.7;
187        Camera.StayInLevel = true;
188    }
189
190   void tormaaPorkkanaan(PhysicsObject hahmo,PhysicsObject porkkana)
191   {
192       porkkana.Destroy();
193       pelaaja1.Size *= 0.5;
194       MessageDisplay.Add("Söit Porkkanan");
195       hampurilaislaskuri.Value--;
196
197   }
198
199   void tormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
200   {
201       kenttaNro++;
202       SeuraavaKentta();
203
204   }
205
206
207
208}
209
Note: See TracBrowser for help on using the repository browser.