source: 2010/23/johanh/Tasohyppely1/Peli.cs @ 767

Revision 767, 6.2 KB checked in by joertihj, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8namespace Tasohyppely1
9{
10    class Tasohyppely : PhysicsGame
11    {
12        const double nopeus = 555;
13        const double hyppyVoima = 4000;
14
15        IntMeter pisteLaskuri;
16        ValueDisplay pisteNaytto;
17
18        PlatformCharacter pelaaja1;
19
20        int kenttaNro; // monesko kenttä on menossa
21
22        void lisäämusiikki(Timer sender)
23        {
24            // lisätään musiikkia tässä   
25        }
26
27
28        protected override void Begin()
29        {
30            kenttaNro = 0;
31            Level.Width = 2000;
32            Level.Height = 1000;
33
34            // Luodaan pistelaskuri
35            pisteLaskuri = new IntMeter(0);
36
37            // luodaan pistelaskunäyttö
38            pisteNaytto = new ValueDisplay();
39            pisteNaytto.Text = "Pisteitä: ";
40            pisteNaytto.X = Screen.RightSafe - 250;
41            pisteNaytto.Y = Screen.TopSafe - 50;
42            pisteNaytto.BindTo(pisteLaskuri);
43            Add(pisteNaytto);    // lisätään peliin
44
45            // Zoomataan lähemmäksi
46            Camera.ZoomFactor = 1.0;
47
48            Camera.StayInLevel = true;
49            MediaPlayer.Play("Tf2");
50
51            Timer ajastin = new Timer();
52            ajastin.Interval = 1;
53            ajastin.Trigger += lisäämusiikki;
54            Add(ajastin);
55            ajastin.Start();
56
57            seuraavaKentta();
58            MessageDisplay.Add("Etsi iso tähti!");
59        }
60
61        void seuraavaKentta()
62        {
63            ClearAll();
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, -900);
71
72            luoKentta();
73            lisaaNappaimet();
74            Camera.Follow(pelaaja1);
75        }
76
77        void luoKentta()
78        {
79            const int ruudunLeveys = 50;
80        const int ruudunKorkeus = 50;
81            var merkit = new Dictionary<char, ObjectCreator>();
82            merkit['x'] = LuoPalikka;
83            merkit['+'] = LuoTahti;
84
85            char[,] ruudut = Tiles.ReadFromFile("kentta.txt");
86            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
87
88
89            lisaaMaali();
90            lisaaPelaajat();
91        }
92
93        PhysicsObject LuoPalikka()
94        {
95            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0,Shapes.Rectangle,CollisionShapeQuality.Good);
96            return palikka;
97        }
98
99        PhysicsObject LuoTahti()
100        {
101            PhysicsObject tahti = PhysicsObject.CreateStaticObject(25.0, 25.0);
102            return tahti;
103        }
104
105
106        void lisaaTaso(double x, double y)
107        {
108            PhysicsObject taso = PhysicsObject.CreateStaticObject(350, 100);
109            taso.Color = Color.Blue;
110            taso.X = x;
111            taso.Y = y;
112            Add(taso);
113        }
114        void lisaataso(double x, double y)
115        {
116         
117            Add(pelaaja1);
118        }
119
120        void Kasittelepelaaja1Tormays(PhysicsObject pallo, PhysicsObject kohde)
121        {
122           
123        }
124
125
126
127        void lisaaPelaajat()
128        {
129            pelaaja1 = new PlatformCharacter(49, 49);
130            pelaaja1.Mass = 4.0;
131            pelaaja1.Image = LoadImage("Ukko");
132            pelaaja1.X =-2565;
133            pelaaja1.Y = Level.Bottom + 120;
134            Image[] tekstuurit = LoadImages("Ukko2");
135            Animation kavelyTekstuuri = new Animation(tekstuurit);
136
137            pelaaja1.LeftWalkingAnimation = kavelyTekstuuri;
138            pelaaja1.RightWalkingAnimation = Animation.Mirror(kavelyTekstuuri);
139            pelaaja1.KineticFriction = 1.0;
140
141         
142
143
144            AddCollisionHandler(pelaaja1, osuiMaaliin);
145
146            Add(pelaaja1);
147        }
148
149        void lisaaMaali()
150        {
151            PhysicsObject maali = PhysicsObject.CreateStaticObject(20, 20, Shapes.Circle);
152            maali.Tag = "maali";
153            maali.IgnoresCollisionResponse = true;
154            maali.X = -2565;
155            maali.Y = -10;
156            maali.Image = LoadImage("Laukku");
157            Add(maali);
158        }
159
160        void lisaaNappaimet()
161        {
162            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
163            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
164
165            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
166            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
167            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
168
169
170
171
172            lisaaGamePadNappaimet(ControllerOne);
173        }
174
175        void lisaaGamePadNappaimet(GamePad controller)
176        {
177            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
178
179            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
180            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
181            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
182            ControllerOne.Vibrate( 1.0, 1.0, 1.0, 1.0, 0.5 );
183            ControllerTwo.Vibrate(1.0, 1.0, 1.0, 1.0, 0.5);
184
185         
186
187        }
188
189        void liikuta(PlatformCharacter hahmo, double nopeus)
190        {
191            hahmo.Walk(nopeus);
192        }
193
194        void hyppaa(PlatformCharacter hahmo, double voima)
195        {
196            hahmo.Jump(voima);
197        }
198
199        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
200        {
201            if (otherObject.Tag.ToString() == "maali")
202            {
203                this.PlaySound("maali");
204                int edellisenKentanPisteet = pisteLaskuri.Value;
205                seuraavaKentta();
206                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä:" + edellisenKentanPisteet);
207            }
208        }
209    }
210}
Note: See TracBrowser for help on using the repository browser.