source: 2015/24/ArttuH/spacerX/spacerX/spacerX/spacerX.cs @ 6077

Revision 6077, 5.6 KB checked in by anlakane, 4 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 spacerX : PhysicsGame
10{
11
12    AssaultRifle gunBlockAse;
13
14
15    PhysicsObject gunBlock;
16
17    Vector nopeusYlos = new Vector(0, 1000);
18    Vector nopeusAlas = new Vector(0, -1000);
19
20    Vector vihollinen = new Vector(200.0, 0.0);
21
22    IntMeter pisteLaskuri;
23
24    PhysicsObject loppuReuna;
25
26    public override void Begin()
27    {
28        ClearAll();
29
30        Lisaa();
31
32        StartGame();
33
34        Enemys();
35
36        aika();
37
38        LuoPistelaskuri();
39
40
41        Controlz();
42
43        Level.Width = Screen.Width;
44
45        Level.Height = Screen.Height;
46
47       
48
49       
50        PhysicsObject ylaReuna = Level.CreateTopBorder();
51        ylaReuna.Tag = "reuna";
52        ylaReuna.Restitution = 0.0;
53        ylaReuna.KineticFriction = 0.0;
54        ylaReuna.IsVisible = false;
55
56        PhysicsObject alaReuna = Level.CreateBottomBorder();
57        alaReuna.Tag="reuna";
58        alaReuna.Restitution = 0.0;
59        alaReuna.IsVisible = false;
60        alaReuna.KineticFriction = 0.0;
61
62        loppuReuna = Level.CreateLeftBorder();
63        loppuReuna.Tag = "loppupeli";
64        loppuReuna.IsVisible = false;
65
66       
67
68        Level.Background.CreateStars();
69
70
71        IsFullScreen = true;
72
73
74
75
76
77
78
79
80
81    }
82    void Lisaa()
83    {
84
85        PhysicsObject vast = new PhysicsObject(40, 40);
86        vast.Position = new Vector(Screen.Right + 100, RandomGen.NextDouble(Screen.Bottom + 50, Screen.Top - 50));
87
88        vast.CollisionIgnoreGroup = 1;
89
90        AddCollisionHandler(vast, "loppupeli", loppu);
91
92        vast.Tag = "vastustaja";
93
94        Add(vast);
95
96       
97
98
99        Vector impulssi = new Vector(-500.0, 0.0);
100        vast.Hit(impulssi);
101    }
102
103
104    void StartGame()
105    {
106
107
108
109
110    }
111
112
113
114
115    void Enemys()
116    {
117        LuogunBlock();
118
119
120
121    }
122
123
124    void LuogunBlock()
125    {
126
127        gunBlock = new PhysicsObject(30.0, 30.0);
128        gunBlock.X = -500.0;
129        gunBlock.Y = 0.0;
130        gunBlock.IgnoresCollisionResponse = false;
131        gunBlock.IgnoresExplosions = true;
132        gunBlock.CollisionIgnoreGroup = 1;
133        gunBlock.Mass = 0.1;
134        gunBlock.Tag = "pelaaja";
135        Add(gunBlock);
136
137        gunBlockAse = new AssaultRifle(30, 10);
138        gunBlockAse.Ammo.Value = 1000;
139
140        gunBlockAse.InfiniteAmmo = true;
141
142        gunBlockAse.ProjectileCollision = AmmusOsui;
143
144        gunBlockAse.FireRate = 2;
145
146        gunBlockAse.Image = null;
147
148        gunBlockAse.AttackSound = null;
149
150        gunBlockAse.CanHitOwner = false;
151
152       
153
154        gunBlockAse.AmmoIgnoresExplosions = true;
155
156
157
158        gunBlock.Add(gunBlockAse);
159    }
160
161    void Controlz()
162    {
163
164        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "ylös", gunBlock, nopeusYlos);
165        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, gunBlock, Vector.Zero);
166        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "alas", gunBlock, nopeusAlas);
167        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, gunBlock, Vector.Zero);
168
169        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", gunBlockAse);
170
171        Keyboard.Listen(Key.E, ButtonState.Down, Lisaa, ":DDD");
172
173
174
175        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "ohjeet");
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177    }
178    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
179    {
180        maila.Velocity = nopeus;
181    }
182
183    void AmmusOsui(PhysicsObject ammus, PhysicsObject vastustaja)
184    {
185       
186
187        if (vastustaja.Tag.ToString() == "pelaaja")
188        {
189            return;
190        }
191       
192        Explosion rajahdys = new Explosion(100);
193        rajahdys.Position = vastustaja.Position;
194        rajahdys.Sound = null;
195        rajahdys.Speed = 200.0;
196        rajahdys.Force = 0;
197        Add(rajahdys);
198
199        gunBlock.IgnoresExplosions = true;
200
201        ammus.Destroy();
202
203        if (vastustaja.Tag.ToString() != "reuna")
204        {
205            vastustaja.Destroy();
206            pisteLaskuri.Value += 1;
207        }
208       
209
210
211    }
212    void AmmuAseella(AssaultRifle ase)
213    {
214        PhysicsObject ammus = ase.Shoot();
215
216
217        if (ammus != null)
218        {
219            ammus.Size *= 3;
220            ammus.CollisionIgnoreGroup = 0;
221        }
222    }
223
224    void aika()
225    {
226        Timer ajastin = new Timer();
227        ajastin.Interval = 1.0;
228        ajastin.Timeout += Lisaa;
229        ajastin.Start();
230    }
231    void LuoPistelaskuri()
232    {
233        pisteLaskuri = new IntMeter(0);
234
235        Label pisteNaytto = new Label();
236        pisteNaytto.X = Screen.Left + 100;
237        pisteNaytto.Y = Screen.Top - 100;
238        pisteNaytto.TextColor = Color.White;
239       
240
241        pisteNaytto.BindTo(pisteLaskuri);
242        Add(pisteNaytto);
243    }
244
245    void loppu(PhysicsObject vast, PhysicsObject loppuPeli)
246    {
247        MultiSelectWindow valikko = new MultiSelectWindow("Hävisit",
248"Poistu", "Udestaan");
249        valikko.ItemSelected += PainettiinValikonNappia;
250        valikko.Color = Color.HotPink;
251        Add(valikko);
252       
253
254    }
255
256    void PainettiinValikonNappia(int valinta)
257    {
258        switch (valinta)
259        {
260            case 0:
261                Exit();
262                break;
263           
264            case 1:
265                Begin();
266                break;
267        }
268    } 
269   
270}
Note: See TracBrowser for help on using the repository browser.