source: 2013/23/AkuL/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 3984

Revision 3984, 7.9 KB checked in by aklaason, 8 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 Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 100;
12    const double hyppyNopeus = 350;
13    const int RUUDUN_KOKO = 20;
14
15    PlatformCharacter pelaaja1;
16    Image VihollisenKuva = LoadImage("vihollinen");
17    Image pelaajanKuva = LoadImage("pelaaja1");
18    Image lahjaKuva = LoadImage("lahja");
19    Image teleportKuva = LoadImage("teleport");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    DoubleMeter elamaLaskuri;
24
25    AssaultRifle pelaajan1Ase;
26
27    //MediaPlayer.PlayFromFile("Xilent-Boss Wave (offical video).mp3");
28    int kenttaNro = 1;
29
30    public override void Begin()
31    {
32        SeuraavaKentta();
33
34    }
35
36    void SeuraavaKentta()
37    {
38        ClearAll();
39
40        if (kenttaNro == 1) LuoKentta("kentta1");
41        else if (kenttaNro == 2) LuoKentta("kentta2");
42        else if (kenttaNro > 2) Exit();
43        Gravity = new Vector(0, -1000);
44        LuoElamaLaskuri();
45        LisaaNappaimet();
46
47        Camera.Follow(pelaaja1);
48        Camera.ZoomFactor = 4.8;
49        Camera.StayInLevel = true;
50    }
51
52
53    void TormasiTeleporttiin(PhysicsObject pelaaja1, PhysicsObject teleport)
54    { 
55
56        kenttaNro++;
57        //SeuraavaKentta();
58   
59   
60
61
62        //MultiSelectWindow alkuValikko = new MultiSelectWindow("päävalikko",
63        //"Aloita peli", "Hall-of-fame", "Poistu");
64
65        //Add(alkuValikko);
66
67        //alkuValikko.AddItemHandler(0, Aloita peli);
68        //alkuValikko.AddItemHandler(1, Hall-of-fame);
69        //alkuValikko.AddItemHandler(2, Poistu);
70
71        //Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
72        //Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ParhaatPisteet, null);
73        // Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
74
75        // void AloitaPeli()
76
77
78
79
80       
81    }
82
83    void LuoKentta(string kenttaTiedosto)
84    {
85
86        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedosto);
87        kentta.SetTileMethod('#', LisaaTaso);
88        kentta.SetTileMethod('L', LisaaLahja);
89        kentta.SetTileMethod('V', LisaaVihollinen);
90        kentta.SetTileMethod('N', LisaaPelaaja);
91        kentta.SetTileMethod('T', LisaaTeleport);
92        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
93        Level.CreateBorders();
94        Level.Background.CreateGradient(Color.White, Color.Gray);
95
96
97    }
98
99    void LisaaTaso(Vector paikka, double leveys, double korkeus)
100    {
101        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
102        taso.Position = paikka;
103        taso.Color = Color.Gray;
104        Add(taso);
105    }
106
107    void LisaaLahja(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject lahja = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        lahja.IgnoresCollisionResponse = true;
111        lahja.Position = paikka;
112        lahja.Image = lahjaKuva;
113        lahja.Tag = "lahja";
114
115        Add(lahja);
116
117
118    }
119    void LisaaTeleport(Vector paikka, double leveys, double korkeus)
120    {
121
122        PhysicsObject teleport = PhysicsObject.CreateStaticObject(leveys, korkeus);
123        teleport.IgnoresCollisionResponse  = true;
124        teleport.Position = paikka;
125        teleport.Image = teleportKuva;
126        teleport.Tag = "teleport";
127
128        Add(teleport);
129    }
130
131    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
132    {
133        pelaaja1 = new PlatformCharacter(leveys, korkeus);
134        pelaaja1.Position = paikka;
135        pelaaja1.Mass = 2.0;
136        pelaaja1.Image = pelaajanKuva;
137        AddCollisionHandler(pelaaja1, "lahja", TormaaLahjaan);
138        pelaajan1Ase = new AssaultRifle(5, 5);
139        pelaajan1Ase.Ammo.Value = 1000;
140        pelaajan1Ase.ProjectileCollision = AmmusOsui;
141        AddCollisionHandler(pelaaja1, "vihu", tormaus);
142        pelaaja1.Weapon = pelaajan1Ase;
143        pelaajan1Ase.FireRate = 1.5;
144
145
146        Add(pelaaja1);
147
148    }
149
150    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
151    {
152        if (kohde.Tag == "vihu")
153        {
154            Vihollinen vihu = (Vihollinen)kohde;
155            vihu.Elamat.Value += -5;
156
157
158        }
159        ammus.Destroy();
160    }
161
162    void AmmuAseella(PlatformCharacter pelaaja)
163    {
164        PhysicsObject ammus = pelaaja.Weapon.Shoot();
165
166        if (ammus != null)
167        {
168            ammus.Size *= 0.4;
169            ammus.Tag = "ammus";
170            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
171        }
172    }
173
174
175    void LisaaNappaimet()
176    {
177        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
178        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
179
180        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
181        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
182        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
183        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
184
185        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
186
187        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
188        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
189        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
190
191        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
192    }
193
194    void Liikuta(PlatformCharacter hahmo, double nopeus)
195    {
196        hahmo.Walk(nopeus);
197    }
198
199    void Hyppaa(PlatformCharacter hahmo, double nopeus)
200    {
201        hahmo.Jump(nopeus);
202    }
203
204    void TormaaLahjaan(PhysicsObject hahmo, PhysicsObject Lahja)
205    {
206        maaliAani.Play();
207        MessageDisplay.Add("löysit lahjan!");
208        Lahja.Destroy();
209    }
210
211    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
212    {
213        Vihollinen vihollinen = new Vihollinen(28, 28);
214
215        vihollinen.Position = paikka;
216        vihollinen.Mass = 20;
217        vihollinen.Image = VihollisenKuva;
218        vihollinen.Tag = "vihu";
219        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
220        seuraajanAivot.Speed = 200;
221        seuraajanAivot.DistanceFar = 600;
222        seuraajanAivot.DistanceClose = 200;
223       
224
225
226        Add(vihollinen);
227
228
229    }
230
231    void LuoElamaLaskuri()
232    {
233        elamaLaskuri = new DoubleMeter(100, 0, 100);
234        elamaLaskuri.LowerLimit += ElamaLoppui;
235
236        ProgressBar elamaPalkki = new ProgressBar(150, 20);
237        elamaPalkki.X = Screen.Left + 150;
238        elamaPalkki.Y = Screen.Top - 20;
239        elamaPalkki.BindTo(elamaLaskuri);
240        Add(elamaPalkki);
241        //elamaPalkki.Angle = Angle.RightAngle;
242
243    }
244
245    void ElamaLoppui()
246    {
247        MessageDisplay.Add("Kuolit, luuseri, nössö!");
248        MediaPlayer.Play("Saw theme song");
249        MessageWindow pro = new MessageWindow("Faiiil!!");
250        Explosion rajahdys = new Explosion(50);
251        rajahdys.Position = pelaaja1.Position;
252        rajahdys.Speed = 500.0;
253        rajahdys.Force = 100.5;
254
255
256        Add(rajahdys);
257    }
258
259    void tormaus(PhysicsObject tormaaja, PhysicsObject kohde)
260    {
261        elamaLaskuri.Value += -5;
262
263
264
265    }
266}
267
268public class Vihollinen : PhysicsObject
269{
270    DoubleMeter elamat;
271    public DoubleMeter Elamat { get { return elamat; } }
272    public Vihollinen(double leveys, double korkeus)
273        : base(leveys, korkeus)
274    {
275        elamat = new DoubleMeter(20, 0, 20);
276        elamat.LowerLimit += delegate { this.Destroy(); };
277    }
278}
Note: See TracBrowser for help on using the repository browser.