source: 2015/26/EetuR/Nonameyet/Nonameyet/Nonameyet/Nonameyet.cs @ 6189

Revision 6189, 6.4 KB checked in by empaheik, 5 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 Nonameyet : PhysicsGame
10{
11    AssaultRifle pelaaja1ase;
12    AssaultRifle pelaaja2ase;
13    Image pelaaja1kuva = LoadImage("pelaaja1pistoli");
14    Image pelaaja2kuva = LoadImage("pelaaja2pistoli");
15    Image seinakuva = LoadImage("stonebarricade");
16    Image luotikuva = LoadImage("luoti");
17    Image taustakuva = LoadImage("background");
18    Pelaaja pelaaja1;
19    Pelaaja pelaaja2;
20    public override void Begin()
21    {
22
23        AloitaPeli();
24
25
26    }
27       
28
29
30    void AloitaPeli()
31    {
32        ClearAll();
33        Level.Width = 3000;
34        Camera.ZoomToLevel();
35        Luopelaaja1();
36        Luopelaaja2();
37        Luopelaaja1controls();
38        Luopelaaja2controls();
39        Luokentta();
40        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
41        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
42        Keyboard.Listen(Key.Back, ButtonState.Pressed, Begin, "Uusi kierros");
43    }
44
45    void Luopelaaja1controls()
46    {
47        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-2600, 0), pelaaja1);
48        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(2600, 0), pelaaja1);
49        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 2600), pelaaja1);
50        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -2600), pelaaja1);
51        Keyboard.Listen(Key.NumPad4, ButtonState.Down, Kaannapelaajaa, null, Angle.FromDegrees(2), pelaaja1);
52        Keyboard.Listen(Key.NumPad5, ButtonState.Down, Kaannapelaajaa, null, Angle.FromDegrees(-2), pelaaja1);
53        Keyboard.Listen(Key.NumPad1, ButtonState.Down, AmmuAseella, "Ammu", 1, pelaaja1ase);
54
55    }
56    void Luopelaaja2controls()
57    {
58        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-2600, 0), pelaaja2);
59        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(2600, 0), pelaaja2);
60        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 2600), pelaaja2);
61        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -2600), pelaaja2);
62        Keyboard.Listen(Key.F, ButtonState.Down, Kaannapelaajaa, null, Angle.FromDegrees(2), pelaaja2);
63        Keyboard.Listen(Key.G, ButtonState.Down, Kaannapelaajaa, null, Angle.FromDegrees(-2), pelaaja2);
64        Keyboard.Listen(Key.V, ButtonState.Down, AmmuAseella, "Ammu", 2, pelaaja2ase);
65
66    }
67    void Luopelaaja1()
68    {
69        pelaaja1 = new Pelaaja(40, 40);
70        pelaaja1.Shape = Shape.Rectangle;
71        pelaaja1.Image = pelaaja1kuva;
72        pelaaja1.Mass = 10.0;
73        pelaaja1.X = 550;
74        pelaaja1.Y = -550;
75        pelaaja1.LinearDamping = 0.95;
76        pelaaja1.AngularDamping = 0.95;
77        Add(pelaaja1);
78
79        AddCollisionHandler(pelaaja1, "ammus", Osuma);
80
81        pelaaja1ase = new AssaultRifle(30, 10);
82
83       
84        pelaaja1ase.Ammo.Value = 1000;
85        pelaaja1ase.InfiniteAmmo = true;
86        pelaaja1ase.ProjectileCollision = AmmusOsui;
87        pelaaja1ase.FireRate = 3.5;
88        pelaaja1.Add(pelaaja1ase);
89        pelaaja1ase.IsVisible = false;
90        pelaaja1ase.Angle += Angle.FromDegrees(90);
91
92
93    }
94    void Luopelaaja2()
95    {
96        pelaaja2 = new Pelaaja(40, 40);
97        pelaaja2.Shape = Shape.Rectangle;
98        pelaaja2.Image = pelaaja2kuva;
99        pelaaja2.Mass = 10.0;
100        pelaaja2.X = -550;
101        pelaaja2.Y = 550;
102        pelaaja2.LinearDamping = 0.95;
103        pelaaja2.AngularDamping = 0.95;
104        Add(pelaaja2);
105
106        AddCollisionHandler(pelaaja2, "ammus", Osuma);
107
108        pelaaja2ase = new AssaultRifle(30, 10);
109
110        pelaaja2ase.Ammo.Value = 1000;
111        pelaaja2ase.InfiniteAmmo = true;
112        pelaaja2ase.ProjectileCollision = AmmusOsui;
113        pelaaja2ase.FireRate = 3.5;
114        pelaaja2.Add(pelaaja2ase);
115        pelaaja2ase.IsVisible = false;
116        pelaaja2ase.Angle += Angle.FromDegrees(90);
117       
118    }
119    void Osuma(PhysicsObject pelaaja, PhysicsObject ammus)
120    {
121        Pelaaja osuttu = pelaaja as Pelaaja;
122        osuttu.ElamaLaskuri.Value--;
123    }
124
125    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
126    {
127        pelaaja.Push(vektori);
128    }
129
130    void Kaannapelaajaa(Angle kulma, PhysicsObject pelaaja)
131    {
132        pelaaja.Angle += kulma;
133    }
134
135    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
136    {
137        ammus.Destroy();
138
139    }
140
141    void AmmuAseella(int pelaajanNumero, AssaultRifle ase)
142    {
143        if (pelaajanNumero == 1 && pelaaja1.ElamaLaskuri.Value == pelaaja1.ElamaLaskuri.MinValue) return;
144        if (pelaajanNumero == 2 && pelaaja2.ElamaLaskuri.Value == pelaaja2.ElamaLaskuri.MinValue) return;
145
146        PhysicsObject ammus = ase.Shoot();
147
148        if (ammus != null)
149        {
150            ammus.Tag = "ammus";
151            ammus.Image = luotikuva;
152            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.5);
153        }
154    }
155
156    void Luokentta()
157    {
158        Lisaaseina(85, 50, 30, -10, Angle.FromDegrees(180));
159        Lisaaseina(75, 75, 200, 250, Angle.FromDegrees(90));
160        Lisaaseina(100, 35, 300, -62, Angle.FromDegrees(60));
161        Lisaaseina(80, 80, -250, -40, Angle.FromDegrees(0));
162        Lisaaseina(185, 30, -775, -100, Angle.FromDegrees(90));
163        Level.Size = new Vector(Screen.Width*1.6, Screen.Height*1.6);
164        Level.CreateBorders(false);
165        Level.Background.Image = taustakuva;
166        Level.Background.FitToLevel();
167    }
168
169    void Lisaaseina(double leveys, double korkeus, double x, double y, Angle kulma)
170    {
171        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
172        seina.Position = new Vector(x, y);
173        seina.Angle = kulma;
174        seina.Shape = Shape.FromImage(seinakuva);
175        Add(seina);
176        seina.Image = seinakuva;
177    }
178
179   
180}
181
182class Pelaaja : PhysicsObject
183{
184    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
185    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
186
187    public Pelaaja(double leveys, double korkeus)
188        : base(leveys, korkeus)
189    {
190        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
191    }
192}
193
194
Note: See TracBrowser for help on using the repository browser.