Changeset 2872 for 2012/23/SamuH
- Timestamp:
- 2012-06-08 11:05:01 (11 years ago)
- Location:
- 2012/23/SamuH/BOMBDUDE/BOMBDUDE
- Files:
-
- 8 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
2012/23/SamuH/BOMBDUDE/BOMBDUDE/BOMBDUDE/BOMBDUDE.cs
r2800 r2872 9 9 public class BOMBDUDE : PhysicsGame 10 10 { 11 const double RUUDUN_SIVUN_PITUUS = 100.0; 12 int ruutujaVaakaan; 13 int ruutujaPystyyn; 14 11 15 Image BombDudePic = LoadImage("BombDude"); 12 Image Kivi = LoadImage("Kivi"); 13 Image Laudat = LoadImage("Laudat"); 14 Image Uloskäynti = LoadImage("Uloskäynti"); 15 Image Pommi = LoadImage("Pommi"); 16 Image Timantti = LoadImage("Timantti"); 17 18 double liikkumisnopeus = 280; 16 Image KiviPic = LoadImage("Kivi"); 17 Image LaudatPic = LoadImage("Laudat"); 18 Image UloskayntiPic = LoadImage("Uloskäynti"); 19 Image PommiPic = LoadImage("Pommi"); 20 Image TimanttiPic = LoadImage("Timantti"); 21 Image MaaliPic = LoadImage("Maali2"); 19 22 23 double liikkumisnopeus = 1800; 24 20 25 PhysicsObject BombDude; 26 IntMeter timanttiLaskuri; 27 IntMeter pommiLaskuri; 28 ExplosionSystem es; 29 DoubleMeter alaspainLaskuri; 30 Timer aikaLaskuri; 21 31 22 32 public override void Begin() 23 33 { 24 LuoKentta(); 34 MultiSelectWindow valikko = new MultiSelectWindow("BOMBDUDE(demo)", "Yksinpeli", "Parhaat pisteet", "Poistu"); 35 valikko.ItemSelected += PainettiinValikonNappia; 36 valikko.Color = Color.Azure; 37 d Add(valikko); 38 39 } 40 41 void AloitaPeli() 42 { 43 timanttiLaskuri = LuoLaskuri(0, 0, 32); 44 pommiLaskuri = LuoLaskuri(3, 0, 3); 45 pommiLaskuri.LowerLimit += PommitLoppui; 46 LuoNaytot(); 47 LuoEfektit(); 48 LuoKentta("BOMBDUDE mappi1"); 25 49 AsetaNappaimet(); 26 50 LuoAikaLaskuri(); 51 } 52 53 54 void PommitLoppui(int laskurinarvo) 55 { 56 MessageDisplay.Add("Pommit loppui"); 57 Keyboard.Disable(Key.Space); 58 Timer.SingleShot(3.0, delegate 59 { 60 pommiLaskuri.Reset(); 61 Keyboard.Enable(Key.Space); 62 }); 27 63 } 28 64 … … 38 74 Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liiku oikealle.", BombDude, new Vector(1, 0)); 39 75 Keyboard.Listen(Key.D, ButtonState.Released, Liikuta, null, BombDude, Vector.Zero); 76 Keyboard.Listen(Key.Space, ButtonState.Pressed, TiputaPommi, "Tiputa pommi", BombDude); 77 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Poistu"); 78 } 79 80 IntMeter LuoLaskuri(int def, int min, int max) 81 { 82 IntMeter laskuri = new IntMeter(def, min, max); 83 return laskuri; 84 } 85 86 Label LuoNaytto(double x, double y, IntMeter sidottavaMittari) 87 { 88 Label naytto = new Label(); 89 naytto.BindTo(sidottavaMittari); 90 naytto.X = x; 91 naytto.Y = y; 92 naytto.TextColor = Color.Aqua; 93 naytto.BorderColor = Color.Gray; 94 naytto.Color = Color.Gray; 95 Add(naytto); 96 return naytto; 97 } 98 99 void LuoNaytot() 100 { 101 Label timanttiNaytto = LuoNaytto(-490, -340, timanttiLaskuri); 102 LuoSelitystekstiMittarinaytolle(timanttiNaytto, "Timantteja: "); 103 Label pommiNaytto = LuoNaytto(-490, -380, pommiLaskuri); 104 LuoSelitystekstiMittarinaytolle(pommiNaytto, "Pommeja: "); 105 } 106 107 void LuoEfektit() 108 { 109 es = new ExplosionSystem(LoadImage("Räjähdys"), 1000); 110 Add(es); 111 } 112 113 Label LuoSelitystekstiMittarinaytolle(Label mittarinaytto, String teksti) 114 { 115 Label selitys = new Label(teksti); 116 selitys.Right = mittarinaytto.Left - 10; 117 selitys.Y = mittarinaytto.Y; 118 selitys.TextColor = Color.Aqua; 119 selitys.BorderColor = Color.Gray; 120 selitys.Color = Color.Gray; 121 Add(selitys); 122 return selitys; 123 } 124 125 void LuoKentta(String kentta) 126 { 127 TileMap ruudut = TileMap.FromLevelAsset(kentta); 128 ruudut.SetTileMethod('k', LuoKivi); 129 ruudut.SetTileMethod('l', LuoLaudat); 130 ruudut.SetTileMethod('p', LuoPelaaja); 131 ruudut.SetTileMethod('t', LuoTimantti); 132 ruudut.SetTileMethod('u', LuoUloskaynti); 133 ruudut.SetTileMethod('m', LuoMaali); 134 ruudut.Execute(RUUDUN_SIVUN_PITUUS, RUUDUN_SIVUN_PITUUS); 135 Level.CreateBorders(); 136 ruutujaVaakaan = ruudut.GetLength(1); 137 ruutujaPystyyn = ruudut.GetLength(0); 138 139 Level.BackgroundColor = Color.Gray; 140 141 Camera.ZoomToLevel(); 142 } 143 144 void LuoPelaaja(Vector paikka, double leveys, double korkeus) 145 { 146 BombDude = new PhysicsObject(70, 51); 147 AddCollisionHandler(BombDude, "Timantti", CollisionHandler.AddMeterValue(timanttiLaskuri, 1)); 148 AddCollisionHandler(BombDude, "Uloskaynti", PelaajaUloskaynnissa); 149 AddCollisionHandler(BombDude, "Timantti", delegate(PhysicsObject p, PhysicsObject kohde) { MessageDisplay.Add("Sait timantin!"); }); 150 AddCollisionHandler(BombDude, "Timantti", CollisionHandler.DestroyTarget); 151 AddCollisionHandler(BombDude, "Maali", CollisionHandler.DestroyObject); 152 Add(BombDude); 153 BombDude.CanRotate = false; 154 BombDude.Position = paikka; 155 BombDude.Image = BombDudePic; 156 BombDude.Tag = "BombDude"; 157 BombDude.LinearDamping = 0.2; 158 BombDude.Mass = 1; 159 } 160 161 void PelaajaUloskaynnissa(PhysicsObject pelaaja, PhysicsObject uloskaynti) 162 { 163 SeuraavaKentta("BOMBDUDE mappi2"); 164 } 165 166 void SeuraavaKentta(String kartta) 167 { 168 pommiLaskuri.Reset(); 169 ClearGameObjects(); 170 ClearControls(); 171 LuoNaytot(); 172 LuoEfektit(); 173 LuoKentta(kartta); 174 AsetaNappaimet(); 175 LuoAikaLaskuri(); 176 } 177 178 void LuoKivi(Vector paikka, double leveys, double korkeus) 179 { 180 PhysicsObject Kivi = PhysicsObject.CreateStaticObject(leveys, korkeus); 181 Kivi.Position = paikka; 182 Kivi.Image = KiviPic; 183 Add(Kivi); 184 } 185 186 void LuoLaudat(Vector paikka, double leveys, double korkeus) 187 { 188 PhysicsObject laudat = PhysicsObject.CreateStaticObject(leveys, korkeus); 189 laudat.Position = paikka; 190 laudat.Tag = "laudat"; 191 laudat.Image = LaudatPic; 192 Add(laudat); 193 } 194 195 void LuoMaali(Vector paikka, double leveys, double korkeus) 196 { 197 PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus); 198 Maali.Position = paikka; 199 Maali.Tag = "Maali"; 200 Maali.Image = MaaliPic; 201 Add(Maali); 202 } 203 204 void LuoTimantti(Vector paikka, double leveys, double korkeus) 205 { 206 PhysicsObject Timantti = new PhysicsObject(leveys, korkeus); 207 Timantti.Position = paikka; 208 Timantti.Image = TimanttiPic; 209 Timantti.Tag = "Timantti"; 210 Add(Timantti); 211 } 212 213 void LuoUloskaynti(Vector paikka, double leveys, double korkeus) 214 { 215 PhysicsObject Uloskaynti = PhysicsObject.CreateStaticObject(leveys, korkeus); 216 Uloskaynti.Position = paikka; 217 Uloskaynti.Image = UloskayntiPic; 218 Add(Uloskaynti); 219 Uloskaynti.Tag = "Uloskaynti"; 220 } 221 222 223 224 void TiputaPommi(PhysicsObject BombDude) 225 { 226 GameObject pommi = new GameObject(RUUDUN_SIVUN_PITUUS, RUUDUN_SIVUN_PITUUS); 227 Vector paikka = RuudunKeskipiste(BombDude); 228 pommi.Position = paikka; 229 pommi.Image = PommiPic; 230 Add(pommi); 231 pommiLaskuri.Value--; 232 233 Timer.SingleShot(2.5, delegate 234 { 235 Explosion rajahdys = new Explosion(30); 236 rajahdys.IsVisible = false; 237 Add(rajahdys); 238 es.MinScale = 40; 239 es.MaxScale = 120; 240 es.MinVelocity = 50; 241 es.MaxVelocity = 80; 242 es.MinLifetime = 0.5; 243 es.MaxLifetime = 1.5; 244 es.AddEffect(paikka, 50); 245 rajahdys.Position = pommi.Position; 246 rajahdys.ShockwaveReachesObject += RajahdysOsui; 247 pommi.Destroy(); 248 }); 249 } 250 251 void RajahdysOsui(IPhysicsObject mihinOsui, Vector suunta) 252 { 253 if (mihinOsui.Tag.ToString() == "laudat") 254 { 255 mihinOsui.Destroy(); 256 } 257 } 258 259 260 Vector RuudunKeskipiste(PhysicsObject olio) 261 { 262 double pelaajanEtaisyysVasemmastaReunasta = Math.Abs(olio.X - Level.Left); 263 int moneskoRuutuVasemmalta = (int)(pelaajanEtaisyysVasemmastaReunasta / RUUDUN_SIVUN_PITUUS); 264 265 double pelaajanEtaisyysYlaReunasta = Math.Abs(Level.Top - olio.Y); 266 int moneskoRuutuYlhaalta = (int)(pelaajanEtaisyysYlaReunasta / RUUDUN_SIVUN_PITUUS); 267 268 double x = Level.Left + moneskoRuutuVasemmalta * RUUDUN_SIVUN_PITUUS + RUUDUN_SIVUN_PITUUS / 2; 269 double y = Level.Top - (moneskoRuutuYlhaalta * RUUDUN_SIVUN_PITUUS + RUUDUN_SIVUN_PITUUS / 2); 270 return new Vector(x, y); 271 } 272 273 void Liikuta(PhysicsObject BombDude, Vector suunta) 274 { 275 BombDude.Velocity = suunta * liikkumisnopeus; 276 } 277 278 void LuoAikaLaskuri() 279 { 280 alaspainLaskuri = new DoubleMeter(148, 0, 148); 281 alaspainLaskuri.LowerLimit += delegate { aikaLaskuri.Stop(); }; 282 alaspainLaskuri.LowerLimit += delegate { MessageDisplay.Add("Aika loppui..."); }; 283 alaspainLaskuri.LowerLimit += delegate { BombDude.Destroy(); }; 284 285 aikaLaskuri = new Timer(); 286 aikaLaskuri.Interval = 0.1; 287 aikaLaskuri.Timeout += LaskeAlaspain; 288 aikaLaskuri.Start(); 289 290 Label aikaNaytto = new Label(); 291 aikaNaytto.TextColor = Color.White; 292 aikaNaytto.DecimalPlaces = 1; 293 aikaNaytto.BindTo(alaspainLaskuri); 294 aikaNaytto.X = -600; 295 aikaNaytto.Y = -420; 296 Add(aikaNaytto); 297 } 298 299 void LaskeAlaspain() 300 { 301 alaspainLaskuri.Value -= 0.1; 302 303 //if (alaspainLaskuri.Value <= 0) 304 //{ 305 // MessageDisplay.Add("Aika loppui..."); 306 // aikaLaskuri.Stop(); 307 308 //} 309 } 310 311 void PainettiinValikonNappia(int valinta) 312 { 40 313 41 42 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 43 } 44 314 switch (valinta) 315 { 316 case 0: 317 // AloitaPeli(); 318 break; 319 case 1: 320 // ParhaatPisteet(); 321 break; 322 case 2: 323 Exit(); 324 break; 325 } 326 AloitaPeli(); 45 327 46 47 void Liikuta(PhysicsObject BombDude, Vector suunta) 48 { 49 BombDude.Velocity = suunta*liikkumisnopeus; 50 } 51 52 void LuoKentta() 53 { 54 BombDude = new PhysicsObject(60, 80); 55 Add(BombDude); 56 BombDude.Image = BombDudePic; 57 } 328 } 329 58 330 } 59 -
2012/23/SamuH/BOMBDUDE/BOMBDUDE/BOMBDUDEContent/BOMBDUDEContent.contentproj
r2800 r2872 86 86 </Compile> 87 87 </ItemGroup> 88 <ItemGroup> 89 <Compile Include="BOMBDUDE mappi1.txt"> 90 <Name>BOMBDUDE mappi1</Name> 91 <Importer>TextFileImporter</Importer> 92 <Processor>TextFileContentProcessor</Processor> 93 </Compile> 94 </ItemGroup> 95 <ItemGroup> 96 <Compile Include="Räjähdys.png"> 97 <Name>Räjähdys</Name> 98 <Importer>TextureImporter</Importer> 99 <Processor>TextureProcessor</Processor> 100 </Compile> 101 </ItemGroup> 102 <ItemGroup> 103 <Compile Include="Räjähdyksenloppu.png"> 104 <Name>Räjähdyksenloppu</Name> 105 <Importer>TextureImporter</Importer> 106 <Processor>TextureProcessor</Processor> 107 </Compile> 108 </ItemGroup> 109 <ItemGroup> 110 <Compile Include="Räjährys.png"> 111 <Name>Räjährys</Name> 112 <Importer>TextureImporter</Importer> 113 <Processor>TextureProcessor</Processor> 114 </Compile> 115 </ItemGroup> 116 <ItemGroup> 117 <Compile Include="BOMBDUDE mappi2.txt"> 118 <Name>BOMBDUDE mappi2</Name> 119 <Importer>TextFileImporter</Importer> 120 <Processor>TextFileContentProcessor</Processor> 121 </Compile> 122 </ItemGroup> 123 <ItemGroup> 124 <Compile Include="Maali.png"> 125 <Name>Maali</Name> 126 <Importer>TextureImporter</Importer> 127 <Processor>TextureProcessor</Processor> 128 </Compile> 129 </ItemGroup> 130 <ItemGroup> 131 <Compile Include="Maali2.png"> 132 <Name>Maali2</Name> 133 <Importer>TextureImporter</Importer> 134 <Processor>TextureProcessor</Processor> 135 </Compile> 136 </ItemGroup> 88 137 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 89 138 <!-- 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.