source: 2016/24/TaneliL/2016peli/2016peli/_2016peli/_2016peli.cs @ 7408

Revision 7408, 6.2 KB checked in by TaLiimat, 3 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 _2016peli : PhysicsGame
10{
11
12    const int Ruudun_Koko = 30;
13
14    Image Kivi = LoadImage("Kivi");
15    Image Pelaaja = LoadImage("pelaaja");
16    Image Vihu = LoadImage("vihu");
17
18    IntMeter pisteLaskuri = new IntMeter(0);
19
20    IntMeter kenttaNro = new IntMeter(1);
21
22    PhysicsObject pelaaja;
23    PhysicsObject este;
24    PhysicsObject vihu;
25    PhysicsObject pommi;
26
27    AssaultRifle pelaajanAse;
28
29    public override void Begin()
30    {
31        Window.Width = 800;
32        Window.Height = 600;
33
34        pisteLaskuri.Changed += tarkistaLaskuri;
35
36        seuraavaKentta();
37        luoPistelaskuri();
38       
39        nappaimet();
40    }
41
42    void luoPelaaja()
43    {
44        pelaaja = new PhysicsObject(50, 50);
45        pelaaja.Shape = Shape.Rectangle;
46        pelaaja.Image = Pelaaja;
47        pelaaja.Tag = "pelaaja";
48        pelaaja.MaxVelocity = 100;
49        pelaaja.Y = -320;
50        pelaaja.CanRotate = false;
51        AddCollisionHandler(pelaaja, pelaajaaOsui);
52        Add(pelaaja);
53
54        Camera.Follow(pelaaja);
55
56        pelaajanAse = new AssaultRifle(20,20);
57        pelaajanAse.FireRate = 10;
58        pelaajanAse.IsVisible = false;
59        pelaajanAse.InfiniteAmmo = true;
60        pelaajanAse.ProjectileCollision = ammusOsui;
61        pelaaja.Add(pelaajanAse);
62    }
63
64    void luoMaailma(string kenttaTiedostonNimi)
65    {
66        ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
67        ruudut.SetTileMethod(Color.Black, luoEste);
68        ruudut.SetTileMethod(Color.Red, luoVihu);
69        ruudut.SetTileMethod(Color.Harlequin, luoPommi);
70        ruudut.Execute(30, 30);
71
72        Level.BackgroundColor = Color.Black;
73
74        Mouse.IsCursorVisible = true;
75    }
76
77    void seuraavaKentta()
78    {
79        ClearAll();
80
81        if (kenttaNro == 1) luoMaailma("Kentta1");
82        else if (kenttaNro == 2) luoMaailma("Kentta2");
83        else if (kenttaNro == 3) luoMaailma("Kentta3");
84        else if (kenttaNro == 4) luoMaailma("Kentta4");
85        luoPelaaja();
86        //luoAjastin();
87        luoPistelaskuri();
88        nappaimet();
89    }
90
91    void luoPistelaskuri()
92    {
93        Label pisteNaytto = new Label();
94        pisteNaytto.X = Screen.Left + 50;
95        pisteNaytto.Y = Screen.Top - 20;
96        pisteNaytto.TextColor = Color.Black;
97
98        pisteNaytto.BindTo(pisteLaskuri);
99        Add(pisteNaytto);
100    }
101
102    void lisaaPisteita()
103    {
104        pisteLaskuri.Value += 200;
105    }
106
107    void tarkistaLaskuri(int a, int b)
108    {
109        if (pisteLaskuri == 900)
110        {
111            kenttaNro.Value = 2;
112            seuraavaKentta();
113        }
114
115        else if (pisteLaskuri == 2000)
116        {
117            kenttaNro.Value = 3;
118            seuraavaKentta();
119        }
120
121        else if (pisteLaskuri == 3900)
122        {
123            kenttaNro.Value = 4;
124            seuraavaKentta();
125        }
126    }
127
128    //void luoAjastin()
129    //{
130    //    Timer ajasti = new Timer();
131    //    ajasti.Interval = 1;
132    //    //ajasti.Timeout += tarkistaLaskuri;
133    //    ajasti.Start();
134    //}
135
136    void nappaimet()
137    {
138        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
140        Keyboard.Listen(Key.W, ButtonState.Down, liikkuminen, null, new Vector(0, 100));
141        Keyboard.Listen(Key.S, ButtonState.Down, liikkuminen, null, new Vector(0, -100));
142        Keyboard.Listen(Key.A, ButtonState.Down, liikkuminen, null, new Vector(-100, 0));
143        Keyboard.Listen(Key.D, ButtonState.Down, liikkuminen, null, new Vector(100, 0));
144        //Keyboard.Listen(Key.Space, ButtonState.Pressed, lisaaPisteita, null);
145        Mouse.Listen(MouseButton.Left, ButtonState.Down, ammu, "", pelaajanAse);
146        Mouse.ListenMovement(0.1, tahtaa, "");
147    }
148
149    void liikkuminen(Vector suunta)
150    {
151        pelaaja.Push(suunta);
152    }
153
154    void ammu(AssaultRifle pelaajanAse)
155    {
156        PhysicsObject ammus = pelaajanAse.Shoot();
157
158        if (ammus != null)
159        {
160            ammus.Size *= 0.9;
161        }
162    }
163
164    void luoEste(Vector paikka, double leveys, double korkeus)
165    {
166        este = PhysicsObject.CreateStaticObject(35, 35);
167        este.Position = paikka;
168        este.Image = Kivi;
169        este.Tag = "este";
170        Add(este);
171    }
172
173    void luoVihu(Vector paikka, double leveys, double korkeus)
174    {
175        vihu = new PhysicsObject(35, 35);
176        vihu.Position = paikka;
177        vihu.Image = Vihu;
178        vihu.Tag = "vihu";
179        AddCollisionHandler(vihu, "pelaaja", pelaajaaOsui);
180        vihu.CanRotate = false;
181        Add(vihu);
182
183        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(Ruudun_Koko);
184        labyrinttiAivot.Speed = 100;
185        labyrinttiAivot.LabyrinthWallTag = "este";
186
187        vihu.Brain = labyrinttiAivot;
188    }
189
190    void luoPommi(Vector paikka, double leveys, double korkeus)
191    {
192        pommi = new PhysicsObject(30, 30);
193        pommi.Position = paikka;
194        pommi.Color = Color.Green;
195        pommi.IsVisible = false;
196        pommi.Tag = "pommi";
197        Add(pommi);
198    }
199
200    void ammusOsui(PhysicsObject ammus, PhysicsObject kohde)
201    {
202        ammus.Destroy();
203        if(kohde.Tag == "vihu")
204        {
205            kohde.Destroy();
206            pisteLaskuri.Value += 100;
207        }
208    }
209
210    void pelaajaaOsui(PhysicsObject pelaaja, PhysicsObject kohde)
211    {
212        if (kohde.Tag == "vihu")
213        {
214            kohde.Destroy();
215            pelaaja.Destroy();
216            pisteLaskuri.Value -= 500;
217        }
218
219        else if (kohde.Tag == "pommi")
220        {
221            pelaaja.Destroy();
222            kohde.Destroy();
223            Explosion rajahdys = new Explosion(60);
224            rajahdys.Position = kohde.Position;
225            Add(rajahdys);
226        }
227    }
228
229    void tahtaa(AnalogState hiirenLiike)
230    {
231        Vector tahtays = (Mouse.PositionOnWorld - pelaajanAse.AbsolutePosition).Normalize();
232        pelaajanAse.Angle = tahtays.Angle;
233    }
234}
Note: See TracBrowser for help on using the repository browser.