source: panu_l/Hyppija/Peli.cs @ 69

Revision 69, 11.2 KB checked in by paritala, 10 years ago (diff)

Hyppijan alkuvaihita

Line 
1using System;
2using Microsoft.Xna.Framework;
3using Microsoft.Xna.Framework.Graphics;
4using Microsoft.Xna.Framework.Input;
5using Microsoft.Xna.Framework.Media;
6
7using Physics2DDotNet;
8using AdvanceMath;
9using Jypeli;
10using Jypeli.ScreenObjects;
11using Jypeli.Assets;
12using Physics2DDotNet.Shapes;
13
14
15namespace Hyppija
16{
17    // Yksinkertainen tasohyppely.
18    class Tasohyppely : PhysicsGame
19    {
20
21        //#region Muuttujat
22
23        //const double liikeVoima = 4000;
24        //const double hyppyVoima = 2500;
25
26        //Meter<int> pisteLaskuri;
27        //ValueDisplay pisteNaytto;
28
29        //PlatformCharacter pelaaja1;
30        //PhysicsObject maali;
31
32        //int kenttaNro; // monesko kenttä on menossa
33
34        //#endregion
35
36
37        //#region Alustukset
38        //protected override void LoadContent()
39        //{
40        //    // Asetetaan kentän numero nollaksi, jota kasvatetaan kentän latauksessa (aina siis vähintään 1)
41        //    kenttaNro = 0;
42
43        //    DrawPerimeter = false; // ei haluta piirtää kentän reunoja
44
45        //    // Luodaan pistelaskuri
46        //    pisteLaskuri = new Meter<int>(0, 0, 1000000);
47
48        //    // luodaan pistelaskunäyttö
49        //    pisteNaytto = new ValueDisplay(this);
50        //    pisteNaytto.Text = "Pisteitä: ";
51        //    pisteNaytto.X = Screen.RightSafe - 250;
52        //    pisteNaytto.Y = Screen.TopSafe - 50;
53        //    pisteNaytto.BindTo(pisteLaskuri);
54        //    Add(pisteNaytto);    // lisätään peliin
55
56        //    // Asetetaan painovoima
57        //    Gravity = new Vector2D(0, -1000);
58
59        //    // Zoomataan lähemmäksi
60        //    Camera.ZoomFactor = 2.0;
61
62        //    aloitaUusiPeli();
63
64        //}
65
66        //void aloitaUusiPeli()
67        //{
68        //    MessageDisplay.Clear();
69
70        //    kenttaNro = 0;
71
72        //    // ladataan kenttä
73        //    Level = seuraavaKentta();
74
75        //    // Laitetaan peliohje näyttöön
76        //    MessageDisplay.Add("Etsi iso tähti!");
77        //    MessageDisplay.Add("Mutta varo haamuja...");
78        //}
79        //#endregion
80
81
82        //#region KentanLataus
83        //Level seuraavaKentta()
84        //{
85        //    pisteLaskuri.Reset();
86        //    kenttaNro += 1; // lisätään kenttänumeroa yhdellä
87        //    MessageDisplay.Add("Kenttä " + kenttaNro);
88        //    Level seuraava = luoKentta();
89        //    lisaaNappaimet();
90        //    Camera.Follow(pelaaja1);
91        //    return seuraava;
92        //}
93
94        //Level luoKentta()
95        //{
96        //    Level kentta = new Level(this, 2000, 1000);
97        //    kentta.CreateBorder();
98        //    kentta.Borders.Visible = false;
99        //    kentta.Background.CreateGradient(Color.White, Color.SkyBlue);
100
101        //    Platform alusta = new Platform(kentta.Width, 300, Color.LightGreen);
102        //    alusta.X = 0;
103        //    alusta.Y = kentta.Bottom - alusta.Height / 2;
104        //    kentta.Objects.Add(alusta);
105
106        //    lisaaPieniTaso(kentta, -200, -350);
107        //    lisaaPieniTaso(kentta, 0, -200);
108        //    lisaaPieniTaso(kentta, 400, -150);
109
110        //    lisaaPieniTaso(kentta, 500, 0);
111        //    lisaaPieniTaso(kentta, 400, 100);
112
113        //    lisaaMaali(kentta);
114        //    lisaaPelaajat(kentta);
115        //    lisaaTahdet(kentta);
116
117        //    int vihollistenMaara = kenttaNro;
118        //    lisaaViholliset(kentta, vihollistenMaara);
119
120        //    return kentta;
121        //}
122
123        //void lisaaPieniTaso(Level kentta, double x, double y)
124        //{
125        //    Platform taso = new Platform(100, 30, Color.Green);
126        //    taso.X = x;
127        //    taso.Y = y;
128        //    kentta.Objects.Add(taso);
129        //}
130
131        //void lisaaPelaajat(Level kentta)
132        //{
133        //    pelaaja1 = new PlatformCharacter(4, Shapes.CreateCircle(20));
134        //    pelaaja1.Texture = Content.Load<Texture2D>("norsu");
135        //    pelaaja1.X = 0;
136        //    pelaaja1.Y = kentta.Bottom + 120;
137
138        //    AddCollisionHandler(pelaaja1, osuiMaaliin);
139
140        //    kentta.Objects.Add(pelaaja1);
141        //}
142
143        //void lisaaTahdet(Level kentta)
144        //{
145        //    for (int i = 0; i < 20; i++)
146        //    {
147        //        PhysicsObject tahti = new PhysicsObject(0.005, Shapes.CreateCircle(12));
148        //        tahti.X = RandomGen.NextDouble(-475.0, 475.0);
149        //        tahti.Y = 400.0;
150        //        tahti.Restitution = 1.0;
151        //        tahti.Texture = Content.Load<Texture2D>("tahti");
152        //        AddCollisionHandler(tahti, keraa);
153        //        kentta.Objects.Add(tahti);
154
155        //    }
156        //}
157
158        //void lisaaMaali(Level kentta)
159        //{
160        //    maali = PhysicsObject.CreateStaticObject(Shapes.CreateCircle(25));
161        //    maali.Tag = "maali";
162        //    maali.IgnoresCollisionResponse = true;
163        //    maali.X = 0;
164        //    maali.Y = 325;
165        //    maali.Texture = Content.Load<Texture2D>("tahti");
166        //    kentta.Objects.Add(maali);
167        //}
168
169        //void lisaaViholliset(Level kentta, int kpl)
170        //{
171        //    for (int i = 0; i < kpl; i++)
172        //    {
173        //        PlatformCharacter vihollinen = new PlatformCharacter(100, Shapes.CreateCircle(30));
174        //        vihollinen.Brain = new RandomMoverBrain();
175        //        vihollinen.X = maali.X;
176        //        vihollinen.Y = maali.Y;
177        //        vihollinen.IgnoresGravity = true;
178        //        vihollinen.Texture = Content.Load<Texture2D>("vihollinen");
179        //        AddCollisionHandler(vihollinen, tuuppaa);
180        //        kentta.Objects.Add(vihollinen);
181        //    }
182        //}
183        //#endregion
184
185
186        //#region Nappaimet
187        //// Lisää peliin kaikki näppäimet
188        //void lisaaNappaimet()
189        //{
190        //    //Yleiset näppäimet
191        //    Controls.Listen(Keys.Enter, ButtonPosition.Pressed, uusiPeli, "Aloittaa uuden pelin");
192
193        //    // Pelaajan näppäimet
194        //    Controls.Listen(Keys.Left, ButtonPosition.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector2D(-liikeVoima, 0));
195        //    Controls.Listen(Keys.Right, ButtonPosition.Down, liikuta, "Liikkuu oikealle", pelaaja1, new Vector2D(liikeVoima, 0));
196        //    Controls.Listen(Keys.Up, ButtonPosition.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
197
198        //    lisaaGamePadNappaimet(PlayerIndex.One, pelaaja1);
199        //}
200
201        //void lisaaGamePadNappaimet(PlayerIndex pelaajaNro, PlatformCharacter pelaaja)
202        //{
203        //    //Yleiset näppäimet
204        //    Controls.Listen(pelaajaNro, Buttons.Start, ButtonPosition.Pressed, uusiPeli, "Aloittaa uuden pelin");
205
206        //    Controls.Listen(pelaajaNro, Buttons.DPadLeft, ButtonPosition.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, new Vector2D(-liikeVoima, 0));
207        //    Controls.Listen(pelaajaNro, Buttons.DPadRight, ButtonPosition.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja, new Vector2D(liikeVoima, 0));
208        //    Controls.Listen(pelaajaNro, Buttons.A, ButtonPosition.Pressed, hyppaa, "Pelaaja hyppää", pelaaja, hyppyVoima);
209        //}
210
211        //// Näppäimiin liitetyt toiminnot alkavat tästä -->
212        //bool liikuta(ControlEvent e)
213        //{
214        //    PlatformCharacter hahmo = e.Parameter0 as PlatformCharacter;
215        //    Vector2D voima = e.Parameter1.ToVector2D();
216        //    hahmo.Walk(e.Time, voima);
217        //    return false;
218        //}
219
220        //bool hyppaa(ControlEvent e)
221        //{
222        //    PlatformCharacter hahmo = e.Parameter0 as PlatformCharacter;
223        //    double voima = e.Parameter1.ToDouble();
224
225        //    if (hahmo.Jump(voima))
226        //    {
227        //        this.PlaySound("hyppays");
228        //    }
229        //    return false;
230        //}
231
232        //bool uusiPeli(ControlEvent e)
233        //{
234        //    aloitaUusiPeli();
235        //    return true;
236        //}
237        //#endregion
238
239
240        //#region Tapahtumat
241        //// Kun osutaan maaliin
242        //void osuiMaaliin(Collision collision)
243        //{
244        //    if (collision.Other.Tag == "maali")
245        //    {
246        //        this.PlaySound("maali");
247        //        int edellisenKentanPisteet = pisteLaskuri.Value;
248        //        Level = seuraavaKentta();
249        //        MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
250        //    }
251        //}
252
253        //// Kerää tähden ja antaa pisteen
254        //void keraa(Collision collision)
255        //{
256        //    if (collision.Other.Equals(pelaaja1))
257        //    {
258        //        PhysicsObject tahti = collision.Obj;
259        //        tahti.Lifetime.IsExpired = true;
260
261        //        this.PlaySound("kerays", -0.5, 0.5);
262        //        pisteLaskuri.Value += 1;
263        //    }
264        //}
265
266        //// Haamu tuuppaa pelaajaa
267        //void tuuppaa(Collision collision)
268        //{
269        //    if (collision.Other is PlatformCharacter)
270        //    {
271        //        double luku1 = RandomGen.NextIntRange(-10000, -8000, 8000, 10000);
272        //        double luku2 = RandomGen.NextIntRange(-10000, -8000, 8000, 10000);
273
274        //        if (collision.Other == pelaaja1)
275        //        {
276        //            // pieni värinä törmäyksestä
277        //            Controls.GameControllers[PlayerIndex.One].Vibrate(0.5, 0.5, 0.0, 0.0, 0.1);
278        //        }
279        //        this.PlaySound("tuuppaus");
280        //        collision.Other.Hit(new Vector2D(luku1, luku2));
281        //    }
282        //}
283        //#endregion
284        protected override void LoadContent()
285        {
286            LuoPelaaja();
287            LuoKentta();
288            lisaaNappaimet();
289        }
290
291        PhysicsObject kalle;
292        const double liikeVoima = 4000;
293        const double hyppyVoima = 2500;
294
295
296
297        void LuoPelaaja()
298        {
299            IShape pelaaja = Shapes.CreateCircle(20.0);
300            kalle = new PhysicsObject(10.0, pelaaja);
301            Level.Objects.Add(kalle);
302
303        }
304
305        void LuoKentta()
306        {
307            Gravity = new Vector2D(0, -1000);
308            Platform vesi = new Platform(10000, 100, Color.Blue);
309            Level.Objects.Add(vesi);
310            vesi.Y = -500;
311
312        }
313        void lisaaNappaimet()
314        {
315            // Pelaajan näppäimet
316            Controls.Listen(Keys.Left, ButtonPosition.Down, liikuta, "Liikkuu vasemmalle", kalle, new Vector2D(-liikeVoima, 0));
317            Controls.Listen(Keys.Right, ButtonPosition.Down, liikuta, "Liikkuu oikealle", kalle, new Vector2D(liikeVoima, 0));
318            Controls.Listen(Keys.Up, ButtonPosition.Pressed, hyppaa, "Hyppää", kalle, hyppyVoima);
319         
320        }
321        bool liikuta(ControlEvent e)
322        {
323            PlatformCharacter hahmo = e.Parameter0 as PlatformCharacter;
324            Vector2D voima = e.Parameter1.ToVector2D();
325            hahmo.Hit(voima); 
326           
327            return false;
328        }
329        bool hyppaa(ControlEvent e)
330        {
331            return false;
332        }
333
334
335
336   
337    }
338}
Note: See TracBrowser for help on using the repository browser.