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

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