source: 2010/24/joaamaka/The hole/Peli.cs @ 935

Revision 935, 6.1 KB checked in by joaamaka, 13 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 1000;
10    const double hyppyVoima = 500;
11    double korkeus;
12
13    PlatformCharacter olio;
14    Vector aloituspaikka;
15    TextDisplay mittari;
16     
17    const int ruudunLeveys = 100;
18    const int ruudunKorkeus = 30;
19   
20    protected override void Begin()
21    {
22        Level.Width = 1500;
23        Level.Height = 1000;
24
25        // Zoomataan lähemmäksi
26        Camera.ZoomFactor = 2.0;
27
28        Camera.StayInLevel = true;
29
30        seuraavaKentta();
31        MessageDisplay.Add("Hyppää kuiluun!");
32    }
33
34    void seuraavaKentta()
35    {
36        ClearAll();
37
38        // Asetetaan painovoima
39        Gravity = new Vector(0, -700);
40
41        luoKentta();
42        lisaaNappaimet();
43        Camera.Follow(olio);
44         
45        Timer korkeusAjastin = new Timer(); 
46        korkeusAjastin.Interval = 0.5; 
47        korkeusAjastin.Trigger += NaytaKorkeus; 
48        Add( korkeusAjastin ); 
49        korkeusAjastin.Start(); 
50
51    }
52
53    void luoKentta()
54    {
55        Level.Background.CreateGradient(Color.Gray, Color.White);
56
57        TileMap ruudut = TileMap.FromFile("TextFile1.txt");
58        ruudut['-'] = lisaaTaso;
59        ruudut['_'] = lisaaTaso2;
60        ruudut['.'] = lisaaTaso3;
61        ruudut['!'] = lisaaTaso4;
62        ruudut[':'] = lisaaTaso5;
63        ruudut[','] = lisaaPiikit;
64        ruudut['*'] = lisaaPelaajat;
65        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
66        aloituspaikka = olio.Position;
67        Level.CreateBorders();
68        AddCollisionHandler(olio, KasitteleOlionTormays);
69
70        mittari = new TextDisplay();
71        Add(mittari);
72        mittari.Text = "Syvyys: " + korkeus; 
73    }
74
75    PhysicsObject lisaaTaso()
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(150,30);
78        Image image = Image.CreateGradient(150, 30, Color.White, Color.Gray);
79        taso.Image = image;
80        return taso;
81    }
82
83    PhysicsObject lisaaTaso3()
84    {
85        PhysicsObject nuoli2 = new PhysicsObject(50, 50, Shapes.Rectangle);
86        nuoli2.IgnoresGravity = true;
87        nuoli2.IgnoresCollisionResponse = true;
88        nuoli2.X = 100;
89        nuoli2.Y = 50;
90        nuoli2.Image = LoadImage("nuoli2");
91        return nuoli2;
92    }
93
94    PhysicsObject lisaaTaso4()
95    {
96        PhysicsObject ohje = new PhysicsObject(150, 50, Shapes.Rectangle);
97        ohje.IgnoresGravity = true;
98        ohje.IgnoresCollisionResponse = true;
99        ohje.X = -100;
100        ohje.Y = 50;
101        ohje.Image = LoadImage("ohje");
102        return ohje;
103    }
104
105    PhysicsObject lisaaTaso5()
106    {
107        PhysicsObject varoitus = new PhysicsObject(100, 50, Shapes.Rectangle);
108        varoitus.IgnoresGravity = true;
109        varoitus.IgnoresCollisionResponse = true;
110        varoitus.X = -100;
111        varoitus.Y = 50;
112        varoitus.Image = LoadImage("warning");
113        return varoitus;
114    }
115
116    PhysicsObject lisaaPiikit()
117    {
118        PhysicsObject piikit = new PhysicsObject(100, 50, Shapes.Rectangle);
119        piikit.Tag = "piikki";
120        piikit.IgnoresGravity = true;
121        piikit.IgnoresCollisionResponse = true;
122        piikit.X = 100;
123        piikit.Y = 50;
124        piikit.Image = LoadImage("Spikes");
125        return piikit;
126    }
127   
128    void KasitteleOlionTormays(PhysicsObject olio, PhysicsObject kohde)
129    {
130        if (kohde.Tag.ToString() == "piikki")
131        {
132            olio.Position = aloituspaikka;
133            ControllerOne.Vibrate(100.0, 100.0, 15.0, 15.0, 1.0);
134
135        }
136        //tähän kirjoitetaan mitä halutaan tehdä, kun pallo törmää johonkin
137    }
138     
139    void NaytaKorkeus( Timer sender ) 
140    { 
141        korkeus = Math.Round((aloituspaikka.Y - olio.Y), 1);
142        mittari.Text = "Syvyys: " + korkeus; 
143        mittari.X = 100;
144        mittari.Y = 100;
145   }
146
147    void Arvonta()
148    {
149       
150    }
151
152
153    PhysicsObject lisaaTaso2()
154    {
155        PhysicsObject nuoli = new PhysicsObject(50, 50, Shapes.Rectangle);
156        nuoli.IgnoresGravity = true;
157        nuoli.IgnoresCollisionResponse = true;
158        nuoli.X = 100;
159        nuoli.Y = 50;
160        nuoli.Image = LoadImage("nuoli");
161        return nuoli;
162    }
163
164    void lisaaNappaimet()
165    {
166        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, null);
167        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
168
169        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
170        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
171        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
172        Keyboard.Listen(Key.R, ButtonState.Pressed, palauta, "Palauttaa olion alkuun", olio);
173
174        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, null);
175        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
176
177        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
178        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
179        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
180        ControllerOne.Listen(Button.Y, ButtonState.Pressed, palauta, "Palauttaa olion alkuun", olio);
181    }
182
183
184    void liikuta(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Push(new Vector (nopeus, 0));
187    }
188
189    void hyppaa(PlatformCharacter hahmo, double voima)
190    {
191        hahmo.Jump(voima);
192    }
193
194    void palauta(PlatformCharacter hahmo)
195    {
196        hahmo.Position = aloituspaikka;
197    }
198
199
200    PhysicsObject lisaaPelaajat()
201    {
202        olio = new PlatformCharacter(40, 40);
203        olio.Shape = Shapes.Rectangle;
204        olio.Color = Color.Black;
205        olio.Size = new Vector(40, 40);
206        olio.Y = 100;
207        olio.CanRotate = true;
208        olio.KineticFriction = 0.0;
209        olio.StaticFriction = 0.0;
210        olio.Mass = 1.0;
211        return olio;
212    }
213
214}
Note: See TracBrowser for help on using the repository browser.