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

Revision 695, 6.1 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("music-_the_art_of_war-bQVSW9Klihc_fmt34");
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
121        void lisaaPelaajat()
122        {
123            pelaaja1 = new PlatformCharacter(49, 49);
124            pelaaja1.Mass = 4.0;
125            pelaaja1.Image = LoadImage("Ukko");
126            pelaaja1.X = 0;
127            pelaaja1.Y = Level.Bottom + 120;
128            Image[] tekstuurit = LoadImages("Ukko2");
129            Animation kavelyTekstuuri = new Animation(tekstuurit);
130
131            pelaaja1.LeftWalkingAnimation = kavelyTekstuuri;
132            pelaaja1.RightWalkingAnimation = Animation.Mirror(kavelyTekstuuri);
133            pelaaja1.KineticFriction = 1.0;
134
135       
136
137
138
139            AddCollisionHandler(pelaaja1, osuiMaaliin);
140
141            Add(pelaaja1);
142        }
143
144        void lisaaMaali()
145        {
146            PhysicsObject maali = PhysicsObject.CreateStaticObject(20, 20, Shapes.Circle);
147            maali.Tag = "maali";
148            maali.IgnoresCollisionResponse = true;
149            maali.X = 750;
150            maali.Y = -60;
151            maali.Image = LoadImage("Laukku");
152            Add(maali);
153        }
154
155        void lisaaNappaimet()
156        {
157            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
158            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
159
160            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
161            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
162            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
163
164
165
166
167            lisaaGamePadNappaimet(ControllerOne);
168        }
169
170        void lisaaGamePadNappaimet(GamePad controller)
171        {
172            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
177            ControllerOne.Vibrate( 1.0, 1.0, 1.0, 1.0, 0.5 );
178            ControllerTwo.Vibrate(1.0, 1.0, 1.0, 1.0, 0.5);
179
180         
181
182        }
183
184        void liikuta(PlatformCharacter hahmo, double nopeus)
185        {
186            hahmo.Walk(nopeus);
187        }
188
189        void hyppaa(PlatformCharacter hahmo, double voima)
190        {
191            hahmo.Jump(voima);
192        }
193
194        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
195        {
196            if (otherObject.Tag.ToString() == "maali")
197            {
198                this.PlaySound("maali");
199                int edellisenKentanPisteet = pisteLaskuri.Value;
200                seuraavaKentta();
201                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä:" + edellisenKentanPisteet);
202            }
203        }
204    }
205}
Note: See TracBrowser for help on using the repository browser.