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

Revision 9614, 5.9 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
30
31
32    public override void Begin()
33    {
34        Gravity = new Vector(0, -1000);
35        SmoothTextures = false;
36        LuoKentta();
37        LisaaNappaimet();
38
39        Camera.Follow(pelaaja1);
40        Camera.ZoomFactor = 1.2;
41        Camera.StayInLevel = true;
42        PhysicsObject ammus;
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso);
49        kentta.SetTileMethod('*', LisaaZombi);
50        kentta.SetTileMethod('N', LisaaPelaaja);
51        kentta.SetTileMethod('"', LisaaLaava);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.DarkRed, Color.DarkGray);
55    }
56
57    void LisaaTaso(Vector paikka, double leveys, double korkeus)
58    {
59        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
60        taso.Position = paikka;
61        taso.Color = Color.Black;
62        Add(taso);
63    }
64
65    void LisaaZombi(Vector paikka, double leveys, double korkeus)
66    {
67        Zombi zombi = new Zombi(leveys * 2, korkeus * 2);
68        zombi.Position = paikka;
69        zombi.Image = LoadImage("Zombe");
70        zombi.MirrorImage();
71        zombi.Tag = "Zombie";
72        Add(zombi);
73        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
74        tasoAivot.Speed = 100;
75        AddCollisionHandler(zombi, "ammus", boom);
76        zombi.Brain = tasoAivot;
77
78    }
79    void boom(PhysicsObject vihu, PhysicsObject ammus)
80    {
81        Zombi zombi = (Zombi)vihu;
82        zombi.ElamaLaskuri.Value -= 1;
83        ammus.Destroy();
84    }
85
86
87    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
88    {
89        pelaaja1 = new PlatformCharacter(leveys * 2, korkeus * 2);
90        pelaaja1.Position = paikka;
91        pelaaja1.Mass = 4.0;
92        pelaaja1.Image = pelaajanKuva;
93        // AddCollisionHandler(pelaaja1, "Zombe", ZombiSoi);
94        Add(pelaaja1);
95        pelaaja1.CollisionIgnoreGroup = 1;
96    }
97    void LisaaLaava(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
100        taso.Position = paikka;
101        taso.Color = Color.Red;
102        Add(taso);
103
104    }
105
106    void LisaaNappaimet()
107    {
108        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
109        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
110
111        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
112        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
113        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
114        Keyboard.Listen(Key.R, ButtonState.Pressed, lataa, "pelaaja lataa lippaansa");
115        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
116
117        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
118        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
119        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
120        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, ammu, "pam");
121        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
122    }
123    void ammu()
124    {
125        if (panokset.Value == 0) return;
126        PhysicsObject ammus = new PhysicsObject(30, 30);
127        Add(ammus);
128        ammus.Tag = "ammus";
129        ammus.Image = ammuksenKuva;
130        double ammuksenX = 45;
131        double nopeus = 400;
132        double ammuksenY = -10;
133        if (pelaaja1.FacingDirection.Equals(Direction.Left))
134        {
135            ammus.Hit(new Vector(-nopeus, 0));
136            ammus.MirrorImage();
137            ammuksenX *= -1;
138        }
139        else ammus.Hit(new Vector(nopeus, 0));
140        ammus.Position = pelaaja1.Position;
141        ammus.X += ammuksenX;
142        ammus.Y += ammuksenY;
143        ammus.IgnoresGravity = true;
144        ammus.CollisionIgnoreGroup = 1;
145        AddCollisionHandler(ammus, AmmusOsui);
146        panokset.Value -= 1;
147
148    }
149    void lataa()
150    {
151        Animation lataus = new Animation(LoadImage("sprite reloaded"), LoadImage("sprite reload 1"), LoadImage("reload 2"), LoadImage("sprite reloaded"));
152        pelaaja1.Animation = lataus;
153        pelaaja1.Animation.Start();
154        pelaaja1.Animation.FPS = 6;
155        pelaaja1.Animation.Played += Ladattu;
156    }
157
158    void Ladattu()
159    {
160        pelaaja1.Animation.Stop();
161        panokset.Value = panokset.MaxValue;
162        pelaaja1.Image = pelaajanKuva;
163    }
164    void AmmusOsui(PhysicsObject tormaaja, PhysicsObject kohde)
165    {
166        tormaaja.Destroy();
167    }
168
169    void Liikuta(PlatformCharacter hahmo, double nopeus)
170    {
171        hahmo.Walk(nopeus);
172    }
173
174    void Hyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179
180
181
182
183
184
185}
Note: See TracBrowser for help on using the repository browser.