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

Revision 637, 5.3 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 = 200;
13        const double hyppyVoima = 5000;
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            kenttaNro = 0;
29            Level.Width = 2000;
30            Level.Height = 1000;
31
32
33           
34
35           
36            // Luodaan pistelaskuri
37            pisteLaskuri = new IntMeter(0);
38
39            // luodaan pistelaskunäyttö
40            pisteNaytto = new ValueDisplay();
41            pisteNaytto.Text = "Pisteitä: ";
42            pisteNaytto.X = Screen.RightSafe - 250;
43            pisteNaytto.Y = Screen.TopSafe - 50;
44            pisteNaytto.BindTo(pisteLaskuri);
45            Add(pisteNaytto);    // lisätään peliin
46
47            // Zoomataan lähemmäksi
48            Camera.ZoomFactor = 2.0;
49
50            Camera.StayInLevel = true;
51
52            seuraavaKentta();
53            MessageDisplay.Add("Etsi olio!");
54        }
55
56        void LuoKolmio(double leveys, double korkeus, int x, int y)
57        {
58            PhysicsObject kolmio = new PhysicsObject(leveys, korkeus);
59            kolmio.Shape = Shapes.Triangle;
60            kolmio.X = x;
61            kolmio.Y = y;
62            Add(kolmio);
63        }
64
65        void seuraavaKentta()
66        {
67            ClearAll();
68            pisteLaskuri.Reset();
69
70            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
71            MessageDisplay.Add("Kenttä " + kenttaNro);
72
73            // Asetetaan painovoima
74            Gravity = new Vector(0, -1000);
75
76            luoKentta();
77            lisaaNappaimet();
78            Camera.Follow(pelaaja1);
79        }
80
81        void luoKentta()
82        {
83            Level.CreateBorders();
84            Level.Background.CreateGradient(Color.Green, Color.Black);
85
86            var merkit = new Dictionary<char, ObjectCreator>();
87            merkit['x'] = LuoPalikka;
88            merkit['d'] = LuoOlio;
89            merkit['r'] = LuoRaha;
90            lisaaMaali();
91            lisaaPelaajat();
92            lisaaEsine();
93        }
94
95        PhysicsObject LuoOlio()
96        {
97            PhysicsObject olio = PhysicsObject.CreateStaticObject(30.0, 30.0);
98            olio.Shape = Shapes.Rectangle;
99            olio.Color = Color.Black;
100            return olio;
101
102        }
103
104        PhysicsObject LuoPalikka()
105        {
106            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
107            palikka.Shape = Shapes.Rectangle;
108            palikka.Color = Color.Gray;
109            return palikka;
110
111        }
112
113        PhysicsObject LuoRaha()
114        {
115            PhysicsObject Raha = PhysicsObject.CreateStaticObject(50.0, 50.0);
116            Raha.Shape = Shapes.Rectangle;
117            Raha.Color = Color.Green;
118            Raha.Image = LoadImage("Raha");
119            return Raha;
120        }
121
122        void lisaaEsine()
123        {
124            PhysicsObject esine = new PhysicsObject(20, 10);
125            esine.Shape = Shapes.Rectangle;
126            esine.Image = LoadImage("Raha");
127
128            Add(esine);
129        }
130       
131
132       
133       
134        void lisaaPelaajat()
135        {
136            pelaaja1 = new PlatformCharacter(40, 40);
137            pelaaja1.Image = LoadImage("hymiö");
138            pelaaja1.Mass = 4.0;
139            //pelaaja1.;
140            pelaaja1.X = -100;
141            pelaaja1.Y = Level.Bottom + 120;
142
143            AddCollisionHandler(pelaaja1, osuiMaaliin);
144            AddCollisionHandler(pelaaja1, osuiRahaan);
145            Add(pelaaja1);
146        }
147        void osuiRahaan(PhysicsObject Pelaaja1, PhysicsObject Raha);
148
149        void lisaaMaali()
150        {
151           
152        }
153
154        void lisaaNappaimet()
155        {
156            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
157            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
158
159            Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
160            Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
161            Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
162
163        }
164
165       
166 
167           
168       
169
170        void liikuta(PlatformCharacter hahmo, double nopeus)
171        {
172            hahmo.Walk(nopeus);
173        }
174
175        void hyppaa(PlatformCharacter hahmo, double voima)
176        {
177            hahmo.Jump(voima);
178        }
179
180        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
181        {
182            if (otherObject.Tag.ToString() == "maali")
183            {
184                this.PlaySound("maali");
185                int edellisenKentanPisteet = pisteLaskuri.Value;
186                seuraavaKentta();
187                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
188            }
189        }
190    }
191}
Note: See TracBrowser for help on using the repository browser.