source: 2014/24/ArtturiN/UltimateStickmanWar/UltimateStickmanWar/UltimateStickmanWar/UltimateStickmanWar.cs @ 5016

Revision 5016, 5.0 KB checked in by jotapoti, 8 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 UltimateStickmanWar : PhysicsGame
10{
11    Image taustaKuva = LoadImage("Tausta1");
12    Image Taso1 = LoadImage("POMPUT");
13    Image ruohoKuva = LoadImage("ruoho");
14    Image reunat = LoadImage("Reunat");
15    Image pelaaja2kuva = LoadImage("Pelaaja2");
16    Image pelaaja1kuva = LoadImage("Pelaaja1");
17   
18    PlatformCharacter pelaaja1;
19    PlatformCharacter pelaaja2;
20    const double liikkumisNopeus = 400.0;
21    const double Hyppynopeus = 500;
22
23
24    public override void Begin()
25    {
26        // TODO: Kirjoita ohjelmakoodisi tähän
27
28        SetWindowSize(1000, 1000);
29        Level.Size = new Vector(1000, 1000);
30
31        Gravity = new Vector(0, -800);
32
33
34        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
35        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
36
37        LuoKentta();
38       
39        Level.Background.Image = taustaKuva;
40        Camera.ZoomToLevel();
41       
42        Level.Background.ScaleToLevelFull();
43
44       
45
46
47
48    }
49
50
51
52
53
54   
55   
56
57    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
58    {
59        pelaaja1 = new PlatformCharacter(25, 50);
60        pelaaja1.Position = paikka;
61        pelaaja1.Image = pelaaja1kuva;
62        pelaaja1.Tag = "pelaaja";
63        Add(pelaaja1);
64
65        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle", -liikkumisNopeus, pelaaja1);
66        Keyboard.Listen(Key.W, ButtonState.Down, Hyppaa, "Pelaaja liikkuu ylös", pelaaja1, Hyppynopeus);
67        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu oikealle", liikkumisNopeus, pelaaja1);
68        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, "Pelaaja heittää kranaatin", pelaaja1);
69        //Keyboard.Listen(Key.A , ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle",new Vector(-400, 0),1);
70    }
71    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
72    {
73        pelaaja2 = new PlatformCharacter(25, 50);
74        pelaaja2.Position = paikka;
75        pelaaja2.Image = pelaaja2kuva;
76        pelaaja2.Tag = "pelaaja";
77        Add(pelaaja2);
78
79        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu vasemmalle", -liikkumisNopeus, pelaaja2);
80        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, "Pelaaja liikkuu ylös", pelaaja2, Hyppynopeus);
81        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liikkuu oikealle", liikkumisNopeus, pelaaja2);
82        Keyboard.Listen(Key.L, ButtonState.Pressed, HeitaKranaatti, "Pelaaja heittää kranaatin", pelaaja2);
83    }
84    void LuoKentta()
85    {
86        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
87        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("POMPUT");
88
89        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
90        ruudut.SetTileMethod(Color.Black, LuoPelaaja);
91        ruudut.SetTileMethod(Color.FromHexCode("0077FF"), LuoPelaaja2);
92        ruudut.SetTileMethod(Color.FromHexCode("00FF50"), LuoSeinat);
93        ruudut.SetTileMethod(Color.FromHexCode("FF00A5"), LuoRajat);
94        //3. Execute luo kentän
95        //   Parametreina leveys ja korkeus
96        ruudut.Execute(20, 20);
97    }
98    void LuoSeinat(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        taso.Position = paikka;
102        taso.CollisionIgnoreGroup = 1;
103        taso.IgnoresExplosions = true;
104        taso.Image = ruohoKuva;
105        Add(taso);
106    }
107    void LuoRajat(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        taso.Position = paikka;
111        taso.CollisionIgnoreGroup = 1;
112        taso.Image = reunat;
113        taso.IgnoresExplosions = true;
114        Add(taso);
115
116    }
117
118    void LiikutaPelaajaa(double liiku, PlatformCharacter pelaaja)
119    {
120        pelaaja.Walk(liiku);
121    }
122    void Liikuta(PlatformCharacter hahmo, double nopeus)
123    {
124        hahmo.Walk(nopeus);
125    }
126
127    void Hyppaa(PlatformCharacter hahmo, double nopeus)
128    {
129        hahmo.Jump(nopeus);
130    }
131
132    void HeitaKranaatti(PlatformCharacter pelaaja)
133    {
134        Grenade kranu = new Grenade(4.0);
135        Add(kranu);
136        kranu.Explosion.MaxRadius = 50;
137        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
138        //kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
139        kranu.Explosion.AddShockwaveHandler("pelaaja", delegate(IPhysicsObject rajahdyksenKohde, Vector v) { KranaattiOsui(rajahdyksenKohde,v,pelaaja); });
140    }
141
142
143    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v, PlatformCharacter ampuja)
144    {
145        if(rajahdyksenKohde != ampuja)
146            rajahdyksenKohde.Destroy();
147    }
148
149}
150
151
152
Note: See TracBrowser for help on using the repository browser.