source: 2013/27/ViljamiV/kill_everypody_GAME/kill_everypody_GAME/kill_everypody_GAME/kill_everypody_GAME.cs @ 4414

Revision 4414, 8.4 KB checked in by vilmikvi, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class kill_everypody_GAME : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    Image VihunKuva = LoadImage("Vihu");
17    Image[] seisomisanimaatio = LoadImages("Trollface");
18    Image[] kävelykuvat = LoadImages("Trollface", "Trollface2");
19    Image[] hyokkausanimaatio = LoadImages("Trollfaceampuu");
20
21    Image esKuva = LoadImage("es");
22    Image ammusKuva = LoadImage("Panos");
23    Timer lataaEnergiaaAjastin = new Timer();
24    DoubleMeter energia;
25    DoubleMeter elamat;
26    IntMeter esLaskuri;
27
28    SoundEffect laaserAani = LoadSoundEffect("maali");
29    int nykyinenKentta = 2;
30
31
32    public override void Begin()
33    {
34        AloitaKentta(nykyinenKentta);
35    }
36   
37
38    void AloitaKentta( int kentanNro )
39    {
40        Gravity = new Vector(0, -1000);
41
42        LisaaLaskuri();
43        LuoKentta("kentta" + kentanNro);
44        LisaaNappaimet();
45
46        LisaaEnergiaPalkki();
47        LisaaElamaPalkki();
48
49        lataaEnergiaaAjastin.Interval = 0.9;
50        lataaEnergiaaAjastin.Timeout += delegate { energia.Value += 1; };
51        lataaEnergiaaAjastin.Start();
52
53        Camera.Follow(pelaaja1);
54        Camera.ZoomFactor = 1.2;
55        Camera.StayInLevel = true;
56
57        nykyinenKentta = kentanNro;
58    }
59
60    void SeuraavaKentta()
61    {
62        AloitaKentta(nykyinenKentta + 1);
63    }
64
65    void LisaaEnergiaPalkki()
66    {
67        energia = new DoubleMeter(100, 0, 100);
68
69        ProgressBar energiaPalkki = new ProgressBar(200, 35);
70        energiaPalkki.Position = new Vector(Screen.Right - 150, Screen.Top - 50);
71        energiaPalkki.Color = Color.Blue;
72        energiaPalkki.BarColor = Color.Violet;
73        energiaPalkki.BindTo(energia);
74        Add(energiaPalkki);
75
76    }
77    void LisaaElamaPalkki()
78    {
79        elamat = new DoubleMeter(10, 0, 10);
80        elamat.LowerLimit += delegate { ClearAll(); AloitaKentta(nykyinenKentta); };
81
82        ProgressBar ElamaPalkki = new ProgressBar(200, 35);
83        ElamaPalkki.Position = new Vector(Screen.Right - 150, Screen.Top - 10);
84        ElamaPalkki.Color = Color.Blue;
85        ElamaPalkki.BarColor = Color.Red;
86        ElamaPalkki.BindTo(elamat);
87        Add(ElamaPalkki);
88    }
89    void LuoKentta(string kentanNimi)
90    {
91
92        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
93        kentta.SetTileMethod('#', LisaaTaso);
94        kentta.SetTileMethod('*', LisaaTahti);
95        kentta.SetTileMethod('N', LisaaPelaaja);
96        kentta.SetTileMethod('V', LisaaVihu);
97        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
98        Level.CreateBorders();
99        Level.Background.Image = LoadImage("Tausta");
100        Level.Background.FitToLevel();
101    }
102   
103        void LisaaVihu(Vector paikka, double leveys, double korkeus)
104        {
105
106        Vihu vihu = new Vihu(leveys * 1.5, korkeus * 1.5, 5);
107        vihu.Position = paikka;
108        //vihu.Color = Color.Red;
109        vihu.Image = VihunKuva;
110        vihu.MirrorImage();
111        vihu.Tag = "Vihu";
112        Add(vihu);
113
114        PlatformWandererBrain Aivot = new PlatformWandererBrain();
115        Aivot.Speed = nopeus - 50;
116        vihu.Brain = Aivot;
117
118        GameObject palkinPaikka = new GameObject(50, 50);
119        palkinPaikka.Position = new Vector(0, 50);
120        palkinPaikka.IsVisible = false;
121        //Add(palkinPaikka);
122        vihu.Add(palkinPaikka);
123
124        ProgressBar vihunElamat = new ProgressBar(70, 30);
125        vihunElamat.IsVisible = true;
126        vihunElamat.BindTo(vihu.Elamat);
127        palkinPaikka.Add(vihunElamat);
128       
129       
130    }
131        void LisaaLaskuri()
132        {
133            esLaskuri = new IntMeter(0, 0, 6);
134            esLaskuri.UpperLimit += SeuraavaKentta;
135
136            Label pisteNaytto = new Label();
137            pisteNaytto.Left = Screen.Left + 50;
138            pisteNaytto.Top = Screen.Top - 50;
139            pisteNaytto.TextColor = Color.White;
140            pisteNaytto.Color = Color.Black;
141
142            pisteNaytto.BindTo(esLaskuri);
143            Add(pisteNaytto);
144        }
145
146    void LisaaTaso(Vector paikka, double leveys, double korkeus)
147    {
148        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
149        taso.Position = paikka;
150        taso.Color = Color.Green;
151        Add(taso);
152    }
153
154    void LisaaTahti(Vector paikka, double leveys, double korkeus)
155    {
156        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
157        tahti.IgnoresCollisionResponse = true;
158        tahti.Position = paikka;
159        tahti.Image = esKuva;
160        tahti.Tag = "es";
161        Add(tahti);
162    }
163
164    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
165    {
166        pelaaja1 = new PlatformCharacter(leveys, korkeus);
167        pelaaja1.Position = paikka;
168        pelaaja1.Mass = 4.0;
169        pelaaja1.AnimWalk = new Animation(kävelykuvat);
170        pelaaja1.AnimIdle = new Animation(seisomisanimaatio);
171        AddCollisionHandler(pelaaja1, "es", TormaaTahteen);
172        AddCollisionHandler(pelaaja1, "Vihu", TormaaVihuun);
173
174        //pelaaja1 on PlatformCharacter-tyyppinen
175        pelaaja1.Weapon = new AssaultRifle(30, 10);
176
177        //Ammusten määrä aluksi:
178        pelaaja1.Weapon.Ammo.Value = 5000;
179        pelaaja1.Weapon.FireRate = 5000;
180        pelaaja1.Weapon.IsVisible = false;
181        //Mitä tapahtuu kun ammus osuu johonkin?
182        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
183
184        Add(pelaaja1);
185    }
186
187    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
188    {
189        elamat.Value -= 3;
190    }
191
192
193    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
194    {
195        ammus.Destroy();
196
197        if (kohde is Vihu)
198        {
199            ((Vihu)kohde).Elamat.Value -= 0.2;
200        }
201    }
202
203
204    void AmmuAseella(PlatformCharacter pelaaja)
205    {
206        if (energia.Value < 1) return;
207        PhysicsObject ammus = pelaaja.Weapon.Shoot();
208        pelaaja1.PlayAnimation(new Animation(hyokkausanimaatio));
209        energia.Value--;
210
211        if (ammus != null)
212        {
213            ammus.Width *= 2;
214            ammus.Image = ammusKuva;
215            //ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0)
216        }
217
218    }
219
220    void AloitaPeli()
221    {
222    }
223
224
225
226    void LisaaNappaimet()
227    {
228        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
229        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
230        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
231
232        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
233        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
234        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
235        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "Aloittaa pelin uudelleen");
236        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
237
238        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
239        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
240        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
241
242        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
243    }
244
245    void Liikuta(PlatformCharacter hahmo, double nopeus)
246    {
247        hahmo.Walk(nopeus);
248    }
249
250    void Hyppaa(PlatformCharacter hahmo, double nopeus)
251    {
252        hahmo.Jump(nopeus);
253    }
254
255    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
256    {
257        MessageDisplay.Add("Keräsit es energia juoman!");
258        esLaskuri.AddValue(1);
259        tahti.Destroy();
260    }
261
262   
263}
264
265public class Vihu : PlatformCharacter
266{
267    DoubleMeter elamat;
268    public DoubleMeter Elamat { get{  return elamat;  }}
269    public Vihu(double leveys, double korkeus, int elamia)
270        : base(leveys, korkeus)
271    {
272        elamat = new DoubleMeter(elamia, 0, elamia);
273        elamat.LowerLimit += delegate { this.Destroy(); };
274    }
275
276
277
278
279}
Note: See TracBrowser for help on using the repository browser.