source: 2010/23/laemkaup/Tasohyppelypeli/Peli.cs @ 670

Revision 670, 6.4 KB checked in by laemkaup, 12 years ago (diff)
Line 
1
2using System;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6using System.Collections.Generic;
7
8
9namespace Tasohyppelypeli
10
11{
12
13 class Tasohyppely : PhysicsGame
14 {
15        const int ruudunLeveys = 30;
16        const int ruudunKorkeus = 30;
17
18       
19   
20        const double nopeus = 200;
21        const double hyppyVoima = 4000;
22   
23        IntMeter pisteLaskuri;
24        ValueDisplay pisteNaytto;
25
26        PlatformCharacter pelaaja1;
27
28        int kenttaNro; // monesko kenttä on menossa
29
30   
31        protected override void Begin()
32        {
33            kenttaNro = 0;
34            Level.Width = 1500;
35            Level.Height = 1000;
36
37            // Luodaan pistelaskuri
38            pisteLaskuri = new IntMeter(0);
39
40            // luodaan pistelaskunäyttö
41            pisteNaytto = new ValueDisplay();
42            pisteNaytto.Text = "Pisteitä: ";
43            pisteNaytto.X = Screen.RightSafe - 250;
44            pisteNaytto.Y = Screen.TopSafe - 50;
45            pisteNaytto.BindTo(pisteLaskuri);
46            Add(pisteNaytto);    // lisätään peliin
47
48            // Zoomataan lähemmäksi
49            Camera.ZoomFactor = 2.0;
50
51            Camera.StayInLevel = true;
52
53            seuraavaKentta();
54            MessageDisplay.Add("Kerää kaikki porkkanat");
55        }
56
57        void seuraavaKentta()
58        {
59            ClearAll();
60            pisteLaskuri.Reset();
61
62            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
63            MessageDisplay.Add("Kenttä " + kenttaNro);
64
65            // Asetetaan painovoima
66            Gravity = new Vector(0, -1000);
67
68            luoKentta();
69            lisaaNappaimet();
70            Camera.Follow(pelaaja1);
71        }
72
73        void luoKentta()
74        {
75            var merkit = new Dictionary<char, ObjectCreator>();
76            merkit['x'] = LuoPalikka;
77            merkit['p'] = LuoPorkkana;
78
79            char[,] ruudut = Tiles.ReadFromFile("kenttä.txt");
80
81
82
83            Level.Background.CreateGradient(Color.Pink, Color.SkyBlue);
84
85            /*
86            lisaaTaso(-200, -350, 100);
87            lisaaTaso(0, -200, 150);
88            lisaaTaso(50, 120, 50);
89            lisaaTaso(-60, 0, 150);
90            lisaaTaso(200, -150, 150);
91            lisaaTaso(280, 160, 200);
92            lisaaTaso(-400, -600, 100);
93            lisaaTaso(600, 230, 100);
94            lisaaTaso(-450, -200, 100);
95            lisaaTaso(-720, -130, 180);
96            lisaaTaso(-440, 0, 110);
97            lisaaTaso(600, 90, 120);
98            lisaaTaso(-110, 230, 100);
99            lisaaTaso(-220, 400, 100);
100            lisaaTaso(700, -600, 100);
101            lisaaTaso(-700, 160, 100);
102            lisaaTaso(600, -200, 100);
103            */
104            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
105            //lisaaMaali();
106            lisaaPelaajat();
107            Level.CreateBorders();
108
109       }
110        void lisaaTaso(double x, double y, double koko)
111        {
112          PhysicsObject taso2 = PhysicsObject.CreateStaticObject ( koko,30);
113          taso2.Color = Color.Yellow;
114          taso2.X = x;
115          taso2.Y = y;
116          Add(taso2);
117        }
118
119
120        PhysicsObject LuoPalikka()
121        {
122            PhysicsObject palikka = PhysicsObject.CreateStaticObject(30.0, 30.0);
123            palikka.Shape = Shapes.Rectangle;
124            palikka.Color = Color.Yellow;
125            return palikka;
126
127
128        }
129        PhysicsObject LuoPorkkana()
130        {
131            PhysicsObject porkkana = PhysicsObject.CreateStaticObject(30.0, 30.0);
132            porkkana.Image = LoadImage("porkkana");
133            porkkana.Tag = "porkkana";
134            return porkkana;
135
136        }
137
138
139
140         
141       
142
143        void lisaaPelaajat()
144        {
145            pelaaja1 = new PlatformCharacter(70, 70);
146            pelaaja1.Mass = 4.0;
147            pelaaja1.Image = LoadImage("Sammakko2");
148            pelaaja1.X = 0;
149            pelaaja1.Y = Level.Bottom + 120;
150
151            AddCollisionHandler(pelaaja1, osuiMaaliin);
152
153            Add(pelaaja1);
154        }
155
156        void lisaaMaali()
157        {
158            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Circle);
159            maali.Tag = "maali";
160            maali.IgnoresCollisionResponse = true;
161            maali.X = 30;
162            maali.Y = -60;
163            maali.Image = LoadImage("tahti");
164            Add(maali);
165        }
166
167        void lisaaNappaimet()
168        {
169            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
170            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
171
172            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
173            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
174            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
175
176            lisaaGamePadNappaimet(ControllerOne);
177        }
178
179        void lisaaGamePadNappaimet(GamePad controller)
180        {
181            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
182
183            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
184            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
185            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
186        }
187
188        void liikuta(PlatformCharacter hahmo, double nopeus)
189        {
190            hahmo.Walk(nopeus);
191        }
192
193        void hyppaa(PlatformCharacter hahmo, double voima)
194        {
195            hahmo.Jump(voima);
196        }
197
198        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
199        {
200            if (otherObject.Tag.ToString() == "maali")
201            {
202                this.PlaySound("maali");
203                int edellisenKentanPisteet = pisteLaskuri.Value;
204                seuraavaKentta();
205                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
206            }
207            if (otherObject.Tag.ToString() == "porkkana")
208            {
209                MessageDisplay.Add("porkkana");
210            }
211
212        }
213    }
214}
Note: See TracBrowser for help on using the repository browser.