source: 2013/26/SakuK/kaksintastelut/kaksintastelut/kaksintastelut/kaksintastelut.cs @ 4305

Revision 4305, 7.1 KB checked in by sakivima, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class kaksintastelut : PhysicsGame
10{
11    PlatformCharacter pelaaja1;
12    PlatformCharacter pelaaja2;
13
14    Image hahmokuva = LoadImage("hahmopaahenkilo");
15    Image hahmokuva2 = LoadImage("hahmopaahenkilo2");
16
17    DoubleMeter elamaLaskuri1;
18    DoubleMeter elamaLaskuri2;
19    IntMeter pisteLaskuri1 = new IntMeter(0, 0, 5);
20    IntMeter pisteLaskuri2 = new IntMeter(0, 0, 5);
21
22    public override void Begin()
23    {
24        AloitaPeli();
25    }
26
27    public void AloitaPeli()
28    {
29        ClearAll();
30        Gravity = new Vector(0, -900);
31        //      pelaaja1 = new PhysicsObject( 40, 40 );
32        //Add( pelaaja1 );
33        //pelaaja2 = new PhysicsObject( 40, 40 );
34        //Add( pelaaja2 );
35        LuoKentta();
36
37        LuoElamaLaskuri();
38
39        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Kavele, null, -1000.0, pelaaja1);
40        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Kavele, null, 1000.0, pelaaja1);
41        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, Hyppaa, null, 1000.0, pelaaja1);
42        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja1);
43        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Hyppää", 1000.0, pelaaja1);
44       
45        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
46
47
48
49        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down,
50          Kavele, null, -1000.0, pelaaja2);
51        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down,
52          Kavele, null, 1000.0, pelaaja2);
53        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down,
54          Hyppaa, null, 1000.0, pelaaja2);
55        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1,
56      LiikutaTatilla, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja2);
57        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Hyppää", 1000.0, pelaaja2);
58        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
59
60
61
62        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
63        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
64
65    }
66
67    void Hyppaa(double nopeus, PlatformCharacter pelaaja)
68    {
69        pelaaja.Jump(nopeus);
70    }
71
72    void AmmuAseella(PlatformCharacter pelaaja)
73    {
74        PhysicsObject ammus = pelaaja.Weapon.Shoot();
75
76        if (ammus != null)
77        {
78            //ammus.Size *= 3;
79            //ammus.Image = ...
80            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
81        }
82    }
83
84
85    void Kavele(double nopeus, PlatformCharacter pelaaja)
86    {
87        pelaaja.Walk(nopeus);
88    }
89
90    void LiikutaTatilla(AnalogState a, PlatformCharacter pelaaja)
91    {
92        Vector tatinAsento = a.StateVector;
93        pelaaja.Walk(tatinAsento.X * 1000);
94
95    }
96
97
98    void LuoPelaaja1(Vector paikka, double leveys, double korkeus, PhysicsObject pelaaja)
99    {
100        pelaaja1 = new PlatformCharacter(40, 20);
101        pelaaja1.Shape = Shape.Rectangle;
102        pelaaja1.Mass = 10.0;
103        pelaaja1.Position = paikka;
104        pelaaja1.Image = hahmokuva;
105        Add(pelaaja1);
106        pelaaja1.Weapon = new AssaultRifle(30, 10);
107        pelaaja1.Weapon.Ammo.Value = 1000;
108        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
109    }
110
111
112    void LuoKentta()
113    {
114        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
115        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kaksintaistelu");
116        ruudut.SetTileMethod("55FF11", LuoPelaaja1, pelaaja1);
117        ruudut.SetTileMethod("FF000C", LuoPelaaja2, pelaaja2);
118        ruudut.SetTileMethod("FF6A00", LuoTaso);
119        ruudut.SetTileMethod("7F0000", LuoSeina);
120        ruudut.Execute(40, 40);
121
122        Level.CreateBorders();
123
124        Level.BackgroundColor = Color.Black;
125
126        LuoPistelaskuri(pisteLaskuri1, Screen.Left + 100);
127        LuoPistelaskuri(pisteLaskuri2, Screen.Right - 100);
128    }
129
130    void LuoSeina(Vector paikka, double leveys, double Korkerus)
131    {
132        PhysicsObject taso = new PhysicsObject(leveys, Korkerus);
133        taso.MakeStatic();
134        taso.Position = paikka;
135        Add(taso);
136    }
137
138    void LuoTaso(Vector paikka, double leveys, double Korkerus)
139    {
140        PhysicsObject taso = new PhysicsObject(leveys, Korkerus);
141        taso.MakeStatic();
142        taso.Position = paikka;
143        Add(taso);
144    }
145
146    void LiikutaPelaajaa(Vector paikka, PhysicsObject Pelaaja)
147    {
148        Pelaaja.Push(paikka);
149    }
150    void LuoPelaaja2(Vector paikka, double leveys, double korkeus, PhysicsObject pelaaja)
151    {
152        pelaaja2 = new PlatformCharacter(40, 20);
153        pelaaja2.Shape = Shape.Rectangle;
154        pelaaja2.Mass = 10.0;
155        pelaaja2.Position = paikka;
156        pelaaja2.Image = hahmokuva2;
157        Add(pelaaja2);
158        pelaaja2.Weapon = new AssaultRifle(30, 10);
159        pelaaja2.Weapon.Ammo.Value = 1000;
160        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
161    }
162
163    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
164    {
165        ammus.Destroy();
166
167        if (kohde == pelaaja1)
168        {
169            elamaLaskuri1.Value--;
170        }
171        if (kohde == pelaaja2)
172        {
173            elamaLaskuri2.Value--;
174        }
175    }
176
177    void LuoPistelaskuri(IntMeter pisteLaskuri,  double x)
178    {
179        Label pisteNaytto = new Label();
180        pisteNaytto.X = x;
181        pisteNaytto.Y = Screen.Top - 100;
182        pisteNaytto.TextColor = Color.Black;
183        pisteNaytto.Color = Color.White;
184
185        pisteLaskuri.UpperLimit += delegate { Exit(); };
186        pisteNaytto.BindTo(pisteLaskuri);
187        Add(pisteNaytto);
188    }
189
190    void LuoElamaLaskuri()
191    {
192        elamaLaskuri1 = new DoubleMeter(10);
193        elamaLaskuri1.MaxValue = 10;
194        elamaLaskuri1.LowerLimit += delegate {
195
196            ElamaLoppui(pelaaja1);
197            pisteLaskuri2.Value++;
198            ControllerOne.Vibrate(1.5, 1.5, 1.5, 1.5, 0.5);
199        };
200        ProgressBar elamaPalkki = new ProgressBar(150, 20);
201        elamaPalkki.X = Screen.Left + 150;
202        elamaPalkki.Y = Screen.Top - 20;
203        elamaPalkki.BindTo(elamaLaskuri1);
204        Add(elamaPalkki);
205
206        elamaLaskuri2 = new DoubleMeter(10);
207        elamaLaskuri2.MaxValue = 10;
208        elamaLaskuri2.LowerLimit += delegate {
209            ElamaLoppui(pelaaja2);
210            pisteLaskuri1.Value++;
211            ControllerTwo.Vibrate(1.5, 1.5, 1.5, 1.5, 0.5);
212        };
213        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
214        elamaPalkki2.X = Screen.Right - 150;
215        elamaPalkki2.Y = Screen.Top - 20;
216        elamaPalkki2.BindTo(elamaLaskuri2);
217        Add(elamaPalkki2);
218    }
219
220    void ElamaLoppui(PlatformCharacter pelaaja)
221    {
222        pelaaja.Destroy();
223
224        Timer.SingleShot(2, AloitaPeli);
225    }
226}
Note: See TracBrowser for help on using the repository browser.