source: 2014/26/OttoK/Jump/Jump/Jump/Jump.cs @ 5118

Revision 5118, 7.2 KB checked in by otoskinn, 7 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
9class Norsu : PlatformCharacter
10{
11    private IntMeter pisteLaskuri = new IntMeter(0);
12    public IntMeter PisteLaskuri { get { return pisteLaskuri; } }
13
14    private IntMeter kranaattiLaskuri = new IntMeter(1000, 0, 1000);
15    public IntMeter KranaattiLaskuri { get { return kranaattiLaskuri; } }
16
17    public Norsu(double leveys, double korkeus)
18        : base(leveys, korkeus)
19    {
20        Weapon = new AssaultRifle(40, 20);
21        Weapon.Ammo.Value = 10000;
22        Weapon.InfiniteAmmo = true;
23    }
24}
25
26
27public class Jump : PhysicsGame
28{
29    const double nopeus = 200;
30    const double hyppyNopeus = 750;
31    const int RUUDUN_KOKO = 40;
32
33    Norsu pelaaja1;
34    Norsu pelaaja2;
35
36    //IntMeter pisteLaskuri1;
37    //IntMeter pisteLaskuri2;
38
39    Image pelaajanKuva = LoadImage("norsu");
40    Image tahtiKuva = LoadImage("tahti");
41
42    SoundEffect maaliAani = LoadSoundEffect("maali");
43
44    public override void Begin()
45    {
46        Gravity = new Vector(0, -1000);
47
48        LuoKentta();
49        LisaaNappaimet();
50        LuoPistelaskuri(pelaaja1);
51        LuoPistelaskuri(pelaaja2);
52
53        Camera.Follow(pelaaja1, pelaaja2);
54        //Camera.ZoomFactor = 1.2;
55        //Camera.StayInLevel = true;
56    }
57
58    void LuoAseValikko(Norsu pelaaja)
59    {
60        MultiSelectWindow alkuValikko = new MultiSelectWindow("valitse ase", "Assault Rifle", "Kranaatit");
61        Add(alkuValikko);
62    }
63
64    void LuoKentta()
65    {
66        TileMap kentta = TileMap.FromLevelAsset("kentta1");
67        kentta.SetTileMethod('#', LisaaTaso);
68        kentta.SetTileMethod('*', LisaaTahti);
69        kentta.SetTileMethod('N', LisaaPelaaja);
70        kentta.SetTileMethod('C', LisaaPelaaja2);
71        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
72        Level.CreateBorders();
73        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
74    }
75
76    void LisaaTaso(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Position = paikka;
80        taso.Color = Color.Green;
81        Add(taso);
82    }
83
84    void LisaaTahti(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        tahti.IgnoresCollisionResponse = true;
88        tahti.Position = paikka;
89        tahti.Image = tahtiKuva;
90        tahti.Tag = "tahti";
91        Add(tahti);
92    }
93
94    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
95    {
96        pelaaja1 = new Norsu(leveys, korkeus);
97        pelaaja1.Position = paikka;
98        pelaaja1.Mass = 4.0;
99        pelaaja1.Image = pelaajanKuva;
100        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
101        Add(pelaaja1);
102        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
103
104    }
105
106    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
107    {
108        pelaaja2 = new Norsu(leveys, korkeus);
109        pelaaja2.Position = paikka;
110        pelaaja2.Mass = 4.0;
111        pelaaja2.Image = pelaajanKuva;
112        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
113        Add(pelaaja2);
114        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
115
116    }
117
118    void LisaaNappaimet()
119    {
120        Keyboard.Listen(Key.Tab, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
121        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
122
123        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
124        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
125        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
126        Keyboard.Listen(Key.NumPad2, ButtonState.Pressed , HeitaKranaatti, "Heitä Kranaatti", pelaaja1);
127        Keyboard.Listen(Key.NumPad1, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
128
129        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
130        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
131        Keyboard.Listen(Key.W,ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
132        Keyboard.Listen(Key.F, ButtonState.Pressed, HeitaKranaatti, "Heitä Kranaatti", pelaaja2);
133        Keyboard.Listen(Key.G, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
134
135        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
136
137        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
138        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
139        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
140
141        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
142   
143    }
144
145
146
147    void HeitaKranaatti(Norsu pelaaja)
148    {
149        if (pelaaja.KranaattiLaskuri.Value > 0)
150        {
151            Grenade kranu = new Grenade(4.0);
152            pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
153            pelaaja.KranaattiLaskuri.Value--;
154           // kranu.Mass = 1000.0;
155        }
156    }
157
158    void AmmuAseella(Norsu pelaaja)
159    {
160        PhysicsObject ammus = pelaaja.Weapon.Shoot();
161     
162        if (ammus != null)
163   
164        {
165            ammus.Mass = 99999999999;
166            //ammus.Size *=
167            //ammus.Image = ...
168            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
169        }
170    }
171
172    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
173    {
174        ammus.Destroy();
175
176    }
177
178
179    void Liikuta(PlatformCharacter hahmo, double nopeus)
180    {
181        hahmo.Walk(nopeus);
182    }
183
184    void Hyppaa(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Jump(nopeus);
187    }
188
189    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
190    {
191        maaliAani.Play();
192        MessageDisplay.Add("Keräsit tähden!");
193        tahti.Destroy();
194
195        if (hahmo == pelaaja1)
196        {
197            pelaaja1.PisteLaskuri.Value += 1;
198        }
199        else
200        {
201            pelaaja2.PisteLaskuri.Value += 1;
202        }
203    }
204
205    void LuoPistelaskuri(Norsu pelaaja)
206    {
207        Label pisteNaytto = new Label();
208        pisteNaytto.TextColor = Color.Black;
209        pisteNaytto.Color = Color.White;
210        Add(pisteNaytto);
211        pisteNaytto.BindTo(pelaaja.PisteLaskuri);
212
213        Label kranaattiNaytto = new Label();
214        kranaattiNaytto.TextColor = Color.Black;
215        kranaattiNaytto.Color = Color.Green;
216        Add(kranaattiNaytto);
217        kranaattiNaytto.BindTo(pelaaja.KranaattiLaskuri);
218
219        Timer ajastin = new Timer();
220        ajastin.Interval = 0.01;
221        ajastin.Timeout += delegate
222        {
223            pisteNaytto.Position = Camera.WorldToScreen(pelaaja.Position + new Vector(0, 30));
224            kranaattiNaytto.Position = Camera.WorldToScreen(pelaaja.Position + new Vector(0, 50));
225        };
226        ajastin.Start(); 
227       
228    }
229
230
231}
Note: See TracBrowser for help on using the repository browser.