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

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