source: 2010/23/leperoih/Tasohyppely2/Peli.cs @ 693

Revision 693, 7.9 KB checked in by leperoih, 12 years ago (diff)

sain pari juttuu valmiix

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8namespace Tasohyppely2
9{
10    class Tasohyppely : PhysicsGame
11    {
12
13        const double nopeus = 200;
14        const double hyppyVoima = 10000;
15        const int ruudunLeveys = 50;
16        const int ruudunKorkeus = 50;
17
18        IntMeter pisteLaskuri;
19        ValueDisplay pisteNaytto;
20        Animation PotkuAnimaatio;
21        PlatformCharacter pelaaja1;
22        PhysicsObject pahikset;
23
24        int kenttaNro; // monesko kenttä on menossa
25
26
27        protected override void Begin()
28        {
29            Timer ajastin = new Timer();
30            ajastin.Interval = 1;
31            ajastin.Trigger += new Timer.TriggerHandler(VihollinenLyo);
32            Add(ajastin);
33            ajastin.Start();
34            kenttaNro = 0;
35            Level.Width = 2000;
36            Level.Height = 1000;
37
38            // Luodaan pistelaskuri
39            pisteLaskuri = new IntMeter(0);
40
41            // luodaan pistelaskunäyttö
42            pisteNaytto = new ValueDisplay();
43            pisteNaytto.Text = "Pisteitä: ";
44            pisteNaytto.X = Screen.RightSafe - 250;
45            pisteNaytto.Y = Screen.TopSafe - 50;
46            pisteNaytto.BindTo(pisteLaskuri);
47            Add(pisteNaytto);    // lisätään peliin
48
49            // Zoomataan lähemmäksi
50            Camera.ZoomFactor = 2.0;
51
52            Camera.StayInLevel = true;
53
54            seuraavaKentta();
55            MessageDisplay.Add("Etsi iso portaali!");
56        }
57
58        protected override void Update(Time time)
59        {
60            onkoPelaajaLahella();
61            base.Update(time);
62        }
63
64        void seuraavaKentta()
65        {
66            ClearAll();
67            pisteLaskuri.Reset();
68
69            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
70            MessageDisplay.Add("Kenttä " + kenttaNro);
71
72            // Asetetaan painovoima
73            Gravity = new Vector(0, -1000);
74
75            luoKentta();
76            lisaaNappaimet();
77            Camera.Follow(pelaaja1);
78        }
79
80        void luoKentta()
81        {
82            var merkit = new Dictionary<char, ObjectCreator>();
83            merkit['='] = LuoPalikka;
84            merkit['*'] = lisaaMaali;
85            char[,] ruudut = Tiles.ReadFromFile("kentta.txt");
86            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
87
88            Level.CreateBorders();
89            Level.Background.CreateGradient(Color.Orange, Color.Red);
90
91            lisaaPelaajat();
92        }
93
94        PhysicsObject LuoPalikka()
95        {
96            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
97            return palikka;
98        }
99
100        PhysicsObject LuoTahti()
101        {
102            PhysicsObject tahti = PhysicsObject.CreateStaticObject(25.0, 25.0);
103            return tahti;
104        }
105
106
107        void luoKentta2()
108        {
109            Level.CreateBorders();
110        }
111
112        void lisaaTaso(double x, double y)
113        {
114            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
115            taso.Color = Color.Green;
116            taso.X = x;
117            taso.Y = y;
118            Add(taso);
119        }
120
121        void lisaaPelaajat()
122        {
123            pelaaja1 = new PlatformCharacter(40, 80);
124            pelaaja1.Mass = 14.0;
125            //pelaaja1.Image = LoadImage("jaba");
126            pelaaja1.X = 0;
127            pelaaja1.Y = Level.Bottom + 120;
128            Juokseminen();
129            Image[] PotkuKuvat = LoadImages("jaba potku", "jaba potku2", "jaba potku3", "jaba potku4");
130            PotkuAnimaatio = new Animation(PotkuKuvat);
131            //pelaaja1.Image = LoadImage("jaba");
132
133            AddCollisionHandler(pelaaja1, osuiMaaliin);
134
135            Add(pelaaja1);
136
137            pahikset = new PhysicsObject(40, 80);
138            pahikset.Image = LoadImage("pedobear");
139            pahikset.CanRotate = false;
140            pahikset.StaticFriction = 0.1;
141            pahikset.Mass = 10.0;
142            Add(pahikset);
143        }
144
145        void Potkaise(Animation potkaisu)
146        {
147            //potkaisu.FPS = 25;
148            pelaaja1.Animation = potkaisu;
149            PotkuAnimaatio.Start(1);
150        }
151        void Juokseminen()
152        {
153            Image[] tekstuurit = LoadImages("jaba oikeelle", "jaba oikeelle2");
154            Animation KavelyTekstuuri = new Animation( tekstuurit );
155            KavelyTekstuuri.FPS = 5;
156            pelaaja1.RightWalkingAnimation = KavelyTekstuuri;
157            pelaaja1.LeftWalkingAnimation = Animation.Mirror( KavelyTekstuuri );
158            pelaaja1.RightIdleAnimation = new Animation( LoadImage( "jaba" ) );
159            pelaaja1.LeftIdleAnimation = new Animation( Image.Mirror( LoadImage( "jaba" ) ) );
160        }
161
162        void onkoPelaajaLahella()
163        {
164            if (Math.Abs(pelaaja1.X - pahikset.X) < 400 && pelaaja1.Y >= pahikset.Y)
165            {
166                pahikset.Hit(pelaaja1.Position - pahikset.Position);
167            }
168        }
169
170        void VihollinenLyo(Timer sender)
171        {
172        }
173        PhysicsObject lisaaMaali()
174        {
175            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Triangle);
176            maali.Tag = "maali";
177            maali.IgnoresCollisionResponse = true;
178            maali.Image = LoadImage("portaali");
179            Add(maali);
180            return maali;
181        }
182
183        void lisaaNappaimet()
184        {
185            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
186            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
187
188            Keyboard.Listen(Key.S, ButtonState.Down, Potkaise, "Potkaise", PotkuAnimaatio);
189            Keyboard.Listen(Key.A, ButtonState.Down, Potkaise, "Potkaise", Animation.Mirror(PotkuAnimaatio));
190            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
191            Keyboard.Listen(Key.Left, ButtonState.Released, liikuta, "Liikkuu vasemmalle", pelaaja1, 0.0);
192            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
193            Keyboard.Listen(Key.Right, ButtonState.Released, liikuta, "Liikkuu oikealle", pelaaja1, 0.0);
194            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
195
196            lisaaGamePadNappaimet(ControllerOne);
197        }
198
199        void lisaaGamePadNappaimet(GamePad controller)
200        {
201            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
202
203            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
204            controller.Listen(Button.DPadLeft, ButtonState.Released, liikuta, "Liikkuu vasemmalle", pelaaja1, 0.0);
205            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
206            controller.Listen(Button.DPadRight, ButtonState.Released, liikuta, "Liikkuu oikealle", pelaaja1, 0.0);
207            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
208        }
209
210        void liikuta(PlatformCharacter hahmo, double nopeus)
211        {
212            hahmo.Walk(nopeus);
213        }
214
215        void hyppaa(PlatformCharacter hahmo, double voima)
216        {
217            hahmo.Jump(voima);
218        }
219
220        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
221        {
222            if (otherObject.Tag.ToString() == "maali")
223            {
224                this.PlaySound("maali");
225                int edellisenKentanPisteet = pisteLaskuri.Value;
226                seuraavaKentta();
227                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
228            }
229        }
230    }
231}
Note: See TracBrowser for help on using the repository browser.