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

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