source: 2010/23/jealmaki/Save The Civilians/Peli.cs @ 733

Revision 733, 7.1 KB checked in by jealmaki, 12 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7
8namespace Save_The_Civilians
9{
10    class Tasohyppely : PhysicsGame
11    {
12        const double nopeus = 300;
13        const double hyppyVoima = 1000;
14
15        const int ruudunLeveys = 50;
16        const int ruudunKorkeus = 50;
17
18        IntMeter pisteLaskuri;
19        ValueDisplay pisteNaytto;
20
21        PlatformCharacter pelaaja1;
22
23        int kenttaNro; // monesko kenttä on menossa
24
25
26        protected override void Begin()
27        {
28
29            kenttaNro = 0;
30            Level.Width = 2000;
31            Level.Height = 2000;
32            Camera.Zoom(0.5);
33            Camera.Follow(pelaaja1);
34
35            seuraavaKentta();
36            MessageDisplay.Add("Etsi olio!");
37        }
38
39        void LuoKolmio(double leveys, double korkeus, int x, int y)
40        {
41            PhysicsObject kolmio = new PhysicsObject(leveys, korkeus);
42            kolmio.Shape = Shapes.Triangle;
43            kolmio.X = x;
44            kolmio.Y = y;
45            Add(kolmio);
46        }
47
48        void seuraavaKentta()
49        {
50            ClearAll();
51            MessageDisplay.TextColor = Color.Red;
52            // Luodaan pistelaskuri
53            pisteLaskuri = new IntMeter(0);
54
55            // luodaan pistelaskunäyttö
56            pisteNaytto = new ValueDisplay();
57            pisteNaytto.Text = "Pisteitä: ";
58            pisteNaytto.X = Screen.RightSafe - 250;
59            pisteNaytto.Y = Screen.TopSafe - 50;
60            pisteNaytto.BindTo(pisteLaskuri);
61            Add(pisteNaytto);    // lisätään peliin
62            pisteNaytto.ValueColor = Color.Red;
63            pisteNaytto.TextColor = Color.Red;
64            pisteLaskuri.Reset();
65
66            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
67            MessageDisplay.Add("Kenttä " + kenttaNro);
68
69            // Asetetaan painovoima
70            Gravity = new Vector(0, -1000);
71
72            luoKentta();
73            lisaaNappaimet();
74            Camera.Follow(pelaaja1);
75        }
76
77        #region Kentän ja kenttäolioiden lisäys
78        void luoKentta()
79        {
80            Level.Background.CreateGradient(Color.Green, Color.Black);
81            //Level.CreateBorders();
82
83
84            var merkit = new Dictionary<char, ObjectCreator>();
85            merkit['x'] = LuoPalikka;
86            merkit['d'] = LuoOlio;
87            merkit['r'] = LuoRaha;
88            merkit['p'] = LuoPelaaja1;
89            merkit['i'] = LuoPalikka2;
90            merkit['e'] = LuoVihollinen;
91            merkit['m'] = LuoPalikka3;
92            merkit['s'] = LuoSiviili;
93            char[,] ruudut = Tiles.ReadFromFile("TextFile1.txt");
94            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
95
96
97
98            lisaaMaali();
99            lisaaEsine();
100        }
101
102        PhysicsObject LuoOlio()
103        {
104            PhysicsObject olio = PhysicsObject.CreateStaticObject(30.0, 30.0);
105            olio.Shape = Shapes.Rectangle;
106            olio.Color = Color.Black;
107            return olio;
108
109        }
110
111        PhysicsObject LuoSiviili()
112        {
113            PhysicsObject Siviili = PhysicsObject.CreateStaticObject(100.0, 100.0);
114            Siviili.Shape = Shapes.Rectangle;
115            Siviili.Color = Color.Gray;
116            Siviili.Tag = "Siviili";
117            Siviili.Image = LoadImage("Siviili");
118            return Siviili;
119        }
120
121        PhysicsObject LuoVihollinen()
122        {
123            PhysicsObject Vihollinen = PhysicsObject.CreateStaticObject(100.0, 100.0);
124            Vihollinen.Shape = Shapes.Rectangle;
125            Vihollinen.Color = Color.Gray;
126            Vihollinen.Image = LoadImage("Alieeni");
127            return Vihollinen;
128        }
129
130        PhysicsObject LuoPalikka()
131        {
132            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
133            palikka.Shape = Shapes.Rectangle;
134            palikka.Color = Color.Gray;
135            return palikka;
136
137        }
138
139        PhysicsObject LuoPalikka2()
140        {
141            PhysicsObject Palikka2 = PhysicsObject.CreateStaticObject(100.0, 50.0);
142            Palikka2.Shape = Shapes.Rectangle;
143            Palikka2.Color = Color.Gray;
144            Palikka2.IsVisible = false;
145
146            return Palikka2;
147
148
149        }
150        PhysicsObject LuoPalikka3()
151        {
152            PhysicsObject Palikka3 = PhysicsObject.CreateStaticObject(50.0, 50.0);
153            Palikka3.Shape = Shapes.Rectangle;
154            Palikka3.Color = Color.Green;
155            return Palikka3;
156        }
157
158        PhysicsObject LuoRaha()
159        {
160            PhysicsObject Raha = PhysicsObject.CreateStaticObject(50.0, 50.0);
161            Raha.Shape = Shapes.Rectangle;
162            Raha.Color = Color.Green;
163            Raha.Image = LoadImage("Raha");
164            Raha.Tag = "Raha";
165            return Raha;
166        }
167
168        PhysicsObject LuoPelaaja1()
169        {
170            pelaaja1 = new PlatformCharacter(50.0, 50.0);
171            pelaaja1.Shape = Shapes.Circle;
172            pelaaja1.Color = Color.Yellow;
173            pelaaja1.Image = LoadImage("Hymiö");
174            AddCollisionHandler(pelaaja1, PelaajaTormasi);
175            return pelaaja1;
176        }
177
178        void lisaaEsine()
179        {
180
181        }
182
183        void lisaaMaali()
184        {
185
186        }
187
188        #endregion
189
190        void lisaaNappaimet()
191        {
192            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
193            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
194
195            Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
196            Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
197            Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
198        }
199
200        void liikuta(PlatformCharacter hahmo, double nopeus)
201        {
202            hahmo.Walk(nopeus);
203        }
204
205        void hyppaa(PlatformCharacter hahmo, double voima)
206        {
207            hahmo.Jump(voima);
208        }
209
210        void PelaajaTormasi(PhysicsObject collidingObject, PhysicsObject otherObject)
211        {
212            if (otherObject.Tag.ToString() == "maali")
213            {
214                this.PlaySound("maali");
215                int edellisenKentanPisteet = pisteLaskuri.Value;
216                seuraavaKentta();
217                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
218            }
219
220            if (otherObject.Tag.ToString() == "Raha")
221            {
222                pisteLaskuri.Value += 1;
223                otherObject.Destroy();
224                MessageDisplay.Add("Sait pisteen :)");
225
226            }
227            if (otherObject.Tag.ToString() == "Siviili")
228            {
229                otherObject.Destroy();
230                MessageDisplay.Add("Hurraa!Voitit pelin <3 :)");
231                kenttaNro = 0;
232                seuraavaKentta();
233
234            }
235
236
237        }
238    }
239}
Note: See TracBrowser for help on using the repository browser.