source: 2017/27/OttoK/1v1MeBitch/1v1MeBitch/_1v1MeBitch/_1v1MeBitch.cs @ 8839

Revision 8839, 7.3 KB checked in by npo17_47, 2 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 Tikas : PhysicsObject
10{
11    public Tikas(double leveys, double korkeus) : base(leveys, korkeus)
12    {
13    }
14
15    public Vector AloitusPaikka;
16}
17
18class Pelaaja: PlatformCharacter
19{
20    private IntMeter elamaLaskuri = new IntMeter(8, 0, 8 );
21    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
22
23    public Pelaaja(double leveys, double korkeus)
24        : base(leveys, korkeus)
25    {
26        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
27    }
28}
29
30public class _1v1MeBitch : PhysicsGame
31{
32    const double nopeus = 200;
33    const double hyppyNopeus = 750;
34    const int RUUDUN_KOKO = 40;
35
36    Pelaaja pelaaja1;
37    Pelaaja pelaaja2;
38
39    //Image pelaajanKuva = LoadImage("")
40
41    public override void Begin()
42    {
43        Gravity = new Vector(0, -1000);
44
45        LuoKentta();
46        LisaaNappaimet();
47        IsFullScreen = true;
48
49        Camera.ZoomToLevel();
50        Camera.StayInLevel = true;
51    }
52
53    void LuoKentta()
54    {
55        TileMap kentta = TileMap.FromLevelAsset("kentta1");
56        kentta.SetTileMethod('#', LisaaTaso);
57        kentta.SetTileMethod('T', LisaaTikas);
58        kentta.SetTileMethod('N', LisaaPelaaja1);
59        kentta.SetTileMethod('M', LisaaPelaaja2);
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
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.Green;
70        Add(taso);
71    }
72
73    void LisaaTikas(Vector paikka, double leveys, double korkeus)
74    {
75        Tikas k = new Tikas(leveys, korkeus);
76        k.MakeOneWay();
77        k.AloitusPaikka = paikka;
78        k.MakeStatic();
79        k.Color = Color.Brown;
80        k.Position = paikka;
81        k.Tag = "tikas";
82        Add(k);
83    }
84
85
86    Pelaaja LisaaPelaaja(Vector paikka, double leveys, double korkeus, Color vari, Vector laskurinpaikka)
87    {
88        Pelaaja pelaaja = new Pelaaja(leveys, korkeus);
89        //pelaaja.CollisionIgnoreGroup = group;
90        pelaaja.Position = paikka;
91        pelaaja.Mass = 4.0;
92        pelaaja.Color = vari;
93        //pelaaja1.Image = pelaajanKuva;
94        Add(pelaaja);
95
96        ProgressBar elamaPalkki = new ProgressBar(150, 20);
97        elamaPalkki.Position = laskurinpaikka;
98        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
99        Add(elamaPalkki);
100
101        return pelaaja;
102    }
103
104    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
105    {
106        pelaaja1 = LisaaPelaaja(paikka, leveys, korkeus, Color.HotPink, new Vector(Screen.Right - 150, Screen.Top - 20));
107
108       
109    }
110
111    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
112    {
113        pelaaja2 = LisaaPelaaja(paikka, leveys, korkeus, Color.JungleGreen, new Vector(Screen.Left + 150, Screen.Top - 20));
114    }
115
116    void LisaaNappaimet()
117    {
118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
119        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
120
121        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
122        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
123        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
124
125        Keyboard.Listen(Key.Down, ButtonState.Down, Alas, "Pelaaja menee alas", pelaaja1, hyppyNopeus, "tikas");
126        Keyboard.Listen(Key.S, ButtonState.Down, Alas, "Pelaaja menee alas", pelaaja2, hyppyNopeus, "tikas2");
127
128        Keyboard.Listen(Key.NumPad0, ButtonState.Pressed, Ammu, "Ammu ohjus", pelaaja1);
129        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ammu ohjus", pelaaja2);
130
131        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
132        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
133        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
134
135
136        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
139        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
140        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
141
142        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
143    }
144
145    void Liikuta(PlatformCharacter hahmo, double nopeus)
146    {
147        hahmo.Walk(nopeus);
148    }
149
150    void Hyppaa(PlatformCharacter hahmo, double nopeus)
151    {
152        hahmo.Jump(nopeus);
153    }
154    void Alas(PlatformCharacter hahmo, double nopeus, string tag)
155    {
156        List<GameObject> tikkaat = GetObjectsAt(new Vector(hahmo.X, hahmo.Bottom - 5));
157        bool voiPudota = false;
158        foreach (GameObject tikas in tikkaat)
159        {
160            if (tikas.Tag.ToString() == "tikas")
161            {
162                voiPudota = true;
163                break;
164            }
165        }
166
167        if (!hahmo.IsAboutToFall() && voiPudota)
168        {
169            hahmo.Y -= 50;
170        }
171
172        //List<GameObject> tikkaat = GetObjectsWithTag(tag);
173        //foreach(GameObject tikas in tikkaat)
174        //{
175        //    Tikas p = (Tikas)tikas;
176        //    p.Y += 2000;
177        //    Timer.SingleShot(0.5, delegate { p.Position = p.AloitusPaikka; });
178        //}
179    }
180    void Ammu(PlatformCharacter hahmo)
181    {
182        if (hahmo.IsDestroyed)
183            return;
184
185        PhysicsObject ohjus = new PhysicsObject(40, 12);
186        //ohjus.MakeStatic();
187        ohjus.Position = hahmo.Position;
188        ohjus.X += hahmo.FacingDirection.GetVector().X * 45;
189        ohjus.Color = hahmo.Color;
190        ohjus.CollisionIgnoreGroup = 1;
191        ohjus.IgnoresGravity = true;
192        ohjus.IgnoresCollisionResponse = true;
193        Add(ohjus);
194
195        //ohjus.Velocity = hahmo.FacingDirection.GetVector() * 600;
196        ohjus.Hit(hahmo.FacingDirection.GetVector() * 600);
197
198        AddCollisionHandler(ohjus, delegate(PhysicsObject a, PhysicsObject b)
199        {
200            TuhoaOhjus(a, b, hahmo);
201        });
202    }
203    void TuhoaOhjus(PhysicsObject ohjus, PhysicsObject kohde, PhysicsObject ampuja)
204    {
205        if (kohde.Tag != "tikas")
206        {
207
208            Explosion rajahdys = new Explosion(80);
209            rajahdys.Force = 5;
210            rajahdys.Position = ohjus.Position;
211            Add(rajahdys);
212            rajahdys.ShockwaveReachesObject += delegate (IPhysicsObject rajahdyksenKohde, Vector shokki)
213            {
214                Pelaaja kohdePelaaja = rajahdyksenKohde as Pelaaja;
215                if(kohdePelaaja != null && kohdePelaaja != ampuja)
216                {
217                    kohdePelaaja.ElamaLaskuri.Value--;
218                }
219            };
220            ohjus.Destroy();
221        }
222    }
223}
Note: See TracBrowser for help on using the repository browser.