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

Revision 620, 7.0 KB checked in by leperoih, 12 years ago (diff)

NYT SAIN ANIMAATION TEHTYY KU SE LIIKKUU!!!!!

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Tasohyppely2
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 200;
12        const double hyppyVoima = 10000;
13
14        IntMeter pisteLaskuri;
15        ValueDisplay pisteNaytto;
16
17        PlatformCharacter pelaaja1;
18        PhysicsObject pahikset;
19
20        int kenttaNro; // monesko kenttä on menossa
21
22
23        protected override void Begin()
24        {
25            Timer ajastin = new Timer();
26            ajastin.Interval = 1;
27            ajastin.Trigger += new Timer.TriggerHandler(VihollinenLyo);
28            Add(ajastin);
29            ajastin.Start();
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 = 2.0;
47
48            Camera.StayInLevel = true;
49
50            seuraavaKentta();
51            MessageDisplay.Add("Etsi iso portaali!");
52        }
53
54        protected override void Update(Time time)
55        {
56            onkoPelaajaLahella();
57            base.Update(time);
58        }
59
60        void seuraavaKentta()
61        {
62            ClearAll();
63            pisteLaskuri.Reset();
64
65            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
66            MessageDisplay.Add("Kenttä " + kenttaNro);
67
68            // Asetetaan painovoima
69            Gravity = new Vector(0, -1000);
70
71            luoKentta();
72            lisaaNappaimet();
73            Camera.Follow(pelaaja1);
74        }
75
76        void luoKentta()
77        {
78            Level.CreateBorders();
79            Level.Background.CreateGradient(Color.Green, Color.Blue);
80
81            lisaaTaso(-150, -200);
82            lisaaTaso(-150, -350);
83            lisaaTaso(-100, -425);
84            lisaaTaso(300, 0);
85            lisaaTaso(0, -250);
86            lisaaTaso(-375, -200);
87            lisaaTaso(-150, 500);
88            lisaaTaso(200,-250);
89            lisaaTaso(-250, 100);
90            lisaaTaso(-500, -400);
91            lisaaTaso(-550, -300);
92
93            lisaaMaali();
94            lisaaPelaajat();
95        }
96
97        void luoKentta2()
98        {
99            Level.CreateBorders();
100        }
101
102        void lisaaTaso(double x, double y)
103        {
104            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
105            taso.Color = Color.Green;
106            taso.X = x;
107            taso.Y = y;
108            Add(taso);
109        }
110
111        void lisaaPelaajat()
112        {
113            pelaaja1 = new PlatformCharacter(40, 80);
114            pelaaja1.Mass = 14.0;
115            //pelaaja1.Image = LoadImage("My char");
116            pelaaja1.X = 0;
117            pelaaja1.Y = Level.Bottom + 120;
118            Juokseminen();
119
120            AddCollisionHandler(pelaaja1, osuiMaaliin);
121
122            Add(pelaaja1);
123
124            pahikset = new PhysicsObject(40, 80);
125            pahikset.Image = LoadImage("pedobear");
126            pahikset.CanRotate = false;
127            pahikset.StaticFriction = 0.1;
128            pahikset.Mass = 10.0;
129            Add(pahikset);
130        }
131
132        void Juokseminen()
133        {
134            Image[] tekstuurit = LoadImages("oikealleliikkuu", "oikealleliikkuu2");
135            Animation KavelyTekstuuri = new Animation( tekstuurit );
136            KavelyTekstuuri.FPS = 5;
137            pelaaja1.RightWalkingAnimation = KavelyTekstuuri;
138            pelaaja1.LeftWalkingAnimation = Animation.Mirror( KavelyTekstuuri );
139            pelaaja1.RightIdleAnimation = new Animation( LoadImage( "My char" ) );
140            pelaaja1.LeftIdleAnimation = new Animation( Image.Mirror( LoadImage( "My char" ) ) );
141        }
142
143        void onkoPelaajaLahella()
144        {
145            if (Math.Abs(pelaaja1.X - pahikset.X) < 400 && pelaaja1.Y >= pahikset.Y)
146            {
147                pahikset.Hit(pelaaja1.Position - pahikset.Position);
148            }
149        }
150
151        void VihollinenLyo(Timer sender)
152        {
153            MessageDisplay.Add("vihollinenLyo");
154        }
155        void lisaaMaali()
156        {
157            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Triangle);
158            maali.Tag = "maali";
159            maali.IgnoresCollisionResponse = true;
160            maali.X = 0;
161            maali.Y = 0;
162            maali.Image = LoadImage("portaali");
163            Add(maali);
164        }
165
166        void lisaaNappaimet()
167        {
168            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
169            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
170
171            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
172            Keyboard.Listen(Key.Left, ButtonState.Released, liikuta, "Liikkuu vasemmalle", pelaaja1, 0.0);
173            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
174            Keyboard.Listen(Key.Right, ButtonState.Released, liikuta, "Liikkuu oikealle", pelaaja1, 0.0);
175            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
176
177            lisaaGamePadNappaimet(ControllerOne);
178        }
179
180        void lisaaGamePadNappaimet(GamePad controller)
181        {
182            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
183
184            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
185            controller.Listen(Button.DPadLeft, ButtonState.Released, liikuta, "Liikkuu vasemmalle", pelaaja1, 0.0);
186            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
187            controller.Listen(Button.DPadRight, ButtonState.Released, liikuta, "Liikkuu oikealle", pelaaja1, 0.0);
188            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
189        }
190
191        void liikuta(PlatformCharacter hahmo, double nopeus)
192        {
193            hahmo.Walk(nopeus);
194        }
195
196        void hyppaa(PlatformCharacter hahmo, double voima)
197        {
198            hahmo.Jump(voima);
199        }
200
201        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
202        {
203            if (otherObject.Tag.ToString() == "maali")
204            {
205                this.PlaySound("maali");
206                int edellisenKentanPisteet = pisteLaskuri.Value;
207                seuraavaKentta();
208                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
209            }
210        }
211    }
212}
Note: See TracBrowser for help on using the repository browser.