source: 2018/23/TUOMASJ/zombie/zombie/zombie.cs @ 9671

Revision 9671, 7.4 KB checked in by tujuutin, 20 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7class Zombi : PlatformCharacter
8{
9    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5);
10    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
11    public Zombi(double leveys, double korkeus)
12        : base(leveys, korkeus)
13    {
14        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
15    }
16}
17
18public class zombie : PhysicsGame
19{
20    const double nopeus = 200;
21    const double hyppyNopeus = 750;
22    const int RUUDUN_KOKO = 40;
23
24    PlatformCharacter pelaaja1;
25    PhysicsObject ammus;
26    Image pelaajanKuva = LoadImage("shoot");
27    Image ammuksenKuva = LoadImage("New Piskel");
28    IntMeter panokset = new IntMeter(10, 0, 10);
29    bool latausKaynnissa = false;
30
31
32    public override void Begin()
33    {
34        Gravity = new Vector(0, -1000);
35        SmoothTextures = false;
36        LuoKentta();
37        LisaaNappaimet();
38        Musaa();
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42        PhysicsObject ammus;
43    }
44    void Musaa()
45    {
46        MediaPlayer.Play("Angels_-smodeus-6639_hifi - Copy");
47        MediaPlayer.IsRepeating = true;
48       
49
50    }
51
52    void LuoKentta()
53    {
54        TileMap kentta = TileMap.FromLevelAsset("kentta1");
55        kentta.SetTileMethod('#', LisaaTaso);
56        kentta.SetTileMethod('*', LisaaZombi);
57        kentta.SetTileMethod('N', LisaaPelaaja);
58        kentta.SetTileMethod('"', LisaaLaava);
59        kentta.SetTileMethod('%', LisaaPuu);
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.DarkRed, Color.DarkGray);
63    }
64
65    void LisaaTaso(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        taso.Position = paikka;
69        taso.Color = Color.Black;
70        Add(taso);
71    }
72
73    void LisaaZombi(Vector paikka, double leveys, double korkeus)
74    {
75        Zombi zombi = new Zombi(leveys * 2, korkeus * 2);
76        zombi.Position = paikka;
77        zombi.Image = LoadImage("Zombe");
78        zombi.MirrorImage();
79        zombi.Tag = "Zombie";
80        Add(zombi);
81        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
82        tasoAivot.Speed = 100;
83        AddCollisionHandler(zombi, "ammus", boom);
84        zombi.Brain = tasoAivot;
85
86    }
87    void boom(PhysicsObject vihu, PhysicsObject ammus)
88    {
89        Zombi zombi = (Zombi)vihu;
90        zombi.ElamaLaskuri.Value -= 1;
91        ammus.Destroy();
92    }
93
94
95    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
96    {
97        pelaaja1 = new PlatformCharacter(leveys * 2, korkeus * 2);
98        pelaaja1.Position = paikka;
99        pelaaja1.Mass = 4.0;
100        pelaaja1.Image = pelaajanKuva;
101        AddCollisionHandler(pelaaja1, "Zombie", ZombiSoi);
102        AddCollisionHandler(pelaaja1, "laavaa", ZombiSoi);
103        Add(pelaaja1);
104        pelaaja1.CollisionIgnoreGroup = 1;
105        pelaaja1.AnimIdle = pelaajanKuva;
106        pelaaja1.AnimJump = new Animation(LoadImage("sprite jump up"), LoadImage("sprite fall"));
107    }
108    void ZombiSoi(PhysicsObject pelaaja1, PhysicsObject zombi)
109    {
110        ClearAll();
111        GameObject kuva = new GameObject(Screen.Width, Screen.Height);
112        kuva.Image = LoadImage("Kcp4ql");
113        Add(kuva);
114       
115    }
116   
117   
118    void LisaaLaava(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        laava.Position = paikka;
122        laava.Color = Color.Red;
123        laava.Tag = "laavaa";
124        Add(laava);
125
126    }
127    void LisaaPuu(Vector paikka, double leveys, double korekeys)
128    {
129        PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys, korekeys);
130        puu.Position = paikka;
131        puu.Color = Color.Brown;
132        Add(puu);
133
134    }
135
136    void LisaaNappaimet()
137    {
138        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
139        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
140
141        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
142        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
143        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144        Keyboard.Listen(Key.R, ButtonState.Pressed, lataa, "pelaaja lataa lippaansa");
145        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
146
147        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
148        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
149        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammu, "pam");
151        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
152    }
153    void ammu()
154    {
155        if (panokset.Value == 0) return;
156       
157       
158           
159           
160       
161
162        PhysicsObject ammus = new PhysicsObject(30, 30);
163        Add(ammus);
164        ammus.Tag = "ammus";
165        ammus.Image = ammuksenKuva;
166        double ammuksenX = 45;
167        double nopeus = 400;
168        double ammuksenY = -10;
169        if (pelaaja1.FacingDirection.Equals(Direction.Left))
170        {
171            ammus.Hit(new Vector(-nopeus, 0));
172            ammus.MirrorImage();
173            ammuksenX *= -1;
174        }
175        else ammus.Hit(new Vector(nopeus, 0));
176        ammus.Position = pelaaja1.Position;
177        ammus.X += ammuksenX;
178        ammus.Y += ammuksenY;
179        ammus.IgnoresGravity = true;
180        ammus.CollisionIgnoreGroup = 1;
181        AddCollisionHandler(ammus, AmmusOsui);
182        panokset.Value -= 1;
183        if (panokset.Value == 2) MessageDisplay.Add("low ammo");
184
185    }
186    void lataa()
187    {
188        if (latausKaynnissa) return;
189       
190        Animation lataus = new Animation(LoadImage("sprite reloaded"), LoadImage("sprite reload 1"), LoadImage("reload 2"), LoadImage("sprite reloaded"));
191        MuutaKoko(pelaaja1, lataus.Width, pelaajanKuva.Width);
192        pelaaja1.AnimIdle = lataus;
193        pelaaja1.AnimIdle.Start();
194        pelaaja1.AnimIdle.FPS = 6;
195        lataus.Played += Ladattu;
196        latausKaynnissa = true;
197    }
198
199    private void MuutaKoko(PlatformCharacter pelaaja, double uusi, double alkuperainen)
200    {
201        pelaaja.Width *= uusi / alkuperainen;
202    }
203
204    void Ladattu()
205    {
206        latausKaynnissa = false;
207        double animaationLeveys = pelaaja1.Animation.Width;
208        pelaaja1.AnimIdle = pelaajanKuva;
209        panokset.Value = panokset.MaxValue;
210        pelaaja1.Image = pelaajanKuva;
211        MuutaKoko(pelaaja1, pelaajanKuva.Width, animaationLeveys);
212    }
213    void AmmusOsui(PhysicsObject tormaaja, PhysicsObject kohde)
214    {
215        tormaaja.Destroy();
216    }
217
218    void Liikuta(PlatformCharacter hahmo, double nopeus)
219    {
220        hahmo.Walk(nopeus);
221    }
222
223    void Hyppaa(PlatformCharacter hahmo, double nopeus)
224    {
225
226        hahmo.Jump(nopeus);
227
228
229    }
230
231
232
233
234
235
236
237}
Note: See TracBrowser for help on using the repository browser.