1 | using System; |
---|
2 | using Jypeli; |
---|
3 | using Jypeli.ScreenObjects; |
---|
4 | using Jypeli.Widgets; |
---|
5 | using Jypeli.Assets; |
---|
6 | |
---|
7 | public class Peli : PhysicsGame |
---|
8 | { |
---|
9 | |
---|
10 | PlatformCharacter pelaaja1; |
---|
11 | PlatformCharacter pelaaja2; |
---|
12 | |
---|
13 | PhysicsObject vasenreuna; |
---|
14 | PhysicsObject oikeareuna; |
---|
15 | PhysicsObject alareuna; |
---|
16 | PhysicsObject yläreuna; |
---|
17 | |
---|
18 | const int Joukkueenkoko = 3; |
---|
19 | int Pelaajan1joukkue = Joukkueenkoko; |
---|
20 | int Pelaajan2joukkue = Joukkueenkoko; |
---|
21 | |
---|
22 | Boolean Pelaajan1JuoksuAskel; |
---|
23 | Boolean Pelaajan2JuoksuAskel; |
---|
24 | const double Juoksunopeus = 100;//20 |
---|
25 | const double Juoksunkiihtyvyys = 2.5; |
---|
26 | double Pelaajan1Juoksunopeus = Juoksunopeus; |
---|
27 | double Pelaajan2Juoksunopeus = Juoksunopeus; |
---|
28 | |
---|
29 | protected override void Begin() |
---|
30 | { |
---|
31 | Aloitapikkupeli(1); |
---|
32 | } |
---|
33 | |
---|
34 | void Aloitapikkupeli(int peliMuoto) |
---|
35 | { |
---|
36 | //Kuoleman juoksu |
---|
37 | if (peliMuoto == 1) |
---|
38 | { |
---|
39 | LuoKenttä(800,700); |
---|
40 | Camera.ZoomToLevel(); |
---|
41 | LuoElämät(); |
---|
42 | AddCollisionHandler(oikeareuna, JuoksuVoitto); |
---|
43 | pelaaja1 = LuoUkko(Level.Left + 30,Level.Bottom + 75,85, 75,"Tipu1"); |
---|
44 | pelaaja2 = LuoUkko(Level.Left+ 30,Level.Bottom + 200,85, 75,"Tipu2"); |
---|
45 | JuoksuOhjaimet(); |
---|
46 | } |
---|
47 | else if (peliMuoto == 2) |
---|
48 | { |
---|
49 | LuoKenttä(3000, 1000); |
---|
50 | LuoTausta(3000, Level.Bottom); |
---|
51 | pelaaja1 = LuoUkko(Level.Left + 30, Level.Bottom + 75, 85, 75, "Tipu1"); |
---|
52 | Gravity = new Vector(0, -1000); |
---|
53 | |
---|
54 | Camera.Follow(pelaaja1); |
---|
55 | LuoElämät(); |
---|
56 | JuoksuOhjaimet(); |
---|
57 | } |
---|
58 | |
---|
59 | } |
---|
60 | |
---|
61 | void LuoTausta(int w, double y) |
---|
62 | { |
---|
63 | for (int x = 1; x < w; x += 100) |
---|
64 | { |
---|
65 | LuoTaustaEsineitä(x, y, 50, 50, "Aita"); |
---|
66 | } |
---|
67 | } |
---|
68 | void LuoTaustaEsineitä(double x, double y, double w, double h, string nimi) |
---|
69 | { |
---|
70 | PhysicsObject ukko = new PhysicsObject(w,h,Shapes.Rectangle); |
---|
71 | ukko.Image = LoadImage(nimi); |
---|
72 | ukko.X = x; |
---|
73 | ukko.Y = y; |
---|
74 | Add(ukko); |
---|
75 | } |
---|
76 | |
---|
77 | void LuoKenttä(double width, double height) |
---|
78 | { |
---|
79 | Level.Width = width; |
---|
80 | Level.Height = height; |
---|
81 | |
---|
82 | vasenreuna = Level.CreateLeftBorder(); |
---|
83 | vasenreuna.IsVisible = false; |
---|
84 | |
---|
85 | oikeareuna = Level.CreateRightBorder(); |
---|
86 | oikeareuna.IsVisible = false; |
---|
87 | |
---|
88 | yläreuna = Level.CreateTopBorder(); |
---|
89 | yläreuna.IsVisible = false; |
---|
90 | |
---|
91 | alareuna = Level.CreateBottomBorder(); |
---|
92 | alareuna.Color = Color.Green; |
---|
93 | alareuna.IsVisible = true; |
---|
94 | |
---|
95 | } |
---|
96 | |
---|
97 | void JuoksuOhjaimet() |
---|
98 | { |
---|
99 | Keyboard.Listen(Key.A, ButtonState.Pressed, LuoJuoksu, "Pelaaja liikkuu", pelaaja1, false, false); |
---|
100 | Keyboard.Listen(Key.D, ButtonState.Pressed, LuoJuoksu, "Pelaaja liikkuu", pelaaja1, false, true); |
---|
101 | |
---|
102 | Keyboard.Listen(Key.Left, ButtonState.Pressed, LuoJuoksu, "Pelaaja2 liikkuu", pelaaja2, true, false); |
---|
103 | Keyboard.Listen(Key.Right, ButtonState.Pressed, LuoJuoksu, "Pelaaja2 liikkuu", pelaaja2, true, true); |
---|
104 | } |
---|
105 | |
---|
106 | // ukko false = p1 true = p2 false = n1 true = n2 |
---|
107 | void LuoJuoksu(PlatformCharacter ukko, Boolean pelaaja, Boolean näppäin) |
---|
108 | { |
---|
109 | //Pelaaja 1 |
---|
110 | if (pelaaja == false) |
---|
111 | { |
---|
112 | if (näppäin == Pelaajan1JuoksuAskel) |
---|
113 | { |
---|
114 | Pelaajan1Juoksunopeus += Juoksunkiihtyvyys; |
---|
115 | Liikuta(ukko,Pelaajan1Juoksunopeus); |
---|
116 | if (Pelaajan1JuoksuAskel == true) |
---|
117 | { |
---|
118 | Pelaajan1JuoksuAskel = false; |
---|
119 | } |
---|
120 | else |
---|
121 | { |
---|
122 | Pelaajan1JuoksuAskel = true; |
---|
123 | } |
---|
124 | |
---|
125 | } |
---|
126 | if (Pelaajan1Juoksunopeus >= Juoksunopeus) |
---|
127 | { |
---|
128 | Pelaajan1Juoksunopeus -= 1; |
---|
129 | } |
---|
130 | } |
---|
131 | else |
---|
132 | { |
---|
133 | if (näppäin == Pelaajan2JuoksuAskel) |
---|
134 | { |
---|
135 | Pelaajan2Juoksunopeus += Juoksunkiihtyvyys; |
---|
136 | Liikuta(ukko, Pelaajan2Juoksunopeus); |
---|
137 | if (Pelaajan2JuoksuAskel == true) |
---|
138 | { |
---|
139 | Pelaajan2JuoksuAskel = false; |
---|
140 | } |
---|
141 | else |
---|
142 | { |
---|
143 | Pelaajan2JuoksuAskel = true; |
---|
144 | } |
---|
145 | } |
---|
146 | if (Pelaajan2Juoksunopeus >= Juoksunopeus) |
---|
147 | { |
---|
148 | Pelaajan2Juoksunopeus -= 1; |
---|
149 | } |
---|
150 | } |
---|
151 | } |
---|
152 | |
---|
153 | void JuoksuVoitto(PhysicsObject maali, PhysicsObject kohde) |
---|
154 | { |
---|
155 | if(kohde == pelaaja1) |
---|
156 | { |
---|
157 | ClearAll(); |
---|
158 | Pelaajan2joukkue--; |
---|
159 | Aloitapikkupeli(2); |
---|
160 | } |
---|
161 | else if (kohde == pelaaja2) |
---|
162 | { |
---|
163 | ClearAll(); |
---|
164 | Pelaajan2joukkue--; |
---|
165 | Aloitapikkupeli(2); |
---|
166 | } |
---|
167 | } |
---|
168 | |
---|
169 | void LuoElämät() |
---|
170 | { |
---|
171 | for(int i = 1; i < Joukkueenkoko+1; i++) |
---|
172 | { |
---|
173 | if (i <= Pelaajan1joukkue) |
---|
174 | { |
---|
175 | LuoUkkokuva(Screen.Left + i * 50, Screen.Top - 25, 40, 35, "Tipu1"); |
---|
176 | } |
---|
177 | else |
---|
178 | { |
---|
179 | LuoUkkokuva(Screen.Left + i * 50, Screen.Top - 25, 40, 35, "Kuollut1"); |
---|
180 | } |
---|
181 | if (i <= Pelaajan2joukkue) |
---|
182 | { |
---|
183 | LuoUkkokuva(Screen.Right - i * 50, Screen.Top - 25, 40, 35, "Tipu2"); |
---|
184 | } |
---|
185 | else |
---|
186 | { |
---|
187 | LuoUkkokuva(Screen.Right - i * 50, Screen.Top - 25, 40, 35, "Kuollut2"); |
---|
188 | } |
---|
189 | } |
---|
190 | } |
---|
191 | |
---|
192 | void LuoUkkokuva(double x, double y, double w, double h, string nimi) |
---|
193 | { |
---|
194 | ImageDisplay ukko = new ImageDisplay(); |
---|
195 | ukko.Image = LoadImage(nimi); |
---|
196 | ukko.AutoSize = false; |
---|
197 | ukko.Width = w; |
---|
198 | ukko.Height = h; |
---|
199 | ukko.X = x; |
---|
200 | ukko.Y = y; |
---|
201 | Add(ukko); |
---|
202 | |
---|
203 | } |
---|
204 | |
---|
205 | void Liikuta(PlatformCharacter ukko, double nopeus) |
---|
206 | { |
---|
207 | ukko.Walk(nopeus); |
---|
208 | } |
---|
209 | |
---|
210 | PlatformCharacter LuoUkko(double x, double y, double kokoX, double kokoY, string nimi) |
---|
211 | { |
---|
212 | PlatformCharacter ukko = new PlatformCharacter(kokoX, kokoY, Shapes.Circle); |
---|
213 | ukko.Mass = 4.0; |
---|
214 | ukko.X = x; |
---|
215 | ukko.Y = y; |
---|
216 | ukko.Image = LoadImage(nimi); |
---|
217 | Add(ukko); |
---|
218 | return ukko; |
---|
219 | } |
---|
220 | } |
---|