1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public class JHaapaduuuuuuuuuuuu__________________ : PhysicsGame |
---|
10 | { |
---|
11 | PhysicsObject vihollinen; |
---|
12 | AssaultRifle vihunAse; |
---|
13 | Timer ampumisAjastin; |
---|
14 | EasyHighScore topLista = new EasyHighScore(); |
---|
15 | PhysicsObject olio; |
---|
16 | Image olionKuva = LoadImage("Hyvis"); |
---|
17 | Image lattiankuva = LoadImage("Floor"); |
---|
18 | Image taustakuva =LoadImage("christmas-gifts-013[1]"); |
---|
19 | Image seinankuva = LoadImage("Wall"); |
---|
20 | Image vihukuva = LoadImage("Pahis"); |
---|
21 | double nopeus = 500.0; |
---|
22 | int VIHUNALOITUSENERGIA = 10000; |
---|
23 | |
---|
24 | IntMeter laskuri = new IntMeter(0); |
---|
25 | |
---|
26 | |
---|
27 | public override void Begin() |
---|
28 | { |
---|
29 | Valikko(null); |
---|
30 | } |
---|
31 | |
---|
32 | private void AloitaPeli() |
---|
33 | { |
---|
34 | ClearAll(); |
---|
35 | Level.Width = Screen.Width; |
---|
36 | Surfaces reunat = Level.CreateBorders(0, true, Color.Gray); |
---|
37 | reunat.Top.Image = seinankuva; |
---|
38 | reunat.Bottom.Image = seinankuva; |
---|
39 | |
---|
40 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
41 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
42 | olio = new PhysicsObject(100, 100); |
---|
43 | olio.MaxVelocity = 2000; |
---|
44 | olio.CanRotate = false; |
---|
45 | olio.Image = olionKuva; |
---|
46 | Add(olio); |
---|
47 | Vector impulssi = new Vector(500.0, 0.0); |
---|
48 | olio.Hit(impulssi); |
---|
49 | Level.BackgroundColor = Color.Black; |
---|
50 | Level.Background.Image = lattiankuva; |
---|
51 | Level.Background.ScaleToLevelByWidth(); |
---|
52 | |
---|
53 | Keyboard.Listen(Key.Left, ButtonState.Down, |
---|
54 | LiikutaPelaajaa, null, new Vector(-nopeus, 0)); |
---|
55 | Keyboard.Listen(Key.Right, ButtonState.Down, |
---|
56 | LiikutaPelaajaa, null, new Vector(nopeus, 0)); |
---|
57 | Keyboard.Listen(Key.Up, ButtonState.Down, |
---|
58 | LiikutaPelaajaa, null, new Vector(0, nopeus)); |
---|
59 | Keyboard.Listen(Key.Down, ButtonState.Down, |
---|
60 | LiikutaPelaajaa, null, new Vector(0, -nopeus)); |
---|
61 | |
---|
62 | LuoVihu(new Vector(-600, 85)); |
---|
63 | } |
---|
64 | |
---|
65 | void Valikko(Window ikkuna) |
---|
66 | { |
---|
67 | MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet","Lopeta"); |
---|
68 | Add(alkuValikko); |
---|
69 | alkuValikko.AddItemHandler(0, AloitaPeli); |
---|
70 | alkuValikko.AddItemHandler(1, ParhaatPisteet); |
---|
71 | alkuValikko.AddItemHandler(2, Exit); |
---|
72 | Level.Background.Image = taustakuva; |
---|
73 | } |
---|
74 | void LiikutaPelaajaa(Vector vektori) |
---|
75 | { |
---|
76 | olio.Stop(); |
---|
77 | olio.Angle = vektori.Angle; |
---|
78 | olio.Hit(vektori); |
---|
79 | } |
---|
80 | |
---|
81 | void LuoVihu(Vector vektori) |
---|
82 | { |
---|
83 | |
---|
84 | vihollinen = new PhysicsObject(100.0, 100.0); |
---|
85 | vihollinen.Position = vektori; |
---|
86 | vihollinen.Restitution = 1.0; |
---|
87 | vihollinen.Image = vihukuva; |
---|
88 | Add(vihollinen); |
---|
89 | IntMeter vihunElamaLaskuri = new IntMeter(VIHUNALOITUSENERGIA, 0, 10000); |
---|
90 | vihunElamaLaskuri.LowerLimit += delegate() { VihollinenKuolee(vihollinen); }; |
---|
91 | Label l = new Label(); |
---|
92 | l.TextColor = Color.Black; |
---|
93 | l.BindTo(vihunElamaLaskuri); |
---|
94 | l.Color = Color.Red; |
---|
95 | l.Position = new Vector(Screen.Right - 50, Screen.Top - 50); |
---|
96 | Add(l); |
---|
97 | vihollinen.CanRotate = false; |
---|
98 | //Tehdään uudet satunnaisaivot, jotka liikkuvat nopeudella 200 |
---|
99 | RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200); |
---|
100 | satunnaisAivot.ChangeMovementSeconds = 3; |
---|
101 | vihollinen.Brain = satunnaisAivot; |
---|
102 | AddCollisionHandler(olio, vihollinen, CollisionHandler.AddMeterValue(vihunElamaLaskuri, -1)); |
---|
103 | |
---|
104 | AddCollisionHandler(olio, vihollinen, CollisionHandler.AddMeterValue(laskuri, 1)); |
---|
105 | // tehdään vihulle ase: |
---|
106 | vihunAse = new AssaultRifle(0, 0); |
---|
107 | vihunAse.Ammo.Value = 100000; |
---|
108 | // mitä tapahtuu, kun ammus osuu johonkin: |
---|
109 | vihunAse.ProjectileCollision = AmmusOsui; |
---|
110 | vihollinen.Add(vihunAse); |
---|
111 | ampumisAjastin = new Timer(); |
---|
112 | ampumisAjastin.Interval = 2.0; |
---|
113 | ampumisAjastin.Timeout += VihuAmpuu; |
---|
114 | ampumisAjastin.Start(); |
---|
115 | } |
---|
116 | |
---|
117 | private void VihollinenKuolee(PhysicsObject vihollinen) |
---|
118 | { |
---|
119 | vihollinen.Destroy(); |
---|
120 | KysyParhaatPisteet(); |
---|
121 | vihunAse.Destroy(); |
---|
122 | } |
---|
123 | |
---|
124 | void OlioTormasi(PhysicsObject tormaaja, PhysicsObject kohde) |
---|
125 | { |
---|
126 | kohde.Destroy(); |
---|
127 | } |
---|
128 | |
---|
129 | void VihuAmpuu() |
---|
130 | { |
---|
131 | vihunAse.Angle = RandomGen.NextDirection().Angle; |
---|
132 | |
---|
133 | vihunAse.Shoot(); |
---|
134 | } |
---|
135 | |
---|
136 | void AmmusOsui(PhysicsObject tormaaja, PhysicsObject kohde) |
---|
137 | { |
---|
138 | if (kohde == null) return; |
---|
139 | if (kohde.Equals(olio)) // Jos ammuksen kohteena on pelaaja eli pelaaja kuolee ja hävisi pelin: |
---|
140 | { |
---|
141 | olio.Destroy(); // tapetaan pelaaja |
---|
142 | KysyParhaatPisteet(); |
---|
143 | Timer.SingleShot(3, vihollinen.Destroy); |
---|
144 | Timer.SingleShot(3, vihunAse.Destroy); |
---|
145 | Timer.SingleShot(3, ampumisAjastin.Stop); |
---|
146 | |
---|
147 | } |
---|
148 | tormaaja.Destroy(); // Hävitetään panos |
---|
149 | } |
---|
150 | |
---|
151 | private void KysyParhaatPisteet() |
---|
152 | { |
---|
153 | topLista.EnterAndShow(laskuri.Value); |
---|
154 | topLista.HighScoreWindow.Closed += Valikko; |
---|
155 | } |
---|
156 | |
---|
157 | void TestiValikko() |
---|
158 | { |
---|
159 | MultiSelectWindow msw = new MultiSelectWindow("Haloo", "Eka", "Toka"); |
---|
160 | Add(msw); |
---|
161 | msw.AddItemHandler(0, delegate { Valikko(null); }); |
---|
162 | msw.AddItemHandler(1, ParhaatPisteet); |
---|
163 | } |
---|
164 | |
---|
165 | void ParhaatPisteet() |
---|
166 | { |
---|
167 | topLista.Show(); |
---|
168 | topLista.HighScoreWindow.Closed += Valikko; |
---|
169 | } |
---|
170 | |
---|
171 | void luoLaskuri() |
---|
172 | { |
---|
173 | |
---|
174 | } |
---|
175 | } |
---|