source: 2010/23/almiilhi/Tasohyppely2/Peli.cs @ 10337

Revision 761, 6.6 KB checked in by almiilhi, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8
9namespace Tasohyppely2
10{
11    class Tasohyppely : PhysicsGame
12    {
13        const double nopeus = 400;
14        const double hyppyVoima = 6000;
15        AssaultRifle pyssy;
16
17        IntMeter pisteLaskuri;
18        ValueDisplay pisteNaytto;
19
20        PlatformCharacter pelaaja1;
21
22        int kenttaNro; // monesko kenttä on menossa
23        const int ruudunLeveys = 50;
24        const int ruudunKorkeus = 50;
25
26        protected override void Begin()
27        {
28
29            kenttaNro = 0;
30            Level.Width = ruudunLeveys * 88;
31            Level.Height = 1100;
32
33            // Luodaan pistelaskuri
34            pisteLaskuri = new IntMeter(0);
35
36            // luodaan pistelaskunäyttö
37            pisteNaytto = new ValueDisplay();
38            pisteNaytto.Text = "Pisteitä: ";
39            pisteNaytto.X = Screen.RightSafe - 250;
40            pisteNaytto.Y = Screen.TopSafe - 50;
41            pisteNaytto.BindTo(pisteLaskuri);
42            Add(pisteNaytto);    // lisätään peliin
43
44            // Zoomataan lähemmäksi
45            Camera.ZoomFactor = 2.0;
46
47            Camera.StayInLevel = true;
48
49            seuraavaKentta();
50            MessageDisplay.Add("Etsi ja tuhoa Iiivil Zuuru ja pelasta Z-Planeetta! !");
51        }
52
53        void seuraavaKentta()
54        {
55            ClearAll();
56            pisteLaskuri.Reset();
57
58            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
59            MessageDisplay.Add("Kenttä " + kenttaNro);
60
61            // Asetetaan painovoima
62            Gravity = new Vector(0, -800);
63
64            luoKentta();
65            lisaaNappaimet();
66            Camera.Follow(pelaaja1);
67
68        }
69
70
71        void luoKentta()
72        {
73            Level.CreateBorders(true);
74            Level.Background.CreateGradient(Color.DarkGray, Color.Black);
75            MessageDisplay.TextColor = Color.White;
76            lisaaTaso(-200, -350);
77            lisaaTaso(0, -200);
78
79            lisaaMaali();
80            lisaaPelaajat();
81            var merkit = new Dictionary<char, ObjectCreator>();
82            merkit['-'] = LuoPalikka;
83            merkit['x'] = LuoPahis;
84
85            char[,] ruudut = Tiles.ReadFromFile("TextFile1.txt");
86            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
87        }
88
89        void lisaaTaso(double x, double y)
90        {
91            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
92            taso.Color = Color.Blue;
93            taso.X = -550;
94            taso.Y = 1;
95            Add(taso);
96        }
97
98        void lisaaPelaajat()
99        {
100            pelaaja1 = new PlatformCharacter(40, 50);
101            pelaaja1.Mass = 4.0;
102            pelaaja1.Image = LoadImage("Zuper Zer0 päivitetty");
103            pelaaja1.X = 0;
104            pelaaja1.Y = Level.Bottom + 120;
105            pelaaja1.Tag = "pelaaja1";
106            AddCollisionHandler(pelaaja1, osuiMaaliin);
107            pelaaja1.Restitution = 1.0;
108
109            Add(pelaaja1);
110
111        }
112
113        void lisaaMaali()
114        {
115            PhysicsObject maali = PhysicsObject.CreateStaticObject(70, 70, Shapes.Triangle);
116            maali.Tag = "maali";
117            maali.IgnoresCollisionResponse = true;
118            maali.X = 600;
119            maali.Y = -60;
120            maali.Image = LoadImage("Iiivil Zuuru");
121           
122            Explosion rajahdys = new Explosion(10000000);
123
124            rajahdys.Position = maali.Position;
125            Add(rajahdys);
126            Add(maali);
127        }
128
129        void lisaaNappaimet()
130        {
131            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
132            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
133
134
135            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
136            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
137            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
138            Keyboard.Listen(Key.Z, ButtonState.Pressed, seuraavaKentta,"AloitapeliAlusta"); 
139
140            lisaaGamePadNappaimet(ControllerOne);
141        }
142
143        void lisaaGamePadNappaimet(GamePad controller)
144        {
145            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
146
147            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
148            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
149            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
150        }
151
152        void liikuta(PlatformCharacter hahmo, double nopeus)
153        {
154            hahmo.Walk(nopeus);
155        }
156
157        void hyppaa(PlatformCharacter hahmo, double voima)
158        {
159            hahmo.Jump(voima);
160        }
161
162        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
163        {
164            if (otherObject.Tag.ToString() == "maali")
165            {
166                this.PlaySound("maali");
167                int edellisenKentanPisteet = pisteLaskuri.Value;
168                seuraavaKentta();
169
170                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
171
172
173            }
174
175        }
176        PhysicsObject LuoPalikka()
177        {
178            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
179            palikka.Shape = Shapes.Rectangle;
180            palikka.Color = Color.Black;
181            return palikka;
182
183        }
184
185        void lisaaPyssy()
186        {
187            pyssy = new AssaultRifle(20, 5);
188            pelaaja1.Weapon = new AssaultRifle(20, 5);
189
190            pyssy.Ammo.Value = 500;
191            Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
192
193            pyssy.Angle += Angle.Degrees(5);
194
195        }
196
197        PhysicsObject LuoPahis()
198        {
199            PhysicsObject Pahis = new PhysicsObject(35, 40);
200            Pahis.Mass = 40;
201            Pahis.Image = LoadImage("Pahis");
202
203            return (Pahis);
204        }
205
206
207        PhysicsObject LuoZuuru()
208        {
209            PhysicsObject Zuuru = new PhysicsObject(100, 100);
210            Zuuru.Mass = 40.0;
211            Zuuru.Image = LoadImage("Iiivil Zuuru");
212            Zuuru.IgnoresGravity = true;
213
214
215            return (Zuuru);
216        }
217
218       
219       
220
221           
222
223    }
224
225
226    }
227
Note: See TracBrowser for help on using the repository browser.