source: 2011/24/EliasY/Pixel Quest/Pixel Quest/Pixel Quest/Peli.cs @ 2080

Revision 2080, 9.2 KB checked in by elalylon, 9 years ago (diff)

Peli pian valmis. Kylät, ampuminen ja vihut puuttuu.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Image Tausta = LoadImage("Tausta");
12    Image kivikuva = LoadImage("kivi");
13    Image pelaajankuva = LoadImage("Pelaaja");
14    Image tiematsku = LoadImage("Tiematsku");
15    Image hallitsijankuva = LoadImage("Hallitsija");
16    Image vihollinen = LoadImage("Vihu");
17    Image paahivollinen = LoadImage("Paavihu");
18    Image paatalo = LoadImage("Paatalo");
19    Image paatalo_katto_kuva = LoadImage("Paatalo_katto");
20    Image talokuva = LoadImage("Talo");
21    PhysicsObject Pelaaja;
22    PhysicsObject hallitsija;
23    PhysicsObject vihu;
24    PhysicsObject paavihu;
25    PhysicsObject paatalo_katto;
26    PhysicsObject paatalo_vasen_seina;
27    PhysicsObject paatalo_yla_seina;
28    PhysicsObject paatalo_oikea_seina;
29    PhysicsObject paatalo_ala_seina;
30    PhysicsObject Talo;
31    GameObject Paatalo_pohja;
32    GameObject tie;
33    Vector ylos = new Vector(0, 200);
34    int pelinkulku = 0;
35    int pelaajanelamat = 5;
36    public override void Begin()
37    {
38        LuoKentta();
39
40        Timer elamanpalautus = new Timer();
41        elamanpalautus.Interval = 10;
42        elamanpalautus.Trigger += delegate(Timer sender)
43        {
44            if (pelaajanelamat < 5)
45            {
46                pelaajanelamat += 1;
47            }
48            MessageDisplay.Add("Elämät:" + pelaajanelamat);
49        };
50        elamanpalautus.Start();
51    }
52    void LuoKentta()
53    {
54        Level.Width = 2000;
55        Level.Height = 2000;
56        Level.CreateBorders(0.1, false);
57        Camera.ZoomFactor = 5.0;
58        Level.BackgroundColor = Color.Black;
59        Level.Background.Image = Tausta;
60        Level.Background.FitToLevel();
61
62        MessageDisplay.TextColor = Color.LightBlue;
63
64        IsFullScreen = true;
65
66        LuoTie(1600, 30, 0, 0);
67        LuoTie(30, 600, -800, 285);
68        LuoTie(30, 600, -700, -285);
69        LuoTie(30, 1200, 800, 0);
70        LuoTie(400, 30, 700, 600);
71        LuoTie(400, 30, 700, -600);
72
73        //LuoKivi(100, 100);
74        LuoPelaaja();
75        Camera.Follow(Pelaaja);
76
77        LuoKyla(0, 200);
78        LuoOlennot();
79    }
80    //void LuoKivi(double x, double y)
81    //{
82    //    PhysicsObject kivi = PhysicsObject.CreateStaticObject(x, y);
83    //    kivi.Angle = RandomGen.NextAngle();
84    //    kivi.Shape = Shape.FromImage(kivikuva);
85    //    kivi.Image = kivikuva;
86    //    Add(kivi);
87    //}
88    void LuoTie(double kokoX, double kokoY, double sijaintiX, double sijaintiY)
89    {
90        tie = new GameObject(kokoX, kokoY, Shape.Rectangle);
91        tie.X = sijaintiX;
92        tie.Y = sijaintiY;
93        tie.Image = tiematsku;
94        Add(tie);
95    }
96    void LuoPelaaja()
97    {
98        Pelaaja = new PhysicsObject(10,10);
99        Pelaaja.Image = pelaajankuva;
100        Pelaaja.Shape = Shape.FromImage(pelaajankuva);
101        Pelaaja.CanRotate = false;
102        AddCollisionHandler(Pelaaja, Tormays);
103        Add(Pelaaja);
104        LuoLiikunta();
105    }
106    void LuoLiikunta()
107    {
108        Keyboard.Listen(Key.W, ButtonState.Pressed, LiikuYlos, "Liikuta Pelaajaa ylös.");
109        Keyboard.Listen(Key.W, ButtonState.Released, PysaytaY, null);
110        Keyboard.Listen(Key.S, ButtonState.Pressed, LiikuAlas, "Liikuta Pelaajaa alas.");
111        Keyboard.Listen(Key.S, ButtonState.Released, PysaytaY, null);
112        Keyboard.Listen(Key.A, ButtonState.Pressed, LiikuVasemmalle, "Liikuta Pelaajaa vasemmalle.");
113        Keyboard.Listen(Key.A, ButtonState.Released, PysaytaX, null);
114        Keyboard.Listen(Key.D, ButtonState.Pressed, LiikuOikealle, "Liikuta Pelaajaa oikealle.");
115        Keyboard.Listen(Key.D, ButtonState.Released, PysaytaX, null);
116        Keyboard.Listen(Key.M, ButtonState.Pressed, Kartta, "Näytä kartta");
117        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
118    }
119    void LuoOlennot()
120    {
121        hallitsija = new PhysicsObject(10,10);
122        hallitsija.Shape = Shape.FromImage(hallitsijankuva);
123        hallitsija.Image = hallitsijankuva;
124        hallitsija.X = -50;
125        hallitsija.Y = 30;
126        hallitsija.LinearDamping = 0.6;
127        hallitsija.Tag = "hallitsija";
128        hallitsija.Angle = Angle.FromDegrees(180);
129        hallitsija.CanRotate = false;
130        Add(hallitsija);
131    }
132    void LuoKyla(double paatalonsijaintiX, double paatalonsijaintiY)
133    {
134        Paatalo_pohja = new GameObject(200, 200);
135        Paatalo_pohja.X = paatalonsijaintiX;
136        Paatalo_pohja.Y = paatalonsijaintiY;
137        Paatalo_pohja.Image = paatalo;
138
139        paatalo_yla_seina = PhysicsObject.CreateStaticObject(200, 10);
140        paatalo_yla_seina.X = paatalonsijaintiX;
141        paatalo_yla_seina.Y = paatalonsijaintiY += 97;
142        paatalo_yla_seina.IsVisible = false;
143
144        paatalo_vasen_seina = PhysicsObject.CreateStaticObject(10, 200);
145        paatalo_vasen_seina.X = paatalonsijaintiX -= 97;
146        paatalo_vasen_seina.Y = paatalonsijaintiY -= 97;
147        paatalo_vasen_seina.IsVisible = false;
148
149        paatalo_oikea_seina = PhysicsObject.CreateStaticObject(10, 200);
150        paatalo_oikea_seina.X = paatalonsijaintiX += 194;
151        paatalo_oikea_seina.Y = paatalonsijaintiY -= 0;
152        paatalo_oikea_seina.IsVisible = false;
153
154        paatalo_ala_seina = PhysicsObject.CreateStaticObject(148, 10);
155        paatalo_ala_seina.X = paatalonsijaintiX -= 70;
156        paatalo_ala_seina.Y = paatalonsijaintiY -= 95;
157        paatalo_ala_seina.IsVisible = false;
158
159        Add(paatalo_ala_seina);
160        Add(paatalo_oikea_seina);
161        Add(paatalo_vasen_seina);
162        Add(paatalo_yla_seina);
163        Add(Paatalo_pohja,-1);
164
165        LuoTalo(paatalonsijaintiX - 50, paatalonsijaintiY + 250);
166        LuoTalo(paatalonsijaintiX - 200, paatalonsijaintiY + 150);
167        LuoTalo(paatalonsijaintiX + 140, paatalonsijaintiY + 120);
168        LuoTalo(paatalonsijaintiX - 180, paatalonsijaintiY - 10);
169        LuoTalo(paatalonsijaintiX - 100, paatalonsijaintiY - 150);
170
171        LuoViholliset(Paatalo_pohja.X - 75, Paatalo_pohja.Y - 150);
172    }
173    void LuoTalo(double x, double y)
174    {
175        Talo = PhysicsObject.CreateStaticObject(70, 70);
176        Talo.Image = talokuva;
177        Talo.X = x;
178        Talo.Y = y;
179        Add(Talo);
180    }
181    void LuoViholliset(double x, double y)
182    {
183        FollowerBrain vihunaivot = new FollowerBrain();
184        vihunaivot.Target = Pelaaja;
185        vihunaivot.TargetFollowDistance = 100;
186        vihunaivot.Speed = 70;
187        vihunaivot.TargetCloseDistance = 15;
188        vihunaivot.TargetClose += Damage1;
189        vihunaivot.Active = true;
190
191        vihu = new PhysicsObject(15, 15);
192        vihu.Image = vihollinen;
193        vihu.Brain = vihunaivot;
194        vihu.X = x + RandomGen.NextDouble(-40, 40);
195        vihu.Y = y + RandomGen.NextDouble(-40, 40);
196
197        Add(vihu);
198    }
199    #region Liikunta
200    void LiikuYlos()
201    {
202        Vector ylos = new Vector(0, 200);
203        Pelaaja.Angle = Angle.FromDegrees(0);
204        Pelaaja.Hit(ylos);
205    }
206    void LiikuAlas()
207    {
208        Vector alas = new Vector(0, -200);
209        Pelaaja.Angle = Angle.FromDegrees(180);
210        Pelaaja.Hit(alas);
211    }
212    void LiikuVasemmalle()
213    {
214        Vector vasemmalle = new Vector(-200, 0);
215        Pelaaja.Angle = Angle.FromDegrees(90);
216        Pelaaja.Hit(vasemmalle);
217    }
218    void LiikuOikealle()
219    {
220        Vector oikealle = new Vector(200, 0);
221        Pelaaja.Angle = Angle.FromDegrees(270);
222        Pelaaja.Hit(oikealle);
223    }
224    void PysaytaY()
225    {
226        Pelaaja.StopVertical();
227    }
228    void PysaytaX()
229    {
230        Pelaaja.StopHorizontal();
231    }
232    #endregion
233    void Kartta()
234    {
235        if (Camera.ZoomFactor >= 5.0)
236        {
237            Camera.ZoomFactor = 0.5;
238        }
239        else if (Camera.ZoomFactor <= 5.0)
240        {
241            Camera.ZoomFactor = 5.0;
242        }
243    }
244    void Tormays(PhysicsObject pelaaja, PhysicsObject kohde)
245    {
246        if (kohde.Tag.ToString() == "hallitsija")
247        {
248            if (pelinkulku == 0)
249            {
250                MessageDisplay.Add("Hallitsija: Lähde matkaan, ja valtaa takaisin erilaisten olioiden hallussaan pitämät kylät!");
251                MessageDisplay.Add("Sinun kannattaa aloittaa kylien valtaaminen lähtemällä länteen.");
252                pelinkulku++;
253            }
254            if (pelinkulku == 1)
255            {
256               
257            }
258            if (pelinkulku == 2)
259            {
260                MessageDisplay.Add("Hallitsija: Kiitos, olet vallannut ensimmäisen kylän takaisin!Se ei kuitenkaan vielä riitä...");
261            }
262            if (pelinkulku == 3)
263            {
264                MessageDisplay.Add("Hallitsija: Hyvää työtä, mutta kyliä on silti vielä valtaamatta.");
265            }
266        }
267    }
268    void Damage1(object lahettajaAivot, EventArgs e)
269    {
270        pelaajanelamat -= 1;
271        MessageDisplay.Add("Elämät" + pelaajanelamat);
272        if (pelaajanelamat == 0)
273        {
274            Pelaaja.Destroy();
275            MessageDisplay.Add("KUOLIT!!! Peli alkoi uudestaan.");
276        }
277    }
278}
Note: See TracBrowser for help on using the repository browser.