source: 2017/30/LeoL/ZombiPeli Official/zombi/zombi/zombi.cs @ 9203

Revision 9203, 5.8 KB checked in by npo17_60, 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 zombi : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    List<Vector> spawnauspisteet = new List<Vector>();
13
14    public override void Begin()
15    {
16        ClearAll();
17        alkuvalikko();
18        // LuoHahmo();
19       
20    }
21    void LuoHahmo(Vector paikka, double leveys, double korkeus)
22    {
23        Image pelaajanKuva = LoadImage("ukko");
24        pelaaja = new PhysicsObject(leveys - 10, korkeus - 10, Shape.Circle);
25        pelaaja.Position = paikka;
26        pelaaja.Image = pelaajanKuva;
27        pelaaja.Restitution = 0.0;
28
29        Add(pelaaja);
30
31        AddCollisionHandler(pelaaja, "zombi", PelaajaTormasi);
32
33        pelaaja.CanRotate = false;
34        Keyboard.Listen(Key.Left, ButtonState.Down,
35           LiikutaPelaajaa, null, new Vector(-100, 0));
36
37
38
39        Keyboard.Listen(Key.Right, ButtonState.Down,
40          LiikutaPelaajaa, null, new Vector(100, 0));
41        Keyboard.Listen(Key.Up, ButtonState.Down,
42          LiikutaPelaajaa, null, new Vector(0, 100));
43        Keyboard.Listen(Key.Down, ButtonState.Down,
44          LiikutaPelaajaa, null, new Vector(0, -100));
45    }
46    void LuoKentta()
47    {
48        TileMap ruudut = TileMap.FromLevelAsset("kentta1");
49
50        Level.Background.Color = Color.Black;
51
52        ruudut.SetTileMethod('@', LuoPalikka);
53        ruudut.SetTileMethod('#', LuoHahmo);
54        ruudut.SetTileMethod('z', OtaTalteenZombinMahdollinenAloituspiste);
55        ruudut.Execute(50.0, 50.0);
56
57
58
59        Camera.Follow(pelaaja);
60        Camera.ZoomFactor = 5.2;
61    }
62
63    void OtaTalteenZombinMahdollinenAloituspiste(Vector paikka, double leveys, double korkeus)
64    {
65        spawnauspisteet.Add(paikka);
66    }
67
68    void LiikutaPelaajaa(Vector vektori)
69    {
70        pelaaja.Push(vektori);
71        pelaaja.Angle = vektori.Angle + Angle.FromDegrees(-90);
72    }
73    void LuoZombi(Vector paikka, double leveys, double korkeus)
74    {
75        Image zombinkuva = LoadImage("zombie");
76        PhysicsObject zombi = new PhysicsObject(leveys, korkeus);
77        zombi.Position = paikka;
78        zombi.Image = zombinkuva;
79        zombi.Shape = Shape.Circle;
80        zombi.Tag = "zombi";
81
82        Add(zombi);
83        zombi.CanRotate = false;
84
85        LuoLabyrinttiAivot(zombi);
86
87    }
88    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject zombi)
89    {
90        //ClearAll(); Begin();
91        Pause();
92        LoppuValikko();
93
94    }
95    void LuoPalikka(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        palikka.Position = paikka;
99        palikka.Shape = Shape.Rectangle;
100        palikka.Color = Color.Gray;
101        palikka.Tag = "seina";
102        Add(palikka);
103        palikka.Restitution = 0.0;
104    }
105    void LuoLabyrinttiAivot(PhysicsObject zombi)
106    {
107
108        const int RUUDUN_KOKO = 40;
109
110
111
112        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
113        labyrinttiAivot.Speed = 100.0;
114        labyrinttiAivot.LabyrinthWallTag = "seina";
115
116
117        zombi.Brain = labyrinttiAivot;
118        labyrinttiAivot.TurnWhileMoving = true;
119    }
120    void LuoAikaLaskuri()
121    {
122        Timer aikaLaskuri = new Timer();
123        aikaLaskuri.Start();
124
125
126
127        Label aikaNaytto = new Label();
128        aikaNaytto.TextColor = Color.White;
129        aikaNaytto.DecimalPlaces = 1;
130        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
131        Add(aikaNaytto);
132        aikaNaytto.X = 0.0;
133        aikaNaytto.Y = 150.0;
134
135    }
136    void LuoAikaLaskuri2()
137    {
138        Timer aikaLaskuri = new Timer();
139        aikaLaskuri.Interval = 15.0;
140        aikaLaskuri.Timeout += LuoZombi;
141        aikaLaskuri.Start(); 
142
143        Label aikaNaytto = new Label();
144        aikaNaytto.TextColor = Color.White;
145        aikaNaytto.DecimalPlaces = 1;
146        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
147        Add(aikaNaytto);
148        aikaNaytto.X = 0.0;
149        aikaNaytto.Y = 150.0;
150    }
151
152    void LuoZombi()
153    {
154        //MessageDisplay.Add("Aika loppui...");
155
156        LuoZombi(RandomGen.SelectOne<Vector>(spawnauspisteet), 40.0, 40.0);
157    }
158    void LuoValo()
159    {
160        Level.AmbientLight = -0.3;
161        Light valo = new Light();
162        valo.Intensity = 0.8;
163        valo.Distance = 350;
164        valo.Position = pelaaja.Position;
165        Add(valo);
166
167        Timer siirtoajastin = new Timer();
168        siirtoajastin.Interval = 0.01;
169        siirtoajastin.Timeout += delegate { valo.Position = pelaaja.Position; };
170        siirtoajastin.Start();
171
172    }
173    void alkuvalikko()
174    {
175       
176        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
177"Aloita peli", "Lopeta");
178        Level.Background.Color = Color.Black;
179        Add(alkuValikko);
180        alkuValikko.AddItemHandler(0, AloitaPeli);
181       
182        alkuValikko.AddItemHandler(1, Exit);
183    }
184    void AloitaPeli()
185    {
186        IsPaused = false;
187        LuoKentta();
188       
189        //LuoPalikka();
190        LuoAikaLaskuri();
191        LuoZombi(RandomGen.SelectOne<Vector>(spawnauspisteet), 40.0, 40.0);
192        LuoAikaLaskuri2();
193        LuoValo();
194        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
195        MediaPlayer.Play
196            ("TaustaMusiikki");
197        MediaPlayer.IsRepeating = true;
198        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
199    }
200    void LoppuValikko()
201    {
202        MultiSelectWindow LoppuValikko = new MultiSelectWindow("Loppuvalikko",
203"AlkuValikko" , "Lopeta");
204Add(LoppuValikko);
205
206        LoppuValikko.AddItemHandler(0, Begin);
207       
208 LoppuValikko.AddItemHandler(1, Exit);
209    }
210
211}
212
213
Note: See TracBrowser for help on using the repository browser.