- Timestamp:
- 2014-06-12 14:52:53 (8 years ago)
- Location:
- 2014/24/OttoN
- Files:
-
- 20 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
2014/24/OttoN/Towerdefence/Towerdefence/Towerdefence/Towerdefence.cs
r4955 r4978 18 18 Image nappulaKuva = LoadImage("nappula"); 19 19 Image cannonballKuva = LoadImage("CannonBall"); 20 Image[] Tornikuvat = LoadImages("Cannontower", "Cannontower2", "CannonTower3", "CannonTower4", "CannonTower5", "CannonTower6","CannonTower7"); 21 SoundEffect Tykki = LoadSoundEffect("Cannon"); 20 22 Vector aloitusPaikka; 21 23 List<Vector> polkuList; 22 24 SortedDictionary<int, Vector> polku = new SortedDictionary<int, Vector>(); 23 25 DoubleMeter elamaLaskuri; 24 26 List<Vihu> vihulista; 27 25 28 bool ollaanRakentamassa = false; 26 29 IntMeter rahalaskuri = new IntMeter(800); … … 42 45 Keyboard.Listen(Key.Insert, ButtonState.Pressed, HuijausKoodi, null); 43 46 Keyboard.Listen(Key.NumLock, ButtonState.Pressed, HuijausKoodi2, null); 47 Keyboard.Listen(Key.NumLock, ButtonState.Pressed, HuijausKoodi22, null); 44 48 } 45 49 void LuoKentta() … … 47 51 //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. 48 52 ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentanPohja"); 53 vihulista = new List<Vihu>(); 49 54 50 55 //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. … … 53 58 ruudut.SetTileMethod(Color.Red, Luokivi); 54 59 ruudut.SetTileMethod(Color.Black, LuoPolku); 55 56 ruudut.SetTileMethod(new Color(0, 38,255), delegate(Vector paikka, double leveys, double korkeus)60 61 ruudut.SetTileMethod(new Color(0, 38, 255), delegate(Vector paikka, double leveys, double korkeus) 57 62 { LuoTorniNappula(paikka, leveys, korkeus, cannonTowerKuva, 80, 20); }); 58 63 … … 69 74 JarjestaVihuPolku(); 70 75 76 IntMeter i = new IntMeter(0, 0, int.MaxValue); 77 Label pisteNaytto = new Label(); 78 pisteNaytto.X = Screen.Left + 100; 79 pisteNaytto.Y = Screen.Top - 100; 80 pisteNaytto.TextColor = Color.Black; 81 pisteNaytto.Color = Color.DarkGreen; 82 pisteNaytto.BindTo(i); 83 Add(pisteNaytto); 84 pisteNaytto.Title = "Aalto"; 85 71 86 Timer ajastin = new Timer(); 72 ajastin.Interval = 0.3;73 ajastin.Timeout += delegate { LuoVihu(15, 15); };87 ajastin.Interval = 5; 88 ajastin.Timeout += delegate { Aalto(i.Value); i.Value++; ajastin.Interval = 25; }; 74 89 ajastin.Start(); 75 90 91 92 76 93 Level.Background.Color = Color.DarkGreen; 77 94 Camera.ZoomToLevel(); … … 90 107 }, null); 91 108 } 92 109 110 111 void HuijausKoodi22() 112 { 113 elamaLaskuri.Value += 10000; 114 elamaLaskuri.MaxValue = 10000; 115 116 } 117 93 118 void HiirenLiikutus(AnalogState tila) 94 119 { … … 109 134 if (ollaanRakentamassa) 110 135 { 111 AssaultRifle ase = new AssaultRifle(30, 30);136 AssaultRifle ase = new AssaultRifle(30, 30); 112 137 ase.IsVisible = false; 138 ase.FireRate = 2; 113 139 ase.ProjectileCollision = AmmusOsui; 114 140 seurattava.Add(ase); 141 (seurattava as Torni).ase = ase; 115 142 Timer ajastin = new Timer(); 116 ajastin.Interval = 0. 4;143 ajastin.Interval = 0.01; 117 144 ajastin.Timeout += delegate 118 145 { 119 List<GameObject> vihut = GetObjectsWithTag("vihu"); 146 //List<GameObject> vihut = GetObjectsWithTag("vihu"); 147 var vihut = vihulista; 120 148 if (vihut == null || vihut.Count == 0) return; 121 149 150 double etäisyys = Vector.Distance(ase.AbsolutePosition, vihut[0].Position); 151 if (etäisyys > 200 + 100 * (ase.Parent as Torni).taso) return; 152 153 122 154 //vihut.Sort((a, b) => Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1); 123 vihut.Sort((a, b) => JarjestaVihut(ase, a, b));155 vihut.Sort((a, b) => JarjestaVihut(ase, a, b)); 124 156 ase.Angle = (vihut[0].Position - ase.AbsolutePosition).Angle; 125 157 PhysicsObject ammus = ase.Shoot(); … … 128 160 { 129 161 ammus.Size *= 0.5; 130 ammus.Image = cannonballKuva; 162 ammus.Image = cannonballKuva; 131 163 ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 164 Tykki.Play(); 132 165 } 133 166 }; … … 137 170 seurattava = null; 138 171 } 172 else 173 { 174 List<Torni> tornit = GetObjectsWithTag("torni").Cast<Torni>().ToList(); 175 foreach (Torni torni in tornit) 176 { 177 int hinta = 100 + 20 * torni.taso; 178 if (Mouse.IsCursorOn(torni)&& torni.taso<Tornikuvat.Length) 179 { 180 if (rahalaskuri.Value >= hinta) 181 { 182 183 184 torni.taso += 1; 185 torni.ase.FireRate = 1 + torni.taso; 186 rahalaskuri.Value -= hinta; 187 torni.Image = Tornikuvat[torni.taso - 1]; 188 } 189 else 190 { 191 MessageDisplay.Add("Ei tarpeeksi rahaa. Päivitys maksaa "+hinta); 192 193 } 194 } 195 196 } 197 } 139 198 } 140 199 … … 143 202 { 144 203 polkuList = new List<Vector>(); 145 204 146 205 polkuList = polku.Values.ToList(); 147 Vector viimeinen = new Vector((polkuList.ElementAt(polkuList.Count -1).X +40), (polkuList.ElementAt(polkuList.Count-1)).Y);206 Vector viimeinen = new Vector((polkuList.ElementAt(polkuList.Count - 1).X + 40), (polkuList.ElementAt(polkuList.Count - 1)).Y); 148 207 polkuList.Add(viimeinen); 149 208 } … … 159 218 Add(taso, -3); 160 219 taso.Color = Color.Brown; 161 220 162 221 } 163 222 … … 172 231 } 173 232 174 175 233 234 176 235 void LuoVihuPolku(Vector paikka, double leveys, double korkeus, int reittiPisteenJarjestysnro) 177 236 { 178 PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);237 GameObject taso = new GameObject(leveys, korkeus); 179 238 taso.Position = paikka; 180 239 if (reittiPisteenJarjestysnro == 0) aloitusPaikka = paikka; 181 240 polku.Add(reittiPisteenJarjestysnro, paikka); 182 241 taso.Image = Hiekkakuva; 183 taso.CollisionIgnoreGroup = 1;242 //taso.CollisionIgnoreGroup = 1; 184 243 Add(taso, -3); 185 244 taso.Color = Color.Brown; 186 245 } 187 246 188 void LuoVihu(double leveys, double korkeus )189 { 190 Vihu vihu = new Vihu (51, 51);247 void LuoVihu(double leveys, double korkeus, int elama, int nopeus) 248 { 249 Vihu vihu = new Vihu(51, 51, elama); 191 250 vihu.Position = aloitusPaikka; 192 251 vihu.Image = norsukuva; … … 196 255 Add(vihu, 3); 197 256 AddCollisionHandler(vihu, "Tukikohta", ElamaMenetys); 198 257 199 258 200 259 ProgressBar elamaPalkki = new ProgressBar(50, 5); … … 208 267 ajastin.Timeout += delegate 209 268 { 210 elamaPalkki.Position = Camera.WorldToScreen(vihu.Position) +new Vector(0,-30);269 elamaPalkki.Position = Camera.WorldToScreen(vihu.Position) + new Vector(0, -30); 211 270 }; 212 271 ajastin.Start(); … … 214 273 { 215 274 elamaPalkki.Destroy(); 275 vihulista.Remove(vihu); 216 276 }; 217 277 218 278 PathFollowerBrain polkuAivot = new PathFollowerBrain(polkuList); 219 polkuAivot.Speed = 80;279 polkuAivot.Speed = nopeus; 220 280 polkuAivot.Active = true; 221 281 222 282 vihu.Brain = polkuAivot; 283 vihulista.Add(vihu); 223 284 } 224 285 225 286 void LuoTorniNappula(Vector paikka, double leveys, double korkeus, Image rakennusKuva, int hinta, int rakennusKoko) 226 287 { 227 menuNappi = new PushButton(leveys , korkeus, nappulaKuva);228 menuNappi.Position = new Vector( 0, (Level.Bottom));229 menuNappi.Clicked += new Action(() => AnnaRakennus(rakennusKoko, rakennusKoko *2, hinta, rakennusKuva));288 menuNappi = new PushButton(leveys*2, korkeus*2, nappulaKuva); 289 menuNappi.Position = new Vector(0, (Screen.Bottom + 30)); 290 menuNappi.Clicked += new Action(() => AnnaRakennus(rakennusKoko, rakennusKoko * 2, hinta, rakennusKuva)); 230 291 Add(menuNappi); 231 292 Mouse.ListenMovement(1.0, delegate … … 235 296 menuHelperNaytto.IsVisible = true; 236 297 menuHelperNaytto.Text = "Torni, " + hinta + " kultaa"; 237 menuHelperNaytto.Position = Mouse.PositionOn World+ new Vector(menuHelperNaytto.Width / 2 + 10, 0);298 menuHelperNaytto.Position = Mouse.PositionOnScreen + new Vector(menuHelperNaytto.Width / 2 + 10, 0); 238 299 } 239 300 }, null … … 259 320 rahalaskuri.Value -= hinta; 260 321 261 GameObject talo = new GameObject(leveys, korkeus);322 Torni talo = new Torni(leveys, korkeus); 262 323 talo.Color = Color.Black; 263 324 talo.Image = kuva; 264 325 talo.Position = Mouse.PositionOnScreen; 326 talo.Tag = "torni"; 265 327 ollaanRakentamassa = true; 266 328 seurattava = talo; … … 271 333 void LuoRahalaskuri() 272 334 { 273 rahalaskuri = new IntMeter( 80, 0, int.MaxValue);335 rahalaskuri = new IntMeter(140, 0, int.MaxValue); 274 336 275 337 Label rahanaytto = new Label(); … … 296 358 297 359 kohde.Destroy(); 298 rahalaskuri.AddValue( 10);360 rahalaskuri.AddValue(2); 299 361 } 300 362 } … … 318 380 MessageDisplay.Add("Hahaaaaaaa Hävisit :D."); 319 381 Timer.SingleShot(5, Exit); 320 382 383 321 384 } 322 385 … … 328 391 Add(taso); 329 392 taso.Tag = "Tukikohta"; 330 393 331 394 } 332 395 void ElamaMenetys(PhysicsObject vihu, PhysicsObject Tukikohta) … … 338 401 void HuijausKoodi() 339 402 { 340 rahalaskuri.AddValue(800);341 MessageDisplay.Add("Koodi aktivoitu: Lisää rahaa");342 403 rahalaskuri.AddValue(800); 404 MessageDisplay.Add("Koodi aktivoitu: Lisää rahaa"); 405 343 406 } 344 407 void HuijausKoodi2() … … 348 411 } 349 412 350 413 void Aalto(int numero) 414 { 415 int i = 0; 416 Timer ajastin = new Timer(); 417 ajastin.Interval = Math.Max(0.2, 1.5 - 0.2 * numero); 418 //ajastin.Times.Value = 10; 419 //ajastin.TimesLimited = true; 420 ajastin.Timeout += delegate 421 { 422 LuoVihu(15, 15, (int)(3 + 0.5 * numero), 60 + 10 * numero); 423 i++; 424 if (i > 10 * numero) 425 ajastin.Stop(); 426 }; 427 ajastin.Start(); 428 } 351 429 352 430 } 353 431 class Vihu : PhysicsObject 354 432 { 355 private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);433 private IntMeter elamaLaskuri; 356 434 public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 357 435 358 public Vihu(double leveys, double korkeus )436 public Vihu(double leveys, double korkeus, int elama) 359 437 : base(leveys, korkeus) 360 438 { 439 elamaLaskuri = new IntMeter(elama, 0, elama); 361 440 //elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 362 441 … … 364 443 365 444 } 445 class Torni : GameObject 446 { 447 public int taso = 1; 448 public AssaultRifle ase; 449 public Torni(double leveys, double korkeus) 450 : base(leveys, korkeus) 451 { 452 453 454 } 455 456 } -
2014/24/OttoN/Towerdefence/Towerdefence/Towerdefence/Towerdefence.csproj.Debug.cachefile
r4955 r4978 7 7 Content\nappula.xnb 8 8 Content\CannonBall.xnb 9 Content\CannonTower2.xnb 10 Content\CannonTower3.xnb 11 Content\CannonTower4.xnb 12 Content\CannonTower7.xnb 13 Content\CannonTower5.xnb 14 Content\CannonTower6.xnb 15 Content\Cannon.xnb -
2014/24/OttoN/Towerdefence/Towerdefence/Towerdefence/obj/x86/Debug/ContentPipeline-{EADB9CD8-650F-4123-8AF5-6C10E6F99B8F}.xml
r4955 r4978 74 74 <Time>2014-06-11T13:59:54.6674523+03:00</Time> 75 75 </Item> 76 <Item> 77 <Source>CannonTower2.png</Source> 78 <Name>CannonTower2</Name> 79 <Importer>TextureImporter</Importer> 80 <Processor>TextureProcessor</Processor> 81 <Options>None</Options> 82 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower2.xnb</Output> 83 <Time>2014-06-12T11:55:37.9319732+03:00</Time> 84 </Item> 85 <Item> 86 <Source>CannonTower3.png</Source> 87 <Name>CannonTower3</Name> 88 <Importer>TextureImporter</Importer> 89 <Processor>TextureProcessor</Processor> 90 <Options>None</Options> 91 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower3.xnb</Output> 92 <Time>2014-06-12T12:17:48.4173732+03:00</Time> 93 </Item> 94 <Item> 95 <Source>CannonTower4.png</Source> 96 <Name>CannonTower4</Name> 97 <Importer>TextureImporter</Importer> 98 <Processor>TextureProcessor</Processor> 99 <Options>None</Options> 100 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower4.xnb</Output> 101 <Time>2014-06-12T13:05:07.7218246+03:00</Time> 102 </Item> 103 <Item> 104 <Source>CannonTower7.png</Source> 105 <Name>CannonTower7</Name> 106 <Importer>TextureImporter</Importer> 107 <Processor>TextureProcessor</Processor> 108 <Options>None</Options> 109 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower7.xnb</Output> 110 <Time>2014-06-12T13:20:35.5976029+03:00</Time> 111 </Item> 112 <Item> 113 <Source>CannonTower5.png</Source> 114 <Name>CannonTower5</Name> 115 <Importer>TextureImporter</Importer> 116 <Processor>TextureProcessor</Processor> 117 <Options>None</Options> 118 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower5.xnb</Output> 119 <Time>2014-06-12T13:20:39.6730104+03:00</Time> 120 </Item> 121 <Item> 122 <Source>CannonTower6.png</Source> 123 <Name>CannonTower6</Name> 124 <Importer>TextureImporter</Importer> 125 <Processor>TextureProcessor</Processor> 126 <Options>None</Options> 127 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower6.xnb</Output> 128 <Time>2014-06-12T13:20:40.2410672+03:00</Time> 129 </Item> 130 <Item> 131 <Source>Cannon.wav</Source> 132 <Name>Cannon</Name> 133 <Importer>WavImporter</Importer> 134 <Processor>SoundEffectProcessor</Processor> 135 <Options>None</Options> 136 <Output>C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\Cannon.xnb</Output> 137 <Time>2014-06-12T14:26:54.5523291+03:00</Time> 138 </Item> 76 139 <BuildSuccessful>true</BuildSuccessful> 77 140 <Settings> -
2014/24/OttoN/Towerdefence/Towerdefence/Towerdefence/obj/x86/Debug/Towerdefence.csproj.FileListAbsolute.txt
r4955 r4978 15 15 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\nappula.xnb 16 16 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonBall.xnb 17 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower2.xnb 18 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower3.xnb 19 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower4.xnb 20 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower7.xnb 21 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower5.xnb 22 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\CannonTower6.xnb 23 C:\MyTemp\OttoN\Towerdefence\Towerdefence\Towerdefence\bin\x86\Debug\Content\Cannon.xnb -
2014/24/OttoN/Towerdefence/Towerdefence/Towerdefence/obj/x86/Debug/cachefile-{EADB9CD8-650F-4123-8AF5-6C10E6F99B8F}-targetpath.txt
r4955 r4978 7 7 Content\nappula.xnb 8 8 Content\CannonBall.xnb 9 Content\CannonTower2.xnb 10 Content\CannonTower3.xnb 11 Content\CannonTower4.xnb 12 Content\CannonTower7.xnb 13 Content\CannonTower5.xnb 14 Content\CannonTower6.xnb 15 Content\Cannon.xnb -
2014/24/OttoN/Towerdefence/Towerdefence/TowerdefenceContent/TowerdefenceContent.contentproj
r4955 r4978 97 97 </Compile> 98 98 </ItemGroup> 99 <ItemGroup> 100 <Compile Include="CannonTower2.png"> 101 <Name>CannonTower2</Name> 102 <Importer>TextureImporter</Importer> 103 <Processor>TextureProcessor</Processor> 104 </Compile> 105 </ItemGroup> 106 <ItemGroup> 107 <Compile Include="CannonTower3.png"> 108 <Name>CannonTower3</Name> 109 <Importer>TextureImporter</Importer> 110 <Processor>TextureProcessor</Processor> 111 </Compile> 112 </ItemGroup> 113 <ItemGroup> 114 <Compile Include="CannonTower4.png"> 115 <Name>CannonTower4</Name> 116 <Importer>TextureImporter</Importer> 117 <Processor>TextureProcessor</Processor> 118 </Compile> 119 </ItemGroup> 120 <ItemGroup> 121 <Compile Include="CannonTower7.png"> 122 <Name>CannonTower7</Name> 123 <Importer>TextureImporter</Importer> 124 <Processor>TextureProcessor</Processor> 125 </Compile> 126 </ItemGroup> 127 <ItemGroup> 128 <Compile Include="CannonTower5.png"> 129 <Name>CannonTower5</Name> 130 <Importer>TextureImporter</Importer> 131 <Processor>TextureProcessor</Processor> 132 </Compile> 133 </ItemGroup> 134 <ItemGroup> 135 <Compile Include="CannonTower6.png"> 136 <Name>CannonTower6</Name> 137 <Importer>TextureImporter</Importer> 138 <Processor>TextureProcessor</Processor> 139 </Compile> 140 </ItemGroup> 141 <ItemGroup> 142 <Compile Include="Cannon.wav"> 143 <Name>Cannon</Name> 144 <Importer>WavImporter</Importer> 145 <Processor>SoundEffectProcessor</Processor> 146 </Compile> 147 </ItemGroup> 99 148 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 100 149 <!-- 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.