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

Revision 9153, 5.6 KB checked in by npo17_60, 4 years ago (diff)

lähes valmis

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    }
72    void LuoZombi(Vector paikka, double leveys, double korkeus)
73    {
74        Image zombinkuva = LoadImage("zombie");
75        PhysicsObject zombi = new PhysicsObject(leveys, korkeus);
76        zombi.Position = paikka;
77        zombi.Image = zombinkuva;
78        zombi.Shape = Shape.Circle;
79        zombi.Tag = "zombi";
80
81        Add(zombi);
82        zombi.CanRotate = false;
83
84        LuoLabyrinttiAivot(zombi);
85
86    }
87    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject zombi)
88    {
89        //ClearAll(); Begin();
90        Pause();
91        LoppuValikko();
92
93    }
94    void LuoPalikka(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        palikka.Position = paikka;
98        palikka.Shape = Shape.Rectangle;
99        palikka.Color = Color.Gray;
100        palikka.Tag = "seina";
101        Add(palikka);
102        palikka.Restitution = 0.0;
103    }
104    void LuoLabyrinttiAivot(PhysicsObject zombi)
105    {
106
107        const int RUUDUN_KOKO = 40;
108
109
110
111        LabyrinthWandererBrain labyrinttiAivot = new LabyrinthWandererBrain(RUUDUN_KOKO);
112        labyrinttiAivot.Speed = 100.0;
113        labyrinttiAivot.LabyrinthWallTag = "seina";
114
115
116        zombi.Brain = labyrinttiAivot;
117    }
118    void LuoAikaLaskuri()
119    {
120        Timer aikaLaskuri = new Timer();
121        aikaLaskuri.Start();
122
123
124
125        Label aikaNaytto = new Label();
126        aikaNaytto.TextColor = Color.White;
127        aikaNaytto.DecimalPlaces = 1;
128        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
129        Add(aikaNaytto);
130        aikaNaytto.X = 0.0;
131        aikaNaytto.Y = 150.0;
132
133    }
134    void LuoAikaLaskuri2()
135    {
136        Timer aikaLaskuri = new Timer();
137        aikaLaskuri.Interval = 15.0;
138        aikaLaskuri.Timeout += LuoZombi;
139        aikaLaskuri.Start();
140
141        Label aikaNaytto = new Label();
142        aikaNaytto.TextColor = Color.White;
143        aikaNaytto.DecimalPlaces = 1;
144        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
145        Add(aikaNaytto);
146        aikaNaytto.X = 0.0;
147        aikaNaytto.Y = 150.0;
148    }
149
150    void LuoZombi()
151    {
152        //MessageDisplay.Add("Aika loppui...");
153
154        LuoZombi(RandomGen.SelectOne<Vector>(spawnauspisteet), 40.0, 40.0);
155    }
156    void LuoValo()
157    {
158        Level.AmbientLight = -0.3;
159        Light valo = new Light();
160        valo.Intensity = 0.8;
161        valo.Distance = 350;
162        valo.Position = pelaaja.Position;
163        Add(valo);
164
165        Timer siirtoajastin = new Timer();
166        siirtoajastin.Interval = 0.01;
167        siirtoajastin.Timeout += delegate { valo.Position = pelaaja.Position; };
168        siirtoajastin.Start();
169
170    }
171    void alkuvalikko()
172    {
173       
174        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
175"Aloita peli", "Lopeta");
176        Level.Background.Color = Color.Black;
177        Add(alkuValikko);
178        alkuValikko.AddItemHandler(0, AloitaPeli);
179       
180        alkuValikko.AddItemHandler(1, Exit);
181    }
182    void AloitaPeli()
183    {
184        IsPaused = false;
185        LuoKentta();
186        //LuoPalikka();
187        LuoAikaLaskuri();
188        LuoZombi(RandomGen.SelectOne<Vector>(spawnauspisteet), 40.0, 40.0);
189        LuoAikaLaskuri2();
190        LuoValo();
191        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
192        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
193    }
194    void LoppuValikko()
195    {
196        MultiSelectWindow LoppuValikko = new MultiSelectWindow("Loppuvalikko",
197"AlkuValikko" , "Lopeta");
198Add(LoppuValikko);
199
200        LoppuValikko.AddItemHandler(0, Begin);
201       
202 LoppuValikko.AddItemHandler(1, Exit);
203    }
204}
205
206
Note: See TracBrowser for help on using the repository browser.