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

Revision 697, 6.7 KB checked in by almiilhi, 12 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 = 300;
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 iso tähti!");
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, -900);
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            merkit['Z'] = LuoZuuru;
85         
86            char[,] ruudut = Tiles.ReadFromFile("TextFile1.txt");
87            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
88        }
89
90        void lisaaTaso(double x, double y)
91        {
92            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
93            taso.Color = Color.Blue;
94            taso.X = -550;
95            taso.Y = 1;
96            Add(taso);
97        }
98
99        void lisaaPelaajat()
100        {
101            pelaaja1 = new PlatformCharacter(40, 50);
102            pelaaja1.Mass = 4.0;
103            pelaaja1.Image = LoadImage("Zuper Zer0 päivitetty");
104            pelaaja1.X = 0;
105            pelaaja1.Y = Level.Bottom + 120;
106            pelaaja1.Tag = "pelaaja1";
107            AddCollisionHandler(pelaaja1, osuiMaaliin);
108            pelaaja1.Restitution = 1.0;
109
110            Add(pelaaja1);
111
112        }
113
114        void lisaaMaali()
115        {
116            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Triangle);
117            maali.Tag = "maali";
118            maali.IgnoresCollisionResponse = true;
119            maali.X = 600;
120            maali.Y = -60;
121            maali.Image = LoadImage("tahti");
122            Add(maali);
123        }
124
125        void lisaaNappaimet()
126        {
127            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
128            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
129
130
131            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
132            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
133            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
134
135
136            lisaaGamePadNappaimet(ControllerOne);
137        }
138
139        void lisaaGamePadNappaimet(GamePad controller)
140        {
141            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
142
143            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
144            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
145            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
146        }
147
148        void liikuta(PlatformCharacter hahmo, double nopeus)
149        {
150            hahmo.Walk(nopeus);
151        }
152
153        void hyppaa(PlatformCharacter hahmo, double voima)
154        {
155            hahmo.Jump(voima);
156        }
157
158        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
159        {
160            if (otherObject.Tag.ToString() == "maali")
161            {
162                this.PlaySound("maali");
163                int edellisenKentanPisteet = pisteLaskuri.Value;
164                seuraavaKentta();
165
166                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
167
168
169            }
170
171        }
172        PhysicsObject LuoPalikka()
173        {
174            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
175            palikka.Shape = Shapes.Rectangle;
176            palikka.Color = Color.Black;
177            return palikka;
178
179        }
180
181        void lisaaPyssy()
182        {
183            pyssy = new AssaultRifle(20, 5);
184            pelaaja1.Weapon = new AssaultRifle(20, 5);
185
186            pyssy.Ammo.Value = 500;
187            Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
188
189            pyssy.Angle += Angle.Degrees(5);
190
191        }
192
193        PhysicsObject LuoPahis()
194        {
195            PhysicsObject Pahis = new PhysicsObject(45, 50);
196            Pahis.Mass = 40.0;
197            Pahis.Image = LoadImage("Pahis");           
198            AddCollisionHandler(Pahis, OsuttiinPahikseen);
199            return (Pahis);
200        }
201
202        void OsuttiinPahikseen(PhysicsObject pahis, PhysicsObject kukaOsuiPahikseen)
203        {
204            MessageDisplay.Add("Pahikseen osui: " + kukaOsuiPahikseen.Tag.ToString());
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    }
Note: See TracBrowser for help on using the repository browser.