source: 2017/27/JuusoM/peli/peli/peli/peli.cs @ 8968

Revision 8968, 8.3 KB checked in by npo17_36, 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 peli : PhysicsGame
10{
11    Vector nopeus = new Vector(8000, 00);
12    Vector nopeus1 = new Vector(00, 8000);
13
14
15    const int RUUDUN_KOKO = 40;
16
17    PhysicsObject pelaaja1;
18    Light valo;
19    Image pelaajanKuva = LoadImage("police");
20    Image tahtiKuva = LoadImage("key");
21    Image gangsteri = LoadImage("gangster");
22    Image ovenkuva = LoadImage("door");
23    Image avainkuva = LoadImage("key2");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    List<Vector> avaintenPaikkalista = new List<Vector>();
26
27    public override void Begin()
28    {
29        ClearAll();
30        LuoKentta();
31        LisaaNappaimet();
32        LuoPistelaskuri();
33        Gravity = new Vector(0.0, -800.0);
34        Camera.Follow(pelaaja1);
35        Camera.ZoomFactor = 1.2;
36        Camera.StayInLevel = true;
37    }
38
39
40    void LuoKentta()
41    {
42
43        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
44
45        ruudut.SetTileMethod(Color.Black, LisaaTaso);
46        ruudut.SetTileMethod("4800FF", LisaaPelaaja);
47        ruudut.SetTileMethod("808080", LisaaGangsteri);
48        ruudut.SetTileMethod("FF0000", LisaaOvi);
49        ruudut.SetTileMethod("FFD800", LisaaTahti);
50        ruudut.SetTileMethod("00FFFF", LisaaAvaimenPaikka);
51        ruudut.SetTileMethod("FF6A00", LisaaOvi2);
52        ruudut.Execute(20, 20);
53        LisaaAvain(RandomGen.SelectOne<Vector>(avaintenPaikkalista), 20, 20);
54
55        GameObject tausta = new GameObject(Level.Width, Level.Height);
56
57        Add(tausta, -3);
58        Level.Background.CreateGradient(Color.AshGray, Color.AshGray);
59        Gravity = new Vector(0.0, -800.0);
60
61        Level.AmbientLight = 0.0;
62
63        valo = new Light();
64        valo.Intensity = 1.3;
65        valo.Distance = 13;
66        valo.Position = pelaaja1.Position;
67        Add(valo);
68    }
69
70    protected override void Paint(Canvas canvas)
71    {
72        valo.Position = pelaaja1.Position;
73        base.Paint(canvas);
74
75    }
76    void LisaaTaso(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Position = paikka;
80        taso.Color = Color.Gray;
81        taso.Tag = "seina";
82        Add(taso);
83    }
84
85
86    void LisaaGangsteri(Vector paikka, double leveys, double korkeus)
87    {
88
89        PhysicsObject gangsta = new PhysicsObject(RUUDUN_KOKO / 2, RUUDUN_KOKO / 2);
90        gangsta.Position = paikka;
91        gangsta.Image = gangsteri;
92        gangsta.Tag = "gangsta";
93        gangsta.CanRotate = false;
94        gangsta.IgnoresGravity = true;
95        gangsta.LinearDamping = 0.7;
96
97
98
99        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
100        labyrinttiAivot.Speed = 100.0;
101        labyrinttiAivot.LabyrinthWallTag = "seina";
102
103        gangsta.Brain = labyrinttiAivot;
104        Add(gangsta);
105    }
106
107    void LisaaOvi(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        ovi.Position = paikka;
111        ovi.Image = ovenkuva;
112        ovi.Tag = "ovi";
113        Add(ovi);
114    }
115    void LisaaOvi2(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
118        ovi.Position = paikka;
119        ovi.Image = ovenkuva;
120        ovi.Tag = "ovi2";
121        Add(ovi);
122    }
123    void LisaaTahti(Vector paikka, double leveys, double korkeus)
124    {
125
126        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        tahti.IgnoresCollisionResponse = true;
128        tahti.Position = paikka;
129        tahti.Image = tahtiKuva;
130        tahti.Tag = "tahti";
131        Add(tahti);
132    }
133
134    void LisaaAvaimenPaikka(Vector paikka, double leveys, double korkeus)
135    {
136        avaintenPaikkalista.Add(paikka);
137    }
138    void LisaaAvain(Vector paikka, double leveys, double korkeus)
139    {
140
141        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
142        avain.IgnoresCollisionResponse = true;
143        avain.Position = paikka;
144        avain.Image = avainkuva;
145        avain.Tag = "avain";
146        Add(avain);
147    }
148    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
149    {
150        pelaaja1 = new PhysicsObject(leveys, korkeus);
151        pelaaja1.Position = paikka;
152        pelaaja1.Mass = 4.0;
153        pelaaja1.Image = pelaajanKuva;
154        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
155        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
156        AddCollisionHandler(pelaaja1, "gangsta", TormaaGangstaan);
157        AddCollisionHandler(pelaaja1, "ovi", TormaaOveen);
158        AddCollisionHandler(pelaaja1, "ovi2", TormaaOveen2);
159        pelaaja1.CanRotate = false;
160        pelaaja1.IgnoresGravity = true;
161        pelaaja1.LinearDamping = 0.7;
162        Add(pelaaja1);
163    }
164
165    void TormaaOveen(PhysicsObject pelaaja1, PhysicsObject ovi2)
166    {
167        if (pisteLaskuri.Value > 0)
168        {
169            ovi2.Destroy();
170            pisteLaskuri.Value -= 1;
171        } else
172        {
173            MessageDisplay.Add("Tarvitset avaimen");
174        }
175    }
176
177    void TormaaOveen2(PhysicsObject pelaaja1, PhysicsObject ovi2)
178    {
179        if (pisteLaskuri.Value > 9)
180        {
181            MessageDisplay.Add("voitit pelin");
182            pisteLaskuri.Value -= 10;
183
184
185        }
186        else
187        {
188            MessageDisplay.Add("Tarvitset isomman avaimen");
189        }
190
191    }
192
193    IntMeter pisteLaskuri;
194
195    void LuoPistelaskuri()
196    {
197        pisteLaskuri = new IntMeter(0);
198
199        Label pisteNaytto = new Label();
200        pisteNaytto.X = Screen.Left + 100;
201        pisteNaytto.Y = Screen.Top - 100;
202        pisteNaytto.TextColor = Color.Black;
203        pisteNaytto.Color = Color.White;
204
205        pisteNaytto.BindTo(pisteLaskuri);
206        Add(pisteNaytto);
207    }
208    void LisaaNappaimet()
209    {
210        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
211        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
212
213        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
214
215        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
216
217        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, nopeus1);
218
219        Keyboard.Listen(Key.Down, ButtonState.Down, Hyppaa, "Pelaaja hyppää", pelaaja1, -nopeus1);
220
221        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
222        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, nopeus);
223        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
224
225
226        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
227    }
228
229    void Liikuta(PhysicsObject hahmo, Vector nopeus)
230    {
231        if (nopeus.X < 0)
232            hahmo.TextureWrapSize = new Vector(-1, 1);
233        if (nopeus.X > 0)
234            hahmo.TextureWrapSize = new Vector(1, 1);
235        hahmo.Push(nopeus);
236    }
237
238    void Hyppaa(PhysicsObject hahmo, Vector nopeus1)
239    {
240        hahmo.Push(nopeus1);
241    }
242
243    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
244    {
245        maaliAani.Play();
246        MessageDisplay.Add("Keräsit avaimen");
247        pisteLaskuri.Value += 1;
248        tahti.Destroy();
249    }
250
251    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
252    {
253        MessageDisplay.Add("Keräsit ison avaimen");
254        pisteLaskuri.Value += 10;
255        avain.Destroy();
256    }
257
258    void TormaaGangstaan(PhysicsObject pelaaja1, PhysicsObject gangsta)
259    {
260        MessageDisplay.Add("Jäit kiinni");
261        pelaaja1.Destroy();
262        ClearAll();
263        Begin();
264
265    }
266
267   // void LisaaAlkuvalikko()
268    //{
269      ////  MultiSelectWindow alkuValikko = new MultiSelectWindow("voitit pelin", "Aloita Alusta", "Lopeta");
270        //Add(alkuValikko); alkuValikko.AddItemHandler(0, AloitaALusta);
271        //alkuValikko.AddItemHandler(1, Exit);
272     
273   // }
274}
Note: See TracBrowser for help on using the repository browser.