source: 2016/23/JamiT/AlienJourney/AlienJourney/AlienJourney/AlienJourney.cs @ 7231

Revision 7231, 7.3 KB checked in by sieerinn, 4 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class AlienJourney : PhysicsGame
10{
11    const double nopeus = 225;
12    const double hyppyNopeus = 725;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    int kenttaNro = 1;
18
19    Image pelaajanKuva = LoadImage("Alien");
20    Image tahtiKuva = LoadImage("Nebula");
21    Image tasoKuva = LoadImage("BasicPlatform");
22    Image pahisKuva = LoadImage("BasicEnemy");
23    Image piikkiKuva = LoadImage("Spikes");
24    Image portaaliKuva = LoadImage("GoalPortal");
25    Image valetahtiKuva = LoadImage("Nebula");
26    Image trollkip = LoadImage("Trollkip");
27
28    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    public override void Begin()
31    {
32        SeuraavaKentta();
33    }
34
35    void SeuraavaKentta()
36    {
37        if(kenttaNro==4)
38        {
39            Exit();
40            return;
41        }
42        ClearAll();
43        Gravity = new Vector(0, -1000);
44
45        MultiSelectWindow alkuValikko = new MultiSelectWindow("Alien Journey",
46        "Play");
47        alkuValikko.Color = Color.Azure;
48        Add(alkuValikko);
49
50        LuoKentta();
51        LisaaNappaimet();
52
53        Camera.Follow(pelaaja1);
54        Camera.ZoomFactor = 1.2;
55        Camera.StayInLevel = true;
56    }
57
58    void LuoKentta()
59    {
60        TileMap kentta = TileMap.FromLevelAsset("Level"+kenttaNro);
61        kentta.SetTileMethod('#', LisaaTaso);
62        kentta.SetTileMethod('*', LisaaTahti);
63        kentta.SetTileMethod('A', LisaaPelaaja);
64        kentta.SetTileMethod('V', LisaaVihollinen);
65        kentta.SetTileMethod('^', LisaaPiikit);
66        kentta.SetTileMethod('P', LisaaPortaali);
67        kentta.SetTileMethod('F', LisaaValeTahti);
68        kentta.SetTileMethod('T', LisaaTrollkip);
69        kentta.SetTileMethod('B', LisaaTekoVihollinen);
70        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
71        Level.CreateBorders();
72        Level.Background.CreateGradient(Color.Azure, Color.DarkBlue);
73    }
74
75    void LisaaTaso(Vector paikka, double leveys, double korkeus)
76    {
77        PhysicsObject taso = PhysicsObject.CreateStaticObject(120.0, 30.0);
78        taso.Position = paikka;
79        taso.Image = tasoKuva;
80        Add(taso);
81    }
82
83    void LisaaTahti(Vector paikka, double leveys, double korkeus)
84    {
85        PhysicsObject tahti = PhysicsObject.CreateStaticObject(25.0, 25.0);
86        tahti.IgnoresCollisionResponse = true;
87        tahti.Position = paikka;
88        tahti.Image = tahtiKuva;
89        tahti.Tag = "Nebula";
90        Add(tahti);
91    }
92
93    void LisaaTrollkip(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject Trollkip = PhysicsObject.CreateStaticObject(120.0, 130.0);
96        Trollkip.IgnoresCollisionResponse = true;
97        Trollkip.Position = paikka;
98        Trollkip.Image = trollkip;
99        Trollkip.Tag = "Trollkip";
100        Add(Trollkip);
101    }
102
103    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
104    {
105        pelaaja1 = new PlatformCharacter(24.0, 40.0);
106        pelaaja1.Position = paikka;
107        pelaaja1.Mass = 4.0;
108        pelaaja1.Image = pelaajanKuva;
109        AddCollisionHandler(pelaaja1, "Nebula", TormaaTahteen);
110        AddCollisionHandler(pelaaja1, "Spikes", TormaaPiikkeihin);
111        AddCollisionHandler(pelaaja1, "BasicEnemy", TormaaPahikseen);
112        AddCollisionHandler(pelaaja1, "GoalPortal", TormaaPortaaliin);
113        AddCollisionHandler(pelaaja1, "NebulaFake", TormaaValeTahteen);
114        Add(pelaaja1);
115    }
116
117    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject pahis = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        pahis.IgnoresCollisionResponse = false;
121        pahis.Position = paikka;
122        pahis.Image = pahisKuva;
123        pahis.Tag = "BasicEnemy";
124        Add(pahis);
125    }
126
127    void LisaaTekoVihollinen(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject tekopahis = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        tekopahis.IgnoresCollisionResponse = false;
131        tekopahis.Position = paikka;
132        tekopahis.Image = pahisKuva;
133        tekopahis.Tag = "FakeEnemy";
134        Add(tekopahis);
135    }
136
137    void LisaaPiikit(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject piikki = PhysicsObject.CreateStaticObject(95.0, 50.0);
140        piikki.IgnoresCollisionResponse = false;
141        piikki.Position = paikka;
142        piikki.Image = piikkiKuva;
143        piikki.Tag = "Spikes";
144        Add(piikki);
145    }
146
147    void LisaaPortaali(Vector paikka, double leveys, double korkeus)
148    {
149        PhysicsObject portaali = PhysicsObject.CreateStaticObject(45.0, 55.0);
150        portaali.IgnoresCollisionResponse = true;
151        portaali.Position = paikka;
152        portaali.Image = portaaliKuva;
153        portaali.Tag = "GoalPortal";
154        Add(portaali, -1);
155    }
156
157    void LisaaValeTahti(Vector paikka, double leveys, double korkeus)
158    {
159        PhysicsObject valetahti = PhysicsObject.CreateStaticObject(25.0, 25.0);
160        valetahti.IgnoresCollisionResponse = true;
161        valetahti.Position = paikka;
162        valetahti.Image = valetahtiKuva;
163        valetahti.Tag = "NebulaFake";
164        Add(valetahti);
165    }
166
167    void LisaaNappaimet()
168    {
169        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
170        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
171
172        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
173        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
174        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175
176        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
177        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
178        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
179
180        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
181    }
182
183    void Liikuta(PlatformCharacter hahmo, double nopeus)
184    {
185        hahmo.Walk(nopeus);
186    }
187
188    void Hyppaa(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Jump(nopeus);
191    }
192
193    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
194    {
195        maaliAani.Play();
196        MessageDisplay.Add("Why did you eat a nebula?");
197        tahti.Destroy();
198    }
199
200    void TormaaPiikkeihin(PhysicsObject hahmo, PhysicsObject piikki)
201    {
202        MessageDisplay.Add("The spikes killed you.");
203        hahmo.Destroy();
204        Timer.SingleShot(2, Begin);
205    }
206
207    void TormaaPahikseen(PhysicsObject hahmo, PhysicsObject pahis)
208    {
209        MessageDisplay.Add("You were eaten by the enemy alien.");
210        hahmo.Destroy();
211        Timer.SingleShot(2, Begin);
212    }
213
214    void TormaaValeTahteen(PhysicsObject hahmo, PhysicsObject valetahti)
215    {
216        MessageDisplay.Add("You got a special powerup... NOT!");
217        hahmo.Destroy();
218        Timer.SingleShot(5, Begin);
219    }
220
221    void TormaaPortaaliin(PhysicsObject hahmo, PhysicsObject portaali)
222    {
223        kenttaNro++;
224        SeuraavaKentta();
225    }
226   
227}
Note: See TracBrowser for help on using the repository browser.