source: 2010/23/almiilhi/Tasohyppely2/Peli.cs @ 664

Revision 664, 5.8 KB checked in by almiilhi, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7
8
9namespace Tasohyppely2
10{
11    class Tasohyppely : PhysicsGame
12    {
13        const double nopeus = 200;
14        const double hyppyVoima = 6000;
15        AssaultRifle pyssy;
16
17        IntMeter pisteLaskuri;
18        ValueDisplay pisteNaytto;
19
20        PlatformCharacter pelaaja1;
21
22        int kenttaNro; // monesko kenttä on menossa
23        const int ruudunLeveys = 50;
24        const int ruudunKorkeus = 50;
25
26
27        protected override void Begin()
28        {
29
30            kenttaNro = 0;
31            Level.Width = 50000;
32            Level.Height = 1100;
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 tähti!");
52        }
53
54        void seuraavaKentta()
55        {
56            ClearAll();
57            pisteLaskuri.Reset();
58
59            kenttaNro += 1; // lisätään kenttänumeroa yhdellä
60            MessageDisplay.Add("Kenttä " + kenttaNro);
61
62            // Asetetaan painovoima
63            Gravity = new Vector(0, -900);
64
65            luoKentta();
66            lisaaNappaimet();
67            Camera.Follow(pelaaja1);
68
69        }
70
71
72        void luoKentta()
73        {
74            Level.CreateBorders();
75            Level.Background.CreateGradient(Color.DarkGray, Color.Black);
76
77            lisaaTaso(-200, -350);
78            lisaaTaso(0, -200);
79
80            lisaaMaali();
81            lisaaPelaajat();
82            var merkit = new Dictionary<char, ObjectCreator>();
83            merkit['-'] = LuoPalikka;
84            merkit['x'] = LuoPahis;
85            char[,] ruudut = Tiles.ReadFromFile("TextFile1.txt");
86            Tiles.Insert(this, ruudut, merkit, ruudunLeveys, ruudunKorkeus);
87
88
89
90
91
92        }
93
94        void lisaaTaso(double x, double y)
95        {
96            PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30);
97            taso.Color = Color.Blue;
98            taso.X = -550;
99            taso.Y = 1;
100            Add(taso);
101        }
102
103        void lisaaPelaajat()
104        {
105            pelaaja1 = new PlatformCharacter(40, 50);
106            pelaaja1.Mass = 4.0;
107            pelaaja1.Image = LoadImage("Zuper Zer0 päivitetty");
108            pelaaja1.X = 0;
109            pelaaja1.Y = Level.Bottom + 120;
110
111            AddCollisionHandler(pelaaja1, osuiMaaliin);
112
113            Add(pelaaja1);
114        }
115
116        void lisaaMaali()
117        {
118            PhysicsObject maali = PhysicsObject.CreateStaticObject(50, 50, Shapes.Triangle);
119            maali.Tag = "maali";
120            maali.IgnoresCollisionResponse = true;
121            maali.X = 600;
122            maali.Y = -60;
123            maali.Image = LoadImage("tahti");
124            Add(maali);
125        }
126
127        void lisaaNappaimet()
128        {
129            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
130            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
131
132
133            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
134            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
135            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
136
137            lisaaGamePadNappaimet(ControllerOne);
138        }
139
140        void lisaaGamePadNappaimet(GamePad controller)
141        {
142            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
143
144            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
145            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
146            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
147        }
148
149        void liikuta(PlatformCharacter hahmo, double nopeus)
150        {
151            hahmo.Walk(nopeus);
152        }
153
154        void hyppaa(PlatformCharacter hahmo, double voima)
155        {
156            hahmo.Jump(voima);
157        }
158
159        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
160        {
161            if (otherObject.Tag.ToString() == "maali")
162            {
163                this.PlaySound("maali");
164                int edellisenKentanPisteet = pisteLaskuri.Value;
165                seuraavaKentta();
166
167                MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro + ". Pisteitä: " + edellisenKentanPisteet);
168
169
170            }
171
172        }
173        PhysicsObject LuoPalikka()
174        {
175            PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
176            palikka.Shape = Shapes.Rectangle;
177            palikka.Color = Color.Black;
178            return palikka;
179
180        }
181
182        void lisaaPyssy()
183        {
184            pyssy = new AssaultRifle(20, 5);
185            pelaaja1.Weapon = new AssaultRifle(20, 5);
186
187            pyssy.Ammo.Value = 500;
188
189            Keyboard.Listen(Key.Space, ButtonState.Down, pelaaja1.Weapon.Use, "Ammu");
190
191
192
193        }
194
195
196
197
198        PhysicsObject LuoPahis()
199        {
200            PhysicsObject Pahis = new PhysicsObject(40, 20);
201            Pahis. Mass =40.0;
202            return (Pahis);
203
204        }
205    }
206}
Note: See TracBrowser for help on using the repository browser.