source: 2016/koodauskerho/VeetiR/TheBasicGame/TheBasicGame/TheBasicGame/TheBasicGame.cs @ 8319

Revision 8319, 6.7 KB checked in by tesatapa, 3 years ago (diff)

Tein pelin....

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TheBasicGame : PhysicsGame
10{
11    const double nopeus = 1500;
12    const double hyppyNopeus = 2000;
13    const int RUUDUN_KOKO = 40;
14
15    PhysicsObject pelaaja1;
16
17    Image pelaajanKuva = LoadImage("Player");
18    Image tahtiKuva = LoadImage("tahti");
19    Image maaKuva = LoadImage("Ground");
20    Image pKuva = LoadImage("Platform");
21    Image iKuva = LoadImage("InPat");
22    Image bKuva = LoadImage("PlatBrick");
23    Image WKuva = LoadImage("WaterTop");
24    Image wKuva = LoadImage("Water");
25
26    SoundEffect maaliAani = LoadSoundEffect("maali");
27
28    ExplosionSystem rajahdys;
29    public override void Begin()
30    {
31        // Alustetaan räjähdysjärjestelmä
32        // Parametrit:
33        // * kuva: mitä tekstuuria räjähdyksen
34        //   hiukkasten halutaan käyttävän
35        // * pMaxMaara: räjähdyksen käyttämien
36        //   hiukkasten eli partikkeleiden maksimimäärä
37         rajahdys =
38          new ExplosionSystem(bKuva, 250);
39
40        rajahdys.MinScale = 7;
41        rajahdys.MaxScale = 7;
42
43        rajahdys.MinVelocity = 20;
44        rajahdys.MaxVelocity = 20;
45
46        // Lisätään järjestelmä peliin
47        Add(rajahdys);
48
49
50
51        MessageDisplay.Add("Muista, Että ET voi luottaa joihinkin asioihin!");
52        MessageDisplay.Add("Mutta kävele tätä (Ei) turvallista siltaa.");
53
54        Gravity = new Vector(0, -1000);
55
56        LuoKentta();
57        LisaaNappaimet();
58
59        Camera.Follow(pelaaja1);
60        Camera.ZoomFactor = 1.2;
61        Camera.StayInLevel = true;
62    }
63
64    void LuoKentta()
65    {
66        TileMap kentta = TileMap.FromLevelAsset("kentta1");
67        kentta.SetTileMethod('#', LisaaTaso);
68        kentta.SetTileMethod('*', LisaaTahti);
69        kentta.SetTileMethod('N', LisaaPelaaja);
70        kentta.SetTileMethod('-', LisaaTaso2);
71        kentta.SetTileMethod('f', LisaaTasoF);
72        kentta.SetTileMethod('W', LisaaVesi1);
73        kentta.SetTileMethod('w', LisaaVesi2);
74        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
75       // Level.CreateBorders();
76        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
77    }
78
79    void LisaaTaso(Vector paikka, double leveys, double korkeus)
80    {
81        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
82        taso.Position = paikka;
83        taso.Color = Color.Green;
84        taso.Image = maaKuva;
85        Add(taso);
86    }
87
88    void LisaaVesi1(Vector paikka, double leveys, double korkeus)
89    {
90        GameObject vesi1 = new GameObject(leveys, korkeus);
91        vesi1.Position = paikka;
92       // vesi1.IgnoresCollisionResponse = true;
93        vesi1.Color = Color.Green;
94        vesi1.Image = WKuva;
95        Add(vesi1, 2);
96    }
97
98    void LisaaVesi2(Vector paikka, double leveys, double korkeus)
99    {
100        GameObject vesi2 = new GameObject(leveys, korkeus);
101        vesi2.Position = paikka;
102        //vesi2.IgnoresCollisionResponse = true;
103        vesi2.Color = Color.Green;
104        vesi2.Image = wKuva;
105        Add(vesi2, 2);
106    }
107
108    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus /2);
111        taso2.Position = paikka+new Vector(0,0.25*korkeus);
112        taso2.Color = Color.Green;
113        taso2.Image = pKuva;
114        Add(taso2);
115    }
116
117    void LisaaTasoF(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject tasof = PhysicsObject.CreateStaticObject(leveys, korkeus / 2);
120        tasof.Position = paikka + new Vector(0, 0.25 * korkeus);
121        tasof.IgnoresCollisionResponse = true;
122        tasof.Color = Color.Green;
123        tasof.Image = pKuva;
124        tasof.Tag = "PF";
125        Add(tasof);
126    }
127
128    void LisaaTahti(Vector paikka, double leveys, double korkeus)
129    {
130        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
131        tahti.IgnoresCollisionResponse = true;
132        tahti.Position = paikka;
133        tahti.Image = tahtiKuva;
134        tahti.Tag = "tahti";
135        Add(tahti);
136    }
137
138    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
139    {
140        pelaaja1 = new PhysicsObject(leveys, korkeus);
141        pelaaja1.Shape = Shape.Circle;
142        pelaaja1.Position = paikka;
143        pelaaja1.Mass = 4.0;
144        pelaaja1.Image = pelaajanKuva;
145        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
146        AddCollisionHandler(pelaaja1, "PF", TormaaPF);
147        Add(pelaaja1);
148
149        Timer ajastin = new Timer();
150
151        ajastin.Interval = 1;
152        ajastin.Timeout += havisitPelin;
153        ajastin.Start();
154    }
155
156    void havisitPelin()
157    {
158        if (pelaaja1.Y < Level.Bottom)
159        {
160            ClearAll();
161            Begin();
162        }
163
164    }
165    void LisaaNappaimet()
166    {
167        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
168        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
169
170        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
171        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
172        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
173
174        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
175
176        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
177        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
178        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
179
180        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
181    }
182
183    void Liikuta(PhysicsObject hahmo, double nopeus)
184    {
185        hahmo.Push(new Vector(nopeus, 0));
186    }
187
188    void Hyppaa(PhysicsObject hahmo, double nopeus)
189    {
190        List<GameObject> oliot = GetObjectsAt(new Vector(hahmo.X, hahmo.Bottom - 5));
191
192        if (oliot.Find(x => x is PhysicsObject) != null)
193            hahmo.Hit(new Vector(0, nopeus));
194    }
195
196    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
197    {
198        maaliAani.Play();
199        MessageDisplay.Add("Keräsit tähden!");
200        tahti.Destroy();
201    }
202
203    void TormaaPF(PhysicsObject hahmo, PhysicsObject tasoF)
204    {
205        tasoF.Destroy();
206
207        // "Käynnistetään" räjähdys
208        rajahdys.AddEffect(tasoF.X, tasoF.Y, 25);
209    }
210}
Note: See TracBrowser for help on using the repository browser.