source: 2016/24/MattiK/ZlandZ/ZlandZ/ZlandZ/ZlandZ.cs @ 7291

Revision 7291, 7.3 KB checked in by majuvika, 3 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 ZlandZ : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter Leaf;
16    PlatformCharacter Sombombo;
17
18    Image pelaajanKuva = LoadImage("lintu");
19    Image GuninKuva = LoadImage("gun");
20    Image BossinKuva = LoadImage("Boss");
21    Image boxinKuva = LoadImage("box");
22    Image piikinKuva = LoadImage("piikki");
23    AssaultRifle pelaajan1Ase;
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    int ammustenMaara = 60;
26    SoundEffect hyppyAani = LoadSoundEffect("Jump17");
27    public override void Begin()
28    {
29        Gravity = new Vector(0, -1000);
30
31        LuoKentta();
32       
33        LisaaNappaimet();
34        LuoAmmusLaskuri();
35
36        Camera.Follow(Leaf);
37        Camera.ZoomFactor = 1.2;
38        Camera.StayInLevel = true;
39    }
40
41    void LuoKentta()
42    {
43
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45
46        kentta.SetTileMethod('#', LisaaTaso);
47        kentta.SetTileMethod('G', Lisaagun);
48        kentta.SetTileMethod('B', LisaaBoss);
49        kentta.SetTileMethod('b', LisaaBox);
50        kentta.SetTileMethod('N', LisaaPelaaja);
51        kentta.SetTileMethod('P', LisaaPiikki);
52        kentta.SetTileMethod('S', LisaaVihu);
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateGradient(Color.Black, Color.Red);
56       
57    }
58
59
60        void LisaaTaso(Vector paikka, double leveys, double korkeus)
61    {
62        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
63        taso.Position = paikka;
64        taso.Color = Color.Green;
65        Add(taso);
66    }
67    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        Piikki.Position = paikka;
71        Piikki.Color = Color.Red;
72        Add(Piikki);
73        Piikki.Image = piikinKuva;
74        Piikki.Tag = "piikki";
75    }
76    void LisaaBoss(Vector paikka, double leveys, double korkeus)
77    {
78        PlatformCharacter Boss =new PlatformCharacter(leveys, korkeus);
79        Boss.Position = paikka;
80        Add(Boss);
81        Boss.Image = BossinKuva;
82        Boss.Tag = "pahis";
83        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
84        tasoAivot.Speed = 50;
85        tasoAivot.Active = true;
86
87        Boss.Brain = tasoAivot;
88    }
89    IntMeter ammusLaskuri;
90
91    void LuoAmmusLaskuri()
92    {
93        ammusLaskuri = new IntMeter(ammustenMaara);
94        Label pisteNaytto = new Label();
95        pisteNaytto.X = Screen.Left + 100;
96        pisteNaytto.Y = Screen.Top - 100;
97        pisteNaytto.TextColor = Color.Red;
98        pisteNaytto.Color = Color.Green;
99
100        pisteNaytto.BindTo(ammusLaskuri);
101        Add(pisteNaytto);
102    }
103
104
105
106    void LisaaBox(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject Box = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        Box.IgnoresCollisionResponse = true;
110        Box.Position = paikka;
111        Box.Image = boxinKuva;
112        Box.Tag = "Box";
113        Add(Box);
114    }
115    void LisaaVihu(Vector paikka, double leveys, double korkeus)
116    {
117        Sombombo = new PlatformCharacter(leveys, korkeus);
118        Add(Sombombo);
119        Sombombo.Image = LoadImage("vihu");
120        Sombombo.Tag = "pahis";
121        // Sombombo.X = 140;Sombombo.Y = 180;
122        Sombombo.Position = paikka;
123
124       
125
126        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
127        tasoAivot.Speed = 50;
128
129        Sombombo.Brain = tasoAivot;
130    }
131    void Lisaagun(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject gun = new PhysicsObject(leveys, korkeus);
134        Add(gun);
135        gun.Image = LoadImage("gun");
136        gun.Tag = "gun";
137        gun.Position = paikka;
138    }
139
140
141
142        void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
143    {
144        Leaf = new PlatformCharacter(leveys, korkeus);
145        Leaf.Position = paikka;
146        Leaf.Mass = 4.0;
147        Leaf.Image = pelaajanKuva;
148        AddCollisionHandler(Leaf, "Box", TormaaTahteen);
149        AddCollisionHandler(Leaf, "pahis", TormaaVihuun);
150        AddCollisionHandler(Leaf, "piikki", TormaaPiikkiin);
151        Add(Leaf);
152        //pelaaja1 on PlatformCharacter-tyyppinen
153        Leaf.Weapon = new AssaultRifle(30, 10);
154
155        //Ammusten määrä aluksi:
156        Leaf.Weapon.Ammo.Value = ammustenMaara;
157
158        //Mitä tapahtuu kun ammus osuu johonkin?
159        Leaf.Weapon.ProjectileCollision = AmmusOsui;
160        //Leaf.Add(pelaajan1Ase);
161    }
162    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
163    {
164        ammus.Destroy();
165        if (kohde.Tag.Equals("pahis"))
166        {
167            kohde.Destroy();
168        }
169    }
170    void AmmuAseella(PlatformCharacter pelaaja)
171    {
172        PhysicsObject ammus = pelaaja.Weapon.Shoot();
173        ammusLaskuri.Value--;
174        if (ammus != null)
175        {
176           
177            //ammus.Size *= 3;
178            //ammus.Image = ...
179            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
180        }
181        Level.Background.Color = Color.Red;
182    }
183
184    void LuotiOsuu(PhysicsObject tormaaja, PlatformCharacter kohde)
185    {
186        Sombombo.Destroy();
187    }
188
189    void LisaaNappaimet()
190    {
191        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
192        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
193
194        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, -nopeus);
195        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, nopeus);
196        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
197        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", Leaf);
198        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
199
200        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Leaf, -nopeus);
201        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Leaf, nopeus);
202        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
203
204        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
205    }
206
207    void Liikuta(PlatformCharacter hahmo, double nopeus)
208    {
209        hahmo.Walk(nopeus);
210    }
211
212    void Hyppaa(PlatformCharacter hahmo, double nopeus)
213    {
214        hahmo.Jump(nopeus);
215        hyppyAani.Play();
216    }
217
218    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject Box)
219    {
220        maaliAani.Play();
221        MessageDisplay.Add("Keräsit Boxin!");
222        Box.Destroy();
223    }
224    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
225    {
226        maaliAani.Play();
227        MessageDisplay.Add("You died");
228        hahmo.Destroy();
229    }
230     void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
231    {
232        maaliAani.Play();
233        MessageDisplay.Add("You died");
234        hahmo.Destroy();
235    }
236}
Note: See TracBrowser for help on using the repository browser.