source: 2016/koodauskerho/VilleH/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/ninjakissanhikileikit.cs @ 8421

Revision 8421, 9.6 KB checked in by sieerinn, 2 years ago (diff)
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    double nopeus = 650;
12    double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    Image pelaajanKuva = LoadImage("kissa");
17    Image doritos = LoadImage("doritos-nacho-cheese");
18    Image piikkikuva = LoadImage("piikki");
19    SoundEffect maaliAani = LoadSoundEffect("maali");
20    Image shurikenkuva = LoadImage("shuriken.");
21    Vector alkupaikka;
22    Image doggokuva = LoadImage("doggo");
23    public override void Begin()
24    {
25        Gravity = new Vector(0, -1000);
26
27        LuoKentta();
28        LisaaNappaimet();
29        LuoPistelaskuri();
30        LuoDogggolaskuri();
31        Camera.Follow(pelaaja1);
32        Camera.ZoomFactor = 1.2;
33        Camera.StayInLevel = true;
34
35    }
36
37    void LuoKentta()
38    {
39        TileMap kentta = TileMap.FromLevelAsset("kentta1");
40        kentta.SetTileMethod('#', LisaaTaso);
41        kentta.SetTileMethod('p', LisaaPiikki);
42        kentta.SetTileMethod('D', LisaaTahti);
43        kentta.SetTileMethod('N', delegate (Vector paikka, double leveys, double korkeus) { pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus); });
44        kentta.SetTileMethod('W', Lisaamaali);
45        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
46        Level.CreateBorders();
47        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
48    }
49
50    void LisaaTaso(Vector paikka, double leveys, double korkeus)
51    {
52        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
53        taso.Position = paikka;
54        taso.Color = Color.Green;
55        Add(taso);
56    }
57
58    void Lisaamaali(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.Pink;
63        taso.Tag = "maali";
64        Add(taso);
65    }
66    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        piikki.Position = paikka;
70        piikki.Color = Color.Red;
71        piikki.Image = piikkikuva;
72        Add(piikki);
73        piikki.Tag = "piikki";
74    }
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        tahti.IgnoresCollisionResponse = true;
80        tahti.Position = paikka;
81        tahti.Image = doritos;
82        tahti.Tag = "tahti";
83        Add(tahti);
84    }
85
86    PlatformCharacter LisaaPelaaja(Vector paikka, double leveys, double korkeus)
87    {
88        PlatformCharacter pelaaja1 = new PlatformCharacter(leveys, korkeus);
89        pelaaja1.Position = paikka;
90        pelaaja1.Mass = 4.0;
91        pelaaja1.Image = pelaajanKuva;
92        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
93        AddCollisionHandler(pelaaja1, "piikki", tormaapiikkiin);
94        AddCollisionHandler(pelaaja1, "maali", voitapeli);
95        Add(pelaaja1);
96        //pelaaja1 on PlatformCharacter-tyyppinen
97        pelaaja1.Weapon = new AssaultRifle(30, 10);
98
99        //Ammusten määrä aluksi:
100        pelaaja1.Weapon.Ammo.Value = 1000;
101
102        //Mitä tapahtuu kun ammus osuu johonkin?
103        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
104
105        pelaaja1.Weapon.IsVisible = false;
106        alkupaikka = pelaaja1.Position;
107        return pelaaja1;
108    }
109    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
110    {
111        ammus.Destroy();
112    }
113
114    void LisaaNappaimet()
115    {
116        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
118        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
119
120        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
121        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
122        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
123
124
125
126        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
127        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
128        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
129        Keyboard.Listen(Key.F5, ButtonState.Pressed, Konsoli, "");
130        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
131
132    }
133    void AmmuAseella(PlatformCharacter pelaaja)
134    {
135        if (pisteLaskuri.Value > 0)
136        {
137            PhysicsObject ammus = pelaaja.Weapon.Shoot();
138
139            if (ammus != null)
140            {
141                ammus.Size *= 2;
142                ammus.Image = shurikenkuva;
143                //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
144                pisteLaskuri.Value--;
145            }
146        }
147    }
148    void Konsoli()
149    {
150        InputWindow kysymysIkkuna = new InputWindow("Konsoli");
151        kysymysIkkuna.TextEntered += ProcessInput;
152        Add(kysymysIkkuna);
153    }
154
155    void ProcessInput(InputWindow ikkuna)
156    {
157        string[] vastaus = ikkuna.InputBox.Text.Split(' ');
158
159        if (vastaus[0] == "speed")
160        {
161            nopeus = int.Parse(vastaus[1]);
162        }
163
164        if (vastaus[0] == "gravity")
165        {
166            Gravity = new Vector(0, int.Parse(vastaus[1]));
167        }
168        if (vastaus[0] == "BOING")
169        {
170            hyppyNopeus = int.Parse(vastaus[1]);
171        }
172        if (vastaus[0] == "sanic")
173        {
174            nopeus = 3500;
175        }
176        if (vastaus[0] == "win")
177        {
178            throw new Exception("lol u nob");
179        }
180        if (vastaus[0] == "hux")
181        {
182            nopeus = 5000;
183            hyppyNopeus = 5000;
184        }
185        if (vastaus[0] == "YOLO")
186        {
187            nopeus = 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.0;
188        }
189        if (vastaus[0] == "spawn")
190        {
191            pelaaja1.Position = alkupaikka;
192        }
193        if (vastaus[0] == "hax")
194        {
195            nopeus = 100;
196            hyppyNopeus = 100;
197            MessageWindow viesti = new MessageWindow("NOPE");
198            Add(viesti);
199        }
200        if (vastaus[0] == "doggo")
201        {
202            int dogot = 1;
203            if (vastaus.Length > 1)
204            {
205                dogot = int.Parse(vastaus[1]);
206            }
207            DoggoLaskuri.Value += dogot;
208
209            for (int i = 0; i < dogot; i++)
210            {
211                PlatformCharacter pelaaja2 = LisaaPelaaja(pelaaja1.Position + new Vector(40, 5*i), 40, 40);
212                pelaaja2.Tag = "pelaaja2";
213                Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -1.0);
214                Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, 1.0);
215                Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2);
216
217                pelaaja2.Image = doggokuva;
218
219                ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -1.0);
220                ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, 1.0);
221                ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2);
222            }
223
224        }
225        if (vastaus[0] == "destroy")
226        {
227
228            GetObjectsWithTag("pelaaja2").ForEach(pelaaja2 => pelaaja2.Destroy());
229            DoggoLaskuri.Value = 0;
230        }
231    }
232
233    void Liikuta(PlatformCharacter hahmo, double suunta)
234    {
235        hahmo.Walk(nopeus * suunta);
236    }
237
238    void Hyppaa(PlatformCharacter hahmo)
239    {
240        hahmo.Jump(hyppyNopeus);
241    }
242
243    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
244    {
245        maaliAani.Play();
246        MessageDisplay.Add("nom nom!");
247        tahti.Destroy();
248    }
249    void tormaapiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
250    {
251        MessageDisplay.Add("sinä hävisit");
252        pelaaja1.Destroy();
253    }
254    IntMeter pisteLaskuri;
255
256    void LuoPistelaskuri()
257    {
258        pisteLaskuri = new IntMeter(15);
259
260        Label pisteNaytto = new Label();
261        pisteNaytto.X = Screen.Left + 100;
262        pisteNaytto.Y = Screen.Top - 100;
263        pisteNaytto.TextColor = Color.Black;
264        pisteNaytto.Color = Color.White;
265
266        pisteNaytto.BindTo(pisteLaskuri);
267        Add(pisteNaytto);
268
269    }
270    void voitapeli(PhysicsObject pelaaja, PhysicsObject kohde)
271    {
272        MessageWindow viesti = new MessageWindow("voittaaksesi paina f5 kirjoita konsoliin win");
273        Add(viesti);
274    }
275    IntMeter DoggoLaskuri;
276
277    void LuoDogggolaskuri()
278    {
279        DoggoLaskuri = new IntMeter(0);
280
281        Label pisteNaytto = new Label();
282        pisteNaytto.X = Screen.Right - 100;
283        pisteNaytto.Y = Screen.Top - 100;
284        pisteNaytto.TextColor = Color.Black;
285        pisteNaytto.Color = Color.White;
286        pisteNaytto.Title = "Doggies";
287        pisteNaytto.BindTo(DoggoLaskuri);
288        Add(pisteNaytto);
289
290    }
291}
Note: See TracBrowser for help on using the repository browser.