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

Revision 8415, 6.1 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    public override void Begin()
22    {
23        Gravity = new Vector(0, -1000);
24
25        LuoKentta();
26        LisaaNappaimet();
27        LuoPistelaskuri();
28
29        Camera.Follow(pelaaja1);
30        Camera.ZoomFactor = 1.2;
31        Camera.StayInLevel = true;
32       
33    }
34
35    void LuoKentta()
36    {
37        TileMap kentta = TileMap.FromLevelAsset("kentta1");
38        kentta.SetTileMethod('#', LisaaTaso);
39        kentta.SetTileMethod('p', LisaaPiikki);
40        kentta.SetTileMethod('D', LisaaTahti);
41        kentta.SetTileMethod('N', LisaaPelaaja);
42        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
43        Level.CreateBorders();
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    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
56    {
57        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
58        piikki.Position = paikka;
59        piikki.Color = Color.Red;
60        piikki.Image = piikkikuva;
61        Add(piikki);
62        piikki.Tag = "piikki";
63    }
64
65    void LisaaTahti(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        tahti.IgnoresCollisionResponse = true;
69        tahti.Position = paikka;
70        tahti.Image = doritos;
71        tahti.Tag = "tahti";
72        Add(tahti);
73    }
74
75    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
76    {
77        pelaaja1 = new PlatformCharacter(leveys, korkeus);
78        pelaaja1.Position = paikka;
79        pelaaja1.Mass = 4.0;
80        pelaaja1.Image = pelaajanKuva;
81        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
82        AddCollisionHandler(pelaaja1, "piikki", tormaapiikkiin);
83        Add(pelaaja1);
84        //pelaaja1 on PlatformCharacter-tyyppinen
85        pelaaja1.Weapon = new AssaultRifle(30, 10);
86
87        //Ammusten määrä aluksi:
88        pelaaja1.Weapon.Ammo.Value = 1000;
89
90        //Mitä tapahtuu kun ammus osuu johonkin?
91        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
92
93        pelaaja1.Weapon.IsVisible = false;
94
95    }
96    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
97    {
98        ammus.Destroy();
99    }
100
101    void LisaaNappaimet()
102    {
103        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
104        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
105
106        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
107        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
108        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
109
110        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
111
112        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
113        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
114        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
115        Keyboard.Listen(Key.F5, ButtonState.Pressed, Konsoli, "");
116        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
117
118    }
119    void AmmuAseella(PlatformCharacter pelaaja)
120    {
121        if (pisteLaskuri.Value > 0)
122        {
123            PhysicsObject ammus = pelaaja.Weapon.Shoot();
124
125            if (ammus != null)
126            {
127                ammus.Size *= 2;
128                ammus.Image = shurikenkuva;
129                //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
130                pisteLaskuri.Value--;
131            }
132        }
133    }
134    void Konsoli()
135    {
136 InputWindow kysymysIkkuna = new InputWindow("Konsoli");
137        kysymysIkkuna.TextEntered += ProcessInput;
138        Add(kysymysIkkuna);
139    }
140
141    void ProcessInput(InputWindow ikkuna)
142    {
143        string[] vastaus = ikkuna.InputBox.Text.Split(' ');
144
145        if(vastaus[0]=="speed")
146        {
147            nopeus = int.Parse(vastaus[1]);
148        }
149
150        if (vastaus[0] == "gravity")
151        {
152            Gravity =new Vector(0, int.Parse(vastaus[1]));
153        }
154        if (vastaus[0] == "BOING")
155        {
156            hyppyNopeus = int.Parse(vastaus[1]);
157        }
158        if (vastaus[0]=="sanic")
159        {
160            nopeus = 3500;
161        }
162    }
163
164    void Liikuta(PlatformCharacter hahmo, double suunta)
165    {
166        hahmo.Walk(nopeus* suunta);
167    }
168
169    void Hyppaa(PlatformCharacter hahmo)
170    {
171        hahmo.Jump(hyppyNopeus);
172    }
173
174    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
175    {
176        maaliAani.Play();
177        MessageDisplay.Add("nom nom!");
178        tahti.Destroy();
179    }
180    void tormaapiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
181    {
182        MessageDisplay.Add("sinä hävisit");
183        pelaaja1.Destroy();
184    }
185    IntMeter pisteLaskuri;
186
187    void LuoPistelaskuri()
188    {
189        pisteLaskuri = new IntMeter(15);
190
191        Label pisteNaytto = new Label();
192        pisteNaytto.X = Screen.Left + 100;
193        pisteNaytto.Y = Screen.Top - 100;
194        pisteNaytto.TextColor = Color.Black;
195        pisteNaytto.Color = Color.White;
196
197        pisteNaytto.BindTo(pisteLaskuri);
198        Add(pisteNaytto);
199
200    }
201}
Note: See TracBrowser for help on using the repository browser.