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

Revision 909, 5.6 KB checked in by joaamaka, 12 years ago (diff)

Jatkoin oman pelin tekemistä.

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
58    void luoKentta()
59    {
60        Level.Background.CreateGradient(Color.Gray, Color.White);
61
62        TileMap ruudut = TileMap.FromFile("TextFile1.txt");
63        ruudut['-'] = lisaaTaso;
64        ruudut['_'] = lisaaTaso2;
65        ruudut['.'] = lisaaTaso3;
66        ruudut['!'] = lisaaTaso4;
67        ruudut[':'] = lisaaTaso5;
68        ruudut[','] = lisaaPiikit;
69        ruudut['*'] = lisaaPelaajat;
70        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
71        aloituspaikka = olio.Position;
72        Level.CreateBorders();
73        AddCollisionHandler(olio, KasitteleOlionTormays);
74    }
75
76    PhysicsObject lisaaTaso()
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(150,30);
79        Image image = Image.CreateGradient(150, 30, Color.White, Color.Gray);
80        taso.Image = image;
81        return taso;
82    }
83
84    PhysicsObject lisaaTaso3()
85    {
86        PhysicsObject nuoli2 = new PhysicsObject(50, 50, Shapes.Rectangle);
87        nuoli2.IgnoresGravity = true;
88        nuoli2.IgnoresCollisionResponse = true;
89        nuoli2.X = 100;
90        nuoli2.Y = 50;
91        nuoli2.Image = LoadImage("nuoli2");
92        return nuoli2;
93    }
94
95    PhysicsObject lisaaTaso4()
96    {
97        PhysicsObject ohje = new PhysicsObject(150, 50, Shapes.Rectangle);
98        ohje.IgnoresGravity = true;
99        ohje.IgnoresCollisionResponse = true;
100        ohje.X = -100;
101        ohje.Y = 50;
102        ohje.Image = LoadImage("ohje");
103        return ohje;
104    }
105
106    PhysicsObject lisaaTaso5()
107    {
108        PhysicsObject varoitus = new PhysicsObject(100, 50, Shapes.Rectangle);
109        varoitus.IgnoresGravity = true;
110        varoitus.IgnoresCollisionResponse = true;
111        varoitus.X = -100;
112        varoitus.Y = 50;
113        varoitus.Image = LoadImage("warning");
114        return varoitus;
115    }
116
117    PhysicsObject lisaaPiikit()
118    {
119        PhysicsObject piikit = new PhysicsObject(100, 50, Shapes.Rectangle);
120        piikit.Tag = "piikki";
121        piikit.IgnoresGravity = true;
122        piikit.IgnoresCollisionResponse = true;
123        piikit.X = 100;
124        piikit.Y = 50;
125        piikit.Image = LoadImage("Spikes");
126        return piikit;
127    }
128   
129    void KasitteleOlionTormays(PhysicsObject olio, PhysicsObject kohde)
130    {
131        if (kohde.Tag == "piikki")
132        {
133            olio.Position = aloituspaikka;
134        }
135        //tähän kirjoitetaan mitä halutaan tehdä, kun pallo törmää johonkin
136    }
137
138
139    PhysicsObject lisaaTaso2()
140    {
141        PhysicsObject nuoli = new PhysicsObject(50, 50, Shapes.Rectangle);
142        nuoli.IgnoresGravity = true;
143        nuoli.IgnoresCollisionResponse = true;
144        nuoli.X = 100;
145        nuoli.Y = 50;
146        nuoli.Image = LoadImage("nuoli");
147        return nuoli;
148    }
149
150    void lisaaNappaimet()
151    {
152        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, null);
153        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
154
155        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
156        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
157        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
158
159        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, null);
160        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
161
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Liikkuu vasemmalle", olio, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Liikkuu oikealle", olio, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Hyppää", olio, hyppyVoima);
165    }
166
167
168    void liikuta(PlatformCharacter hahmo, double nopeus)
169    {
170        hahmo.Push(new Vector (nopeus, 0));
171    }
172
173    void hyppaa(PlatformCharacter hahmo, double voima)
174    {
175        hahmo.Jump(voima);
176    }
177
178
179    PhysicsObject lisaaPelaajat()
180    {
181        olio = new PlatformCharacter(40, 40);
182        olio.Shape = Shapes.Rectangle;
183        olio.Color = Color.Black;
184        olio.Size = new Vector(40, 40);
185        olio.Y = 100;
186        olio.CanRotate = true;
187        olio.KineticFriction = 0.5;
188        olio.StaticFriction = 0.2;
189        olio.Mass = 1.0;
190        return olio;
191    }
192
193}
Note: See TracBrowser for help on using the repository browser.