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

Revision 914, 6.2 KB checked in by joaamaka, 10 years ago (diff)

Jatkoin oman peli tekoa.

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 = 1000;
11
12    IntMeter pisteLaskuri;
13    ValueDisplay pisteNaytto;
14
15    PlatformCharacter olio;
16    Vector aloituspaikka;
17   
18    const int ruudunLeveys = 100;
19    const int ruudunKorkeus = 30;
20   
21    protected override void Begin()
22    {
23        Level.Width = 1500;
24        Level.Height = 1000;
25
26        // Luodaan pistelaskuri
27        pisteLaskuri = new IntMeter(0);
28
29        // luodaan pistelaskunäyttö
30        pisteNaytto = new ValueDisplay();
31        pisteNaytto.Text = "Syvyys: ";
32        pisteNaytto.X = Screen.RightSafe - 250;
33        pisteNaytto.Y = Screen.TopSafe - 50;
34        Add(pisteNaytto);    // lisätään peliin
35
36        // Zoomataan lähemmäksi
37        Camera.ZoomFactor = 2.0;
38
39        Camera.StayInLevel = true;
40
41        seuraavaKentta();
42        MessageDisplay.Add("Hyppää kuiluun!");
43    }
44
45    void seuraavaKentta()
46    {
47        ClearAll();
48        pisteLaskuri.Reset();
49
50        // Asetetaan painovoima
51        Gravity = new Vector(0, -700);
52
53        luoKentta();
54        lisaaNappaimet();
55        Camera.Follow(olio);
56         
57        Timer korkeusAjastin = new Timer(); 
58        korkeusAjastin.Interval = 0.5; 
59        korkeusAjastin.Trigger += NaytaKorkeus; 
60        Add( korkeusAjastin ); 
61        korkeusAjastin.Start(); 
62
63    }
64
65    void luoKentta()
66    {
67        Level.Background.CreateGradient(Color.Gray, Color.White);
68
69        TileMap ruudut = TileMap.FromFile("TextFile1.txt");
70        ruudut['-'] = lisaaTaso;
71        ruudut['_'] = lisaaTaso2;
72        ruudut['.'] = lisaaTaso3;
73        ruudut['!'] = lisaaTaso4;
74        ruudut[':'] = lisaaTaso5;
75        ruudut[','] = lisaaPiikit;
76        ruudut['*'] = lisaaPelaajat;
77        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
78        aloituspaikka = olio.Position;
79        Level.CreateBorders();
80        AddCollisionHandler(olio, KasitteleOlionTormays);
81    }
82
83    PhysicsObject lisaaTaso()
84    {
85        PhysicsObject taso = PhysicsObject.CreateStaticObject(150,30);
86        Image image = Image.CreateGradient(150, 30, Color.White, Color.Gray);
87        taso.Image = image;
88        return taso;
89    }
90
91    PhysicsObject lisaaTaso3()
92    {
93        PhysicsObject nuoli2 = new PhysicsObject(50, 50, Shapes.Rectangle);
94        nuoli2.IgnoresGravity = true;
95        nuoli2.IgnoresCollisionResponse = true;
96        nuoli2.X = 100;
97        nuoli2.Y = 50;
98        nuoli2.Image = LoadImage("nuoli2");
99        return nuoli2;
100    }
101
102    PhysicsObject lisaaTaso4()
103    {
104        PhysicsObject ohje = new PhysicsObject(150, 50, Shapes.Rectangle);
105        ohje.IgnoresGravity = true;
106        ohje.IgnoresCollisionResponse = true;
107        ohje.X = -100;
108        ohje.Y = 50;
109        ohje.Image = LoadImage("ohje");
110        return ohje;
111    }
112
113    PhysicsObject lisaaTaso5()
114    {
115        PhysicsObject varoitus = new PhysicsObject(100, 50, Shapes.Rectangle);
116        varoitus.IgnoresGravity = true;
117        varoitus.IgnoresCollisionResponse = true;
118        varoitus.X = -100;
119        varoitus.Y = 50;
120        varoitus.Image = LoadImage("warning");
121        return varoitus;
122    }
123
124    PhysicsObject lisaaPiikit()
125    {
126        PhysicsObject piikit = new PhysicsObject(100, 50, Shapes.Rectangle);
127        piikit.Tag = "piikki";
128        piikit.IgnoresGravity = true;
129        piikit.IgnoresCollisionResponse = true;
130        piikit.X = 100;
131        piikit.Y = 50;
132        piikit.Image = LoadImage("Spikes");
133        return piikit;
134    }
135   
136    void KasitteleOlionTormays(PhysicsObject olio, PhysicsObject kohde)
137    {
138        if (kohde.Tag == "piikki")
139        {
140            olio.Position = aloituspaikka;
141            ControllerOne.Vibrate(1.0, 1.0, 1.0, 1.0, 1.0);
142
143        }
144        //tähän kirjoitetaan mitä halutaan tehdä, kun pallo törmää johonkin
145    }
146     
147    void NaytaKorkeus( Timer sender ) 
148    { 
149        double korkeus = olio.Y - Level.Bottom; 
150        MessageDisplay.Add( "Korkeus: " + korkeus.ToString( "F0" ) ); 
151
152        if ( korkeus < 100 ) 
153        { 
154            sender.Stop();
155            MessageDisplay.Clear();
156        } 
157   } 
158
159
160    PhysicsObject lisaaTaso2()
161    {
162        PhysicsObject nuoli = new PhysicsObject(50, 50, Shapes.Rectangle);
163        nuoli.IgnoresGravity = true;
164        nuoli.IgnoresCollisionResponse = true;
165        nuoli.X = 100;
166        nuoli.Y = 50;
167        nuoli.Image = LoadImage("nuoli");
168        return nuoli;
169    }
170
171    void lisaaNappaimet()
172    {
173        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, null);
174        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
175
176        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
177        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
178        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
179
180        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, null);
181        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
182
183        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
184        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
185        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
186    }
187
188
189    void liikuta(PlatformCharacter hahmo, double nopeus)
190    {
191        hahmo.Push(new Vector (nopeus, 0));
192    }
193
194    void hyppaa(PlatformCharacter hahmo, double voima)
195    {
196        hahmo.Jump(voima);
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.