- Timestamp:
- 2013-06-28 12:08:09 (10 years ago)
- Location:
- 2013/26/PietuR
- Files:
-
- 16 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
2013/26/PietuR/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs
r4226 r4304 36 36 { 37 37 int i = -5; 38 while(i < 1 5) {38 while(i < 1) { 39 39 Luopallo(i); 40 40 i++; … … 164 164 pelaajan2Pisteet.Value += 1; 165 165 } 166 Luopallo(0); 166 167 } 167 168 } -
2013/26/PietuR/Weaporage/Weaporage/Weaporage/Weaporage.cs
r4226 r4304 9 9 public class Weaporage : PhysicsGame 10 10 { 11 12 Pelaaja pelaaja1; 13 Pelaaja pelaaja2; 14 Pelaaja pelaaja3; 15 Pelaaja pelaaja4; 16 17 Image Miekankuva = LoadImage("Miekka"); 18 Image Nuijankuva = LoadImage("Nuija"); 19 Image Tikarinkuva = LoadImage("Tikari"); 20 Image Vasarankuva = LoadImage("Vasara"); 21 11 22 public override void Begin() 12 23 { 24 Level.Width *= 2; 25 Level.Height *= 1.8; 26 LisaaAseetPeliin(); 27 28 Level.Background.CreateGradient(Color.OrangeRed, Color.Gold); 29 30 31 pelaaja1 = new Pelaaja(5); 32 pelaaja2 = new Pelaaja(5); 33 pelaaja3 = new Pelaaja(5); 34 pelaaja4 = new Pelaaja(5); 35 IsMouseVisible = true; 36 37 PhysicsObject pallo = new PhysicsObject(20, 20, Shape.Circle); 38 Add(pallo); 39 40 41 42 13 43 Level.CreateBorders(); 14 15 Luopelaaja(); 16 17 Gravity = new Vector(0, -1000); 44 Camera.ZoomToLevel(); 45 Gravity = new Vector(0, -100); 46 47 Luopelaaja(pelaaja1, 2, new Vector(200, 200), Color.Red); 48 Luopelaaja(pelaaja2, 12, new Vector(200, -200), Color.Pink); 49 Luopelaaja(pelaaja3, 20, new Vector(-200, -200), Color.SpringGreen); 50 Luopelaaja(pelaaja4, 30, new Vector(-200, 200), Color.Blue); 51 52 Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(-100, 0)); 53 Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(100, 0)); 54 Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(0, -100)); 55 Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja1, new Vector(0, 100)); 56 Keyboard.Listen(Key.RightControl, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja1); 57 Keyboard.Listen(Key.RightAlt, ButtonState.Pressed, IrrotaAseet, null, pelaaja1); 58 59 Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(-100, 0)); 60 Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(100, 0)); 61 Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(0, -100)); 62 Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja2, new Vector(0, 100)); 63 Keyboard.Listen(Key.Q, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja2); 64 Keyboard.Listen(Key.E, ButtonState.Pressed, IrrotaAseet, null, pelaaja2); 65 66 Keyboard.Listen(Key.J, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(-100, 0)); 67 Keyboard.Listen(Key.L, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(100, 0)); 68 Keyboard.Listen(Key.K, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(0, -100)); 69 Keyboard.Listen(Key.I, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja3, new Vector(0, 100)); 70 Keyboard.Listen(Key.U, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja3); 71 Keyboard.Listen(Key.O, ButtonState.Pressed, IrrotaAseet, null, pelaaja3); 72 73 Keyboard.Listen(Key.NumPad4, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(-100, 0)); 74 Keyboard.Listen(Key.NumPad6, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(100, 0)); 75 Keyboard.Listen(Key.NumPad5, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(0, -100)); 76 Keyboard.Listen(Key.NumPad8, ButtonState.Down, LiikutaPelaajaa, "liikuta", pelaaja4, new Vector(0, 100)); 77 Keyboard.Listen(Key.Divide, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja4); 78 Keyboard.Listen(Key.Multiply, ButtonState.Pressed, IrrotaAseet, null, pelaaja4); 79 80 ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja1); 81 ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja2); 82 ControllerThree.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja3); 83 ControllerFour.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaTatilla, null, pelaaja4); 84 85 86 ControllerOne.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja1); 87 ControllerOne.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja1); 88 ControllerTwo.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja2); 89 ControllerTwo.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja2); 90 ControllerThree.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja3); 91 ControllerThree.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja3); 92 ControllerFour.Listen(Button.A, ButtonState.Pressed, ValmiinaOttamaanAseen, null, pelaaja4); 93 ControllerFour.Listen(Button.A, ButtonState.Released, IrrotaAseet, null, pelaaja4); 94 18 95 PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 19 96 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 20 97 } 21 98 22 void Luopelaaja() 99 void IrrotaAseet(Pelaaja pelaaja) 100 { 101 if (pelaaja.oikeaKasi != null) 102 { 103 pelaaja.oikeaKasi.Destroy(); 104 pelaaja.oikeaKasi = null; 105 } 106 if (pelaaja.vasenKasi != null) 107 { 108 pelaaja.vasenKasi.Destroy(); 109 pelaaja.vasenKasi = null; 110 } 111 pelaaja.OtetaankoKiinni = false; 112 } 113 114 115 void ValmiinaOttamaanAseen(Pelaaja pelaaja) 116 { 117 if (pelaaja.OtetaankoKiinni) 118 pelaaja.OtetaankoKiinni = false; 119 else pelaaja.OtetaankoKiinni = true; 120 } 121 122 123 void LisaaAseetPeliin() 124 { 125 PhysicsObject ase = new PhysicsObject(50, 100); 126 ase.Position = new Vector(0, 0); 127 ase.Image = Vasarankuva; 128 ase.Shape = Shape.FromImage(Vasarankuva); 129 ase.Tag = "ase"; 130 Add(ase); 131 132 PhysicsObject ase2 = new PhysicsObject(30, 70); 133 ase2.Position = new Vector(300, 0); 134 ase2.Image = Tikarinkuva; 135 ase2.Shape = Shape.FromImage(Tikarinkuva); 136 ase2.Tag = "ase"; 137 Add(ase2); 138 139 PhysicsObject ase3 = new PhysicsObject(50, 150); 140 ase3.Position = new Vector(-400, 0); 141 ase3.Image = Miekankuva; 142 ase3.CollisionIgnoreGroup = 20000; 143 ase3.Shape = Shape.FromImage(Miekankuva); 144 ase3.Tag = "ase"; 145 AddCollisionHandler(ase3, "irtoava", CollisionHandler.DestroyTarget); 146 Add(ase3); 147 148 /* 149 150 PhysicsObject miekanTera = new PhysicsObject(30, 200); 151 miekanTera.Position = ase3.Position + new Vector(0, 115); 152 miekanTera.CollisionIgnoreGroup = ase3.CollisionIgnoreGroup; 153 miekanTera.Shape = Shape.Diamond; 154 miekanTera.Image = MiekanteraKuva; 155 miekanTera.Tag = "terä"; 156 157 PhysicsStructure miekka = new PhysicsStructure(); 158 miekka.Softness = 0; 159 miekka.Add(ase3); 160 miekka.Add(miekanTera); 161 Add(miekka); 162 163 PhysicsObject NuijanTera = new PhysicsObject(50, 50); 164 NuijanTera.Position = ase2.Position + new Vector(0, 115); 165 NuijanTera.CollisionIgnoreGroup = ase3.CollisionIgnoreGroup; 166 NuijanTera.Shape = Shape.Diamond; 167 NuijanTera.Image = NuijanteraKuva; 168 NuijanTera.Tag = "terä"; 169 Add(ase2); 170 171 */ 172 173 PhysicsObject ase4 = new PhysicsObject(50, 120); 174 ase4.Position = new Vector(-150, 0); 175 ase4.Image = Nuijankuva; 176 ase4.Shape = Shape.FromImage(Nuijankuva); 177 ase4.Tag = "ase"; 178 Add(ase4); 179 180 181 } 182 183 void LiikutaTatilla(AnalogState tatti, Pelaaja pelaaja) 184 { 185 LiikutaPelaajaa(pelaaja, tatti.StateVector * 100); 186 } 187 188 void LiikutaPelaajaa(Pelaaja pelaaja, Vector suunta) 189 { 190 if (pelaaja.RuumiinOsat.Count == 0) return; 191 pelaaja.RuumiinOsat[0].Hit(suunta); 192 193 } 194 195 196 void Luopelaaja(Pelaaja pelaaja,int collisionIgnoreGroup, Vector pos, Color vari) 23 197 { 24 198 const double perusKoko = 30; 25 26 PhysicsObject paa = LuoRuumiinOsa(perusKoko, perusKoko, Shape.Circle, new Vector(0, -150)); 27 PhysicsObject keskiVartalo = LuoRuumiinOsa(perusKoko, perusKoko*3, Shape.Rectangle, paa.Position + new Vector(0,-2*perusKoko)); 28 PhysicsObject vasenKasi = LuoRuumiinOsa(perusKoko*2, perusKoko/2, Shape.Ellipse, keskiVartalo.Position + new Vector(-35, 30)); 29 PhysicsObject vasenKasi2 = LuoRuumiinOsa(perusKoko*2, perusKoko/2, Shape.Ellipse, keskiVartalo.Position + new Vector(-95, 30)); 30 PhysicsObject oikeaKasi = LuoRuumiinOsa(perusKoko*2, perusKoko/2, Shape.Ellipse, keskiVartalo.Position + new Vector(35, 30)); 31 PhysicsObject oikeaKasi2 = LuoRuumiinOsa(perusKoko*2, perusKoko/2, Shape.Ellipse, keskiVartalo.Position + new Vector(95, 30)); 32 PhysicsObject vasenJalka = LuoRuumiinOsa(perusKoko/2 perusKoko*2, Shape.Ellipse, keskiVartalo.Position + new Vector(60, 60)); 199 //int collisionIgnoreGroup = 2; 200 201 PhysicsObject paa = LuoRuumiinOsa(perusKoko, perusKoko, Shape.Circle,collisionIgnoreGroup, pos, vari); 202 PhysicsObject keskiVartalo = LuoRuumiinOsa(perusKoko, perusKoko * 3, Shape.Ellipse, collisionIgnoreGroup, paa.Position + new Vector(0, -2 * perusKoko), vari); 203 PhysicsObject vasenKasi = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-35, 40), vari); 204 PhysicsObject vasenKasi2 = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-85, 40), vari); 205 PhysicsObject oikeaKasi = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(35, 40), vari); 206 PhysicsObject oikeaKasi2 = LuoRuumiinOsa(perusKoko * 2, perusKoko / 2, Shape.Ellipse, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(85, 40), vari); 207 PhysicsObject vasenJalka = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(-10, -70), vari); 208 PhysicsObject oikeaJalka = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(10, -70), vari); 209 PhysicsObject vasenJalka2 = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(-10, -120), vari); 210 vasenJalka2.Tag = "irtoava"; 211 PhysicsObject oikeaJalka2 = LuoRuumiinOsa(perusKoko / 2, perusKoko * 2, Shape.Ellipse, collisionIgnoreGroup + 2, keskiVartalo.Position + new Vector(10, -120), vari); 212 PhysicsObject vasenKammen = LuoRuumiinOsa(perusKoko / 2, perusKoko / 2, Shape.Circle, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(-115, 40), vari); 213 vasenKammen.Tag = "vasenKammen"; 214 PhysicsObject oikeaKammen = LuoRuumiinOsa(perusKoko / 2, perusKoko / 2, Shape.Circle, collisionIgnoreGroup + 1, keskiVartalo.Position + new Vector(115, 40), vari); 215 oikeaKammen.Tag = "oikeaKammen"; 216 217 AddCollisionHandler(keskiVartalo, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) { 218 AseOsuuRuumiinOsaan(kasi, ase, pelaaja); 219 }); 220 221 AddCollisionHandler(paa, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) 222 { 223 AseOsuuRuumiinOsaan(kasi, ase, pelaaja); 224 }); 225 226 pelaaja.Elamat.LowerLimit += delegate { 227 Explosion rajahdys = new Explosion(200); 228 rajahdys.Position = paa.Position; 229 Add(rajahdys); 230 paa.Destroy(); 231 }; 232 233 AddCollisionHandler(vasenKammen, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) { KeraaAseVasempaanKateen(kasi, ase, pelaaja); }); 234 AddCollisionHandler(oikeaKammen, "ase", delegate(PhysicsObject kasi, PhysicsObject ase) { KeraaAseOikeaanKateen(kasi, ase, pelaaja); }); 235 pelaaja.RuumiinOsat.Add(paa); 236 237 pelaaja.RuumiinOsat.Add(vasenKammen); 238 pelaaja.RuumiinOsat.Add(oikeaKammen); 239 240 foreach (var item in pelaaja.RuumiinOsat) 241 { 242 Add(item); 243 } 244 33 245 Add(paa); 34 246 Add(keskiVartalo); … … 38 250 Add(oikeaKasi2); 39 251 Add(vasenJalka); 252 Add(oikeaJalka); 253 Add(vasenJalka2); 254 Add(oikeaJalka2); 255 Add(vasenKammen); 256 Add(oikeaKammen); 40 257 LiitaYhteen(paa, keskiVartalo, new Vector(0, -5)); 41 258 LiitaYhteen(keskiVartalo, vasenKasi, new Vector(-10, 30)); 42 LiitaYhteen(vasenKasi, vasenKasi2, new Vector(-2 0, 0));259 LiitaYhteen(vasenKasi, vasenKasi2, new Vector(-25, 0)); 43 260 LiitaYhteen(keskiVartalo, oikeaKasi, new Vector(10, 30)); 44 LiitaYhteen(oikeaKasi, oikeaKasi2, new Vector(20, 0)); 45 46 47 48 } 49 50 void LiitaYhteen(PhysicsObject ens, PhysicsObject toin, Vector sidosKohta) 261 LiitaYhteen(oikeaKasi, oikeaKasi2, new Vector(25, 0)); 262 LiitaYhteen(vasenJalka, keskiVartalo, new Vector(0, 30)); 263 LiitaYhteen(oikeaJalka, keskiVartalo, new Vector(0, 30)); 264 LiitaYhteen(vasenJalka2, vasenJalka, new Vector(0, 25)); 265 LiitaYhteen(oikeaJalka2, oikeaJalka, new Vector(0, 25)); 266 LiitaYhteen(vasenKasi2, vasenKammen, new Vector(-25, 0)); 267 LiitaYhteen(oikeaKasi2, oikeaKammen, new Vector(25, 0)); 268 } 269 270 void AseOsuuRuumiinOsaan(PhysicsObject ruumiinOsa, PhysicsObject ase, Pelaaja pelaaja) 271 { 272 273 if (pelaaja.oikeaKasi != null && ase.Equals(pelaaja.oikeaKasi.Object2)) return; 274 if (pelaaja.vasenKasi != null && ase.Equals(pelaaja.vasenKasi.Object2)) return; 275 pelaaja.Elamat.Value--; 276 } 277 278 279 void KeraaAseVasempaanKateen(PhysicsObject kasi, PhysicsObject ase, Pelaaja pelaaja) 280 { 281 if (pelaaja.vasenKasi == null && pelaaja.OtetaankoKiinni) 282 { 283 pelaaja.vasenKasi = LiitaYhteen(kasi, ase, Vector.Zero); 284 } 285 //ase.CollisionIgnoreGroup = kasi.CollisionIgnoreGroup; 286 AseKeratty(pelaaja); 287 } 288 289 void KeraaAseOikeaanKateen(PhysicsObject kasi, PhysicsObject ase, Pelaaja pelaaja) 290 { 291 if (pelaaja.oikeaKasi == null && pelaaja.OtetaankoKiinni) 292 { 293 pelaaja.oikeaKasi = LiitaYhteen(kasi, ase, Vector.Zero); 294 } 295 //ase.CollisionIgnoreGroup = kasi.CollisionIgnoreGroup; 296 AseKeratty(pelaaja); 297 298 } 299 300 void AseKeratty(Pelaaja pelaaja) 301 { 302 pelaaja.OtetaankoKiinni = false; 303 } 304 305 306 307 AxleJoint LiitaYhteen(PhysicsObject ens, PhysicsObject toin, Vector sidosKohta) 51 308 { 52 309 AxleJoint liitos = new AxleJoint(ens, toin, ens.Position + sidosKohta); 53 liitos.Softness = 0.00000000 05;310 liitos.Softness = 0.000000005; 54 311 Add(liitos); 55 } 56 57 PhysicsObject LuoRuumiinOsa(double leveys, double korkeus, Shape muoto, Vector pos) 312 return liitos; 313 } 314 315 PhysicsObject LuoRuumiinOsa(double leveys, double korkeus, Shape muoto, int collisionIgnoreGroup, Vector pos, Color vari) 58 316 { 59 317 PhysicsObject ruumiinOsa = new PhysicsObject(leveys, korkeus, muoto); 60 318 ruumiinOsa.Position = pos; 61 ruumiinOsa.Color = Color.Black;62 ruumiinOsa.CollisionIgnoreGroup = 1;319 ruumiinOsa.Color = vari; 320 ruumiinOsa.CollisionIgnoreGroup = collisionIgnoreGroup; 63 321 64 322 return ruumiinOsa; … … 66 324 67 325 } 326 327 public class Pelaaja 328 { 329 List<PhysicsObject> ruumiinOsat = new List<PhysicsObject>(); 330 public List<PhysicsObject> RuumiinOsat { get { return ruumiinOsat; } } 331 IntMeter elamat; 332 public IntMeter Elamat { get { return elamat; } } 333 bool otetaanko = false; 334 public AxleJoint vasenKasi; 335 public AxleJoint oikeaKasi; 336 337 public bool OtetaankoKiinni 338 { 339 get 340 { 341 return otetaanko; 342 } 343 set 344 { 345 otetaanko = value; 346 foreach (var item in ruumiinOsat) 347 { 348 if ("oikeaKammen".Equals(item.Tag)) 349 { 350 if (oikeaKasi != null) return; 351 if (otetaanko) item.Color = Color.Red; 352 else item.Color = Color.Black; 353 } 354 if ("vasenKammen".Equals(item.Tag)) 355 { 356 if (vasenKasi != null) return; 357 if (otetaanko) item.Color = Color.Red; 358 else item.Color = Color.Black; 359 } 360 } 361 } 362 } 363 364 public Pelaaja(int defaultHp) 365 { 366 elamat = new IntMeter(defaultHp, 0, defaultHp); 367 } 368 } -
2013/26/PietuR/Weaporage/Weaporage/WeaporageContent/WeaporageContent.contentproj
r4226 r4304 45 45 <Reference Include="AnimationExtension" /> 46 46 </ItemGroup> 47 <ItemGroup> 48 <Compile Include="Miekka.png"> 49 <Name>Miekka</Name> 50 <Importer>TextureImporter</Importer> 51 <Processor>TextureProcessor</Processor> 52 </Compile> 53 <Compile Include="Nuija.png"> 54 <Name>Nuija</Name> 55 <Importer>TextureImporter</Importer> 56 <Processor>TextureProcessor</Processor> 57 </Compile> 58 <Compile Include="Tikari.png"> 59 <Name>Tikari</Name> 60 <Importer>TextureImporter</Importer> 61 <Processor>TextureProcessor</Processor> 62 </Compile> 63 <Compile Include="Vasara.png"> 64 <Name>Vasara</Name> 65 <Importer>TextureImporter</Importer> 66 <Processor>TextureProcessor</Processor> 67 </Compile> 68 </ItemGroup> 47 69 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 48 70 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Note: See TracChangeset
for help on using the changeset viewer.