source: 2011/24/JuusoP/green Peace/green Peace/green Peace/Peli.cs @ 2049

Revision 2049, 6.0 KB checked in by paaaanro, 10 years ago (diff)
Line 
1using System.Collections.Generic;
2using Jypeli;
3using Jypeli.Controls;
4using Jypeli.Assets;
5using Jypeli.Widgets;
6using Jypeli.Effects;
7
8public class Peli : PhysicsGame
9{
10    Vector nopeusYlos = new Vector(0, 200);
11    Vector nopeusAlas = new Vector(0, -200);
12    Vector nopeusVasemmalle = new Vector(-200, 0);
13    Vector nopeusOikealle = new Vector(200, 0);
14
15    PhysicsObject hiirulainen;
16    PhysicsObject karkki;
17    PhysicsObject seina;
18    PhysicsObject seina2;
19
20    Image namu = LoadImage("namu");
21    Image hiiriVasemmalle = LoadImage("HiiriVasemmalle");
22    Image hiiru = LoadImage("Hiiru");
23    Image hiiriOikealle = LoadImage("HiiriOikealle");
24    Image hiiriYlos = LoadImage("Hiiru");
25    Image hiiriAlas = LoadImage("HiiriAlas");
26
27    IntMeter HiirulaisenPisteet;
28
29    List<PhysicsObject> mato = new List<PhysicsObject>();
30    Vector madonsuunta;
31
32    public override void Begin()
33    {
34        LuoKenttä();
35        AsetaOhjaimet();
36        LisaaLaskuri();
37        LuoMato();
38
39    }
40
41    public void LuoMato()
42    {
43        for (int i = 0; i < 10; i++)
44        {
45            mato.Add(new PhysicsObject(10, 10));
46            Add(mato[i]);
47            mato[i].Position = new Vector(10 * i, 0);
48        }
49    }
50
51
52    public void AsetaSuunta(Vector suuunta)
53    {
54        madonsuunta = suuunta;
55    }
56
57
58    public void LiikutaMatoa(Timer sender)
59    {
60        mato[0].Position += madonsuunta;
61
62        for (int i = mato.Count-1; i > 0; i--)
63        {
64            mato[i].Position = mato[i - 1].Position;
65        }
66    }
67
68    void LuoKenttä()
69    {
70        hiirulainen = new PhysicsObject(20, 50);
71        hiirulainen.X = 0;
72        hiirulainen.Y = 0;
73        hiirulainen.Image = hiiru;
74        hiirulainen.CanRotate = false;
75        hiirulainen.Restitution = 0;
76        Add(hiirulainen);
77
78        LuoKarkki(0, 300);
79        LuoKarkki(Level.Left + 120, Level.Top - 140);
80        LuoKarkki(Level.Right - 100, Level.Top - 100);
81        LuoKarkki(Level.Left + 100, Level.Bottom + 100);
82        LuoKarkki(Level.Right - 250, 0);
83        LuoKarkki(Level.Left + 250, 0);
84        LuoKarkki(0, -300);
85
86        Luoseina(-170, Level.Top - 300);
87        Luoseina(170, Level.Top - 300);
88        Luoseina(170, Level.Bottom + 300);
89        Luoseina(-170, Level.Bottom + 300);
90
91        Luoseina2(200, -170);
92        Luoseina2(-200, -170);
93        Luoseina2(200, 170);
94        Luoseina2(-200, 170);
95        Luoseina2(Level.Left + 50, 0);
96        Luoseina2(Level.Right - 50, 0);
97
98       
99        Level.CreateBorders();
100        Level.BackgroundColor = Color.Pink;
101
102        Camera.Zoom(1.25);
103       
104    }
105
106
107
108    void Luoseina(double x, double y)
109    {
110        seina = PhysicsObject.CreateStaticObject(50, 500);
111        seina.X = x;
112        seina.Y = y;
113        seina.Shape = Shape.Rectangle;
114        seina.Color = Color.Brown;
115        Add(seina);
116    }
117
118    void Luoseina2(double x, double y)
119    {
120        seina2 = PhysicsObject.CreateStaticObject(300, 50);
121        seina2.X = x;
122        seina2.Y = y;
123        seina2.Shape = Shape.Rectangle;
124        seina2.Color = Color.Brown;
125        Add(seina2);
126    }
127
128    void AsetaOhjaimet()
129    {
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
131        Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaNopeus, "Pelaaja 1: Käännä hiirtä ylös", hiirulainen, nopeusYlos);
132        Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaNopeus, "Pelaaja 1: Käännä hiirtä alas", hiirulainen, nopeusAlas);
133        Keyboard.Listen(Key.Left, ButtonState.Pressed, AsetaNopeus, "Pelaaja 1: Käännä hiirtä vasemmalle", hiirulainen, nopeusVasemmalle);
134        Keyboard.Listen(Key.Right, ButtonState.Pressed, AsetaNopeus, "Pelaaja 1: Käännä hiirtä oikealle", hiirulainen, nopeusOikealle);
135
136        Keyboard.Listen(Key.W, ButtonState.Pressed, AsetaSuunta, null, new Vector(0, 10));
137        Keyboard.Listen(Key.S, ButtonState.Pressed, AsetaSuunta, null, new Vector(0, -10));
138        Keyboard.Listen(Key.A, ButtonState.Pressed, AsetaSuunta, null, new Vector(-10, 0));
139        Keyboard.Listen(Key.D, ButtonState.Pressed, AsetaSuunta, null, new Vector(10, 0));
140    }
141
142
143    void AsetaNopeus(PhysicsObject hiirulainen, Vector nopeus)
144    {
145        hiirulainen.Velocity = nopeus;
146        if (nopeus.X < 0)
147        {
148            hiirulainen.Image = hiiriVasemmalle;
149            hiirulainen.Width = 50;
150            hiirulainen.Height = 20;
151        }
152        else if (nopeus.X > 0)
153        {
154            hiirulainen.Image = hiiriOikealle;
155            hiirulainen.Width = 50;
156            hiirulainen.Height = 20;
157        }
158
159        else if (nopeus.Y < 0)
160        {
161            hiirulainen.Image = hiiriAlas;
162            hiirulainen.Width = 20;
163            hiirulainen.Height = 50;
164        }
165
166        else if (nopeus.Y > 0)
167        {
168            hiirulainen.Image = hiiriYlos;
169            hiirulainen.Width = 20;
170            hiirulainen.Height = 50;
171        }
172    }
173
174
175    void KasitteleKarkinTormays(PhysicsObject karkki, PhysicsObject kohde)
176    {
177        if (kohde == hiirulainen)
178        {
179            karkki.Destroy();
180            HiirulaisenPisteet.Value += 20;
181        }
182    }
183
184    void LisaaLaskuri()
185    {
186        HiirulaisenPisteet = LuoPisteLaskuri();
187    }
188
189    IntMeter LuoPisteLaskuri()
190    {
191        IntMeter laskuri = new IntMeter(0);
192        laskuri.MaxValue = 100;
193        Label naytto = new Label();
194        naytto.BindTo(laskuri);
195        naytto.X = Level.Left + 10;
196        naytto.Y = Level.Top - 10;
197        naytto.TextColor = Color.White;
198        naytto.BorderColor = Level.BackgroundColor;
199        naytto.Color = Level.BackgroundColor;
200        Add(naytto);
201        return (laskuri);
202
203    }
204
205    void LuoKarkki(double x, double y)
206    {
207        karkki = new PhysicsObject(60, 50);
208        karkki.X = x;
209        karkki.Y = y;
210        karkki.Image = namu;
211        Add(karkki);
212        karkki.IgnoresCollisionResponse = true;
213        AddCollisionHandler(karkki, KasitteleKarkinTormays);
214
215    }
216
217}
Note: See TracBrowser for help on using the repository browser.