- Timestamp:
- 2015-06-26 11:36:20 (8 years ago)
- Location:
- 2015/26/KonstaH/Tower Defense
- Files:
-
- 6 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower Defense.csproj
r6377 r6451 154 154 </ProjectReference> 155 155 </ItemGroup> 156 <ItemGroup> 157 <None Include="ClassDiagram1.cd" /> 158 </ItemGroup> 156 159 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 157 160 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" /> -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower Defense.csproj.Debug.cachefile
r6377 r6451 6 6 Content\Pickup_Coin23.xnb 7 7 Content\Parempiammus.xnb 8 Content\Tausta.xnb 9 Content\Taustamusa.xnb 10 Content\Taustamusa.wma -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower_Defense.cs
r6377 r6451 9 9 public class Tower_Defense : PhysicsGame 10 10 { 11 Image taustaKuva = LoadImage("Tausta"); 11 12 Image tykkikuva = LoadImage("Tykki"); 12 13 public Image Parempiammus = LoadImage("Parempiammus"); … … 14 15 Image Paivitetyntykinkuva = LoadImage("Parempitykki"); 15 16 Image Vihollisenkuva = LoadImage("Vihollinen"); 16 public SoundEffect RahaAani = LoadSoundEffect("Pickup_Coin23");17 public SoundEffect RahaAani = LoadSoundEffect("Pickup_Coin23"); 17 18 const double tykinLeveys = 80; 18 19 const double tykinKorkeus = 40; … … 20 21 const double Vihujennopeus = -75; 21 22 const double VihollinenKorkeus = 20; 22 23 PhysicsObject Alareuna; 24 PhysicsObject Ylareuna; 23 25 PhysicsObject reuna; 24 26 PhysicsObject Suojeltava; 27 25 28 enum TykinTyyppi 26 29 { … … 28 31 Perustykki, 29 32 PaivitettyTykki, 30 ViritettyTykki 31 } 32 int kierrosNro = 0; 33 34 int[] Aallot = new int[] {30, 60, 120, 240, 480, 960, 1920, 3840, 7680, 15360 }; 35 Timer Spawner; 33 34 } 35 int kierrosNro = 1; 36 37 int[] Aallot = new int[] { 0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300 }; 38 39 Timer Spawner = new Timer(); 36 40 37 41 TykinTyyppi valittuTykki = TykinTyyppi.EiTykki; 38 42 39 public IntMeter rahaa = new IntMeter(100, 0, 999999999);43 public IntMeter rahaa = new IntMeter(100, 0, 9999); 40 44 41 45 42 46 public override void Begin() 43 47 { 44 IsFullScreen = true; 45 48 MediaPlayer.Play("Taustamusa"); 49 MediaPlayer.IsRepeating = true; 50 IsFullScreen = true; 51 AlkuValikko(); 52 Level.Background.Image = taustaKuva; 53 54 } 55 void AlkuValikko() 56 { 57 MultiSelectWindow alkuValikko = new MultiSelectWindow("Tower Defense", 58 "Aloita peli", "Lopeta"); 59 Add(alkuValikko); 60 alkuValikko.AddItemHandler(0, AloitaPeli); 61 alkuValikko.AddItemHandler(1, Exit); 62 63 } 64 void AloitaPeli() 65 { 46 66 Level.Width = 1920; 47 67 LuoKentta(); 48 49 68 69 50 70 LuoKassakone(); 51 71 Camera.ZoomToLevel(); 52 // LisaaVihollinen();53 54 PhysicsObject tykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus *4),tykkikuva, false, 1, Ammus);72 // LisaaVihollinen(); 73 74 PhysicsObject tykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 4), tykkikuva, false, 3, Ammus); 55 75 Mouse.ListenOn(tykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.Perustykki); 56 76 57 PhysicsObject Paivitettytykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 6), Paivitetyntykinkuva, false, 5, Parempiammus 77 PhysicsObject Paivitettytykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 6), Paivitetyntykinkuva, false, 5, Parempiammus); 58 78 Mouse.ListenOn(Paivitettytykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.PaivitettyTykki); 59 79 60 80 Mouse.Listen(MouseButton.Left, ButtonState.Pressed, LisaaOstettuTykki, "Lisää tykin."); 61 81 IsMouseVisible = true; 62 82 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 63 83 Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaAalto, "ALOITTAAALLON!"); 64 } 84 Keyboard.Listen(Key.T, ButtonState.Pressed, NaytaTiedot, "NaytaTiedot"); 85 Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 86 // Keyboard.Listen(Key.T, ButtonState.Released, , "NaytaTiedot"); 87 88 } 89 void NaytaTiedot() 90 { 91 //Pause(); 92 Label Tiedot = new Label("Yksipiippuinen tykki tekee 3 damagea. Nelipiippuinen tykki tekee 5 damagea.\nYksipiippuinen tykki maksaa 10 kolikkoa.\nNelipiippuinen maksaa 75 kolikkoa.\nVihollisilla on 15 hitpointsia.\nHauskoja pelihetkiä!"); 93 Tiedot.Color = Color.Aqua; 94 Add(Tiedot); 95 96 97 98 Timer.SingleShot(2, delegate 99 { 100 Tiedot.Destroy(); 101 }); 102 103 } 104 105 65 106 void AloitaAalto() 66 107 { 67 Spawner.Start(Aallot[kierrosNro]); 108 if (!Spawner.Enabled && kierrosNro <= Aallot.Length) 109 { 110 Spawner = new Timer(); 111 Spawner.Interval = (Double)1 / kierrosNro; 112 Spawner.Timeout += LisaaVihollinen; 113 114 Spawner.Start(Aallot[kierrosNro-1]); 115 kierrosNro++; 116 117 } 118 else if (kierrosNro >Aallot.Length) 119 { 120 ClearAll(); 121 MessageDisplay.Add("Sä olet mestari!"); 122 Add(MessageDisplay); 123 124 125 126 } 127 68 128 } 69 129 void OtaTykki(TykinTyyppi Tyyppi) … … 74 134 void LuoKentta() 75 135 { 76 reuna = Level.CreateRightBorder(); 77 reuna.Color = Color.Red; 78 reuna.IsVisible = true; 79 reuna.Width = 1200; 80 reuna.Height = 50; 81 reuna.X = 800; 82 83 Suojeltava = Level.CreateRightBorder(); 84 Suojeltava.Color = Color.Blue; 85 Suojeltava.IsVisible = true; 86 Suojeltava.Width = 1200; 87 Suojeltava.Height = 50; 88 Suojeltava.X = -950; 89 90 AddCollisionHandler(Suojeltava, "Vihollinen", Havisitpelin); 91 92 93 94 Spawner = new Timer(); 95 Spawner.Interval = 1; 96 Spawner.Timeout += LisaaVihollinen; 136 reuna = Level.CreateRightBorder(); 137 reuna.Color = Color.Red; 138 reuna.IsVisible = true; 139 reuna.Width = 1200; 140 reuna.Height = 50; 141 reuna.X = 800; 142 143 Suojeltava = PhysicsObject.CreateStaticObject(50, 1200); 144 Suojeltava.Color = Color.Blue; 145 Suojeltava.IsVisible = true; 146 //Suojeltava.Width = 1200; 147 //Suojeltava.Height = 50; 148 Suojeltava.Tag = "Suojeltava"; 149 Suojeltava.X = -950; 150 Add(Suojeltava); 151 152 AddCollisionHandler(Suojeltava, "Vihollinen", Havisitpelin); 153 154 Alareuna = Level.CreateBottomBorder(); 155 Alareuna.IsVisible = false; 156 Ylareuna = Level.CreateTopBorder(); 157 Ylareuna.IsVisible = false; 158 97 159 } 98 160 void LuoKassakone() … … 104 166 pisteNaytto.Color = Color.Transparent; 105 167 pisteNaytto.BindTo(rahaa); 106 pisteNaytto.Font = LoadFont("Rahafontti"); 168 pisteNaytto.Font = LoadFont("Rahafontti"); 107 169 Add(pisteNaytto); 108 170 } … … 112 174 if (rahaa.Value >= 10 && valittuTykki == TykinTyyppi.Perustykki) 113 175 { 114 rahaa.Value -= 1 5;115 116 LisaaTykki(Mouse.PositionOnWorld, tykkikuva, true, 1, Ammus);117 } 118 else if (rahaa.Value >= 50 && valittuTykki == TykinTyyppi.PaivitettyTykki)119 { 120 rahaa.Value -= 100;121 122 LisaaTykki(Mouse.PositionOnWorld, Paivitetyntykinkuva, true, 5, Parempiammus 123 } 124 176 rahaa.Value -= 10; 177 178 LisaaTykki(Mouse.PositionOnWorld, tykkikuva, true, 3, Ammus); 179 } 180 else if (rahaa.Value >= 50 && valittuTykki == TykinTyyppi.PaivitettyTykki) 181 { 182 rahaa.Value -= 75; 183 184 LisaaTykki(Mouse.PositionOnWorld, Paivitetyntykinkuva, true, 5, Parempiammus); 185 } 186 125 187 126 188 } … … 147 209 void Tykkiampuu(Tykki tykki) 148 210 { 149 PhysicsObject panos = new PhysicsObject(Ammus.Width, Ammus.Height);150 panos.Image = tykki.Panoksenkuva;151 Add(panos);152 panos.Tag = "panos";153 panos.Position = tykki.Position;154 panos.CollisionIgnoreGroup = 3;155 panos.Hit(new Vector(200, 0));156 AddCollisionHandler(panos, "Vihollinen", delegate(PhysicsObject a, PhysicsObject b) { Panostormaaviholliseen(a, b, tykki.Damage); panos.Destroy();});157 158 panos.LifetimeLeft = TimeSpan.FromSeconds(6.5);159 160 161 FollowerBrain seuraajanAivot = new FollowerBrain("Vihollinen");162 panos.Brain = seuraajanAivot;163 seuraajanAivot.DistanceFar = 2000;164 seuraajanAivot.DistanceClose = 200;165 211 PhysicsObject panos = new PhysicsObject(Ammus.Width, Ammus.Height); 212 panos.Image = tykki.Panoksenkuva; 213 Add(panos); 214 panos.Tag = "panos"; 215 panos.Position = tykki.Position; 216 panos.CollisionIgnoreGroup = 3; 217 panos.Hit(new Vector(200, 0)); 218 AddCollisionHandler(panos, "Vihollinen", delegate(PhysicsObject a, PhysicsObject b) { Panostormaaviholliseen(a, b, tykki.Damage); panos.Destroy(); }); 219 220 panos.LifetimeLeft = TimeSpan.FromSeconds(6.5); 221 222 223 FollowerBrain seuraajanAivot = new FollowerBrain("Vihollinen"); 224 panos.Brain = seuraajanAivot; 225 seuraajanAivot.DistanceFar = 2000; 226 seuraajanAivot.DistanceClose = 200; 227 166 228 167 229 230 231 232 168 233 } 169 234 void Havisitpelin(PhysicsObject seina, PhysicsObject panos) 170 235 { 171 Exit(); 236 ClearAll(); 237 AlkuValikko(); 172 238 } 173 239 void LisaaVihollinen() 174 240 { 175 241 Vihu Vihollinen = new Vihu(VihollinenLeveys, VihollinenKorkeus); 176 Vihollinen.MakeStatic(); 242 //Vihollinen.MakeStatic(); 243 Vihollinen.IgnoresCollisionResponse = true; 177 244 Vihollinen.Image = Vihollisenkuva; 178 245 Vihollinen.ElamaLaskuri.Value = Vihollinen.ElamaLaskuri.Value - 0; 179 246 Vihollinen.Tag = "Vihollinen"; 180 Vihollinen.Arvo = 5; 181 Vihollinen.X = reuna.X; 182 Vihollinen.Y = RandomGen.NextDouble(Level.Bottom + VihollinenKorkeus/2,Level.Top - VihollinenKorkeus/2); 183 Vihollinen.Velocity = new Vector (Vihujennopeus, 0); 184 247 Vihollinen.Arvo = 1; 248 Vihollinen.X = reuna.X - 20; 249 Vihollinen.Y = RandomGen.NextDouble(Level.Bottom + VihollinenKorkeus / 2, Level.Top - VihollinenKorkeus / 2); 250 Vihollinen.Velocity = new Vector(Vihujennopeus, 0); 251 252 253 185 254 Add(Vihollinen); 186 255 187 188 189 190 191 192 193 194 } 256 } 257 195 258 void Panostormaaviholliseen(PhysicsObject panos, PhysicsObject Vihollinen, int damage) 196 259 { … … 209 272 } 210 273 211 private IntMeter elamaLaskuri = new IntMeter( 5, 0, 10);274 private IntMeter elamaLaskuri = new IntMeter(15, 0, 100); 212 275 public IntMeter ElamaLaskuri 213 276 { 214 277 set { elamaLaskuri = value; } 215 get { return elamaLaskuri; } } 278 get { return elamaLaskuri; } 279 } 216 280 217 281 public Vihu(double leveys, double korkeus) … … 220 284 Tower_Defense peli = this.Game as Tower_Defense; 221 285 elamaLaskuri.LowerLimit += delegate { this.Destroy(); peli.rahaa.Value += arvo; peli.RahaAani.Play(); }; 222 223 } 224 286 287 } 288 225 289 226 290 } … … 235 299 } 236 300 237 301 238 302 private int damage = 0; 239 303 public int Damage -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/ContentPipeline-{439F1067-9864-4E3E-8FD7-77C4E0FF4F85}.xml
r6377 r6451 65 65 <Time>2015-06-25T14:36:30.2692167+03:00</Time> 66 66 </Item> 67 <Item> 68 <Source>Tausta.png</Source> 69 <Name>Tausta</Name> 70 <Importer>TextureImporter</Importer> 71 <Processor>TextureProcessor</Processor> 72 <Options>None</Options> 73 <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Tausta.xnb</Output> 74 <Time>2015-06-26T11:12:15.1511927+03:00</Time> 75 </Item> 76 <Item> 77 <Source>Taustamusa.mp3</Source> 78 <Name>Taustamusa</Name> 79 <Importer>Mp3Importer</Importer> 80 <Processor>SongProcessor</Processor> 81 <Options>None</Options> 82 <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Taustamusa.xnb</Output> 83 <Extra>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Taustamusa.wma</Extra> 84 <Time>2015-06-26T11:07:53.0598613+03:00</Time> 85 </Item> 67 86 <BuildSuccessful>true</BuildSuccessful> 68 87 <Settings> -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/Tower Defense.csproj.FileListAbsolute.txt
r6377 r6451 14 14 C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Pickup_Coin23.xnb 15 15 C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Parempiammus.xnb 16 C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Tausta.xnb 17 C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Taustamusa.xnb 18 C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Taustamusa.wma -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/cachefile-{439F1067-9864-4E3E-8FD7-77C4E0FF4F85}-targetpath.txt
r6377 r6451 6 6 Content\Pickup_Coin23.xnb 7 7 Content\Parempiammus.xnb 8 Content\Tausta.xnb 9 Content\Taustamusa.xnb 10 Content\Taustamusa.wma -
2015/26/KonstaH/Tower Defense/Tower Defense/Tower DefenseContent/Tower_DefenseContent.contentproj
r6377 r6451 94 94 </Compile> 95 95 </ItemGroup> 96 <ItemGroup> 97 <Compile Include="Tausta.png"> 98 <Name>Tausta</Name> 99 <Importer>TextureImporter</Importer> 100 <Processor>TextureProcessor</Processor> 101 </Compile> 102 </ItemGroup> 103 <ItemGroup> 104 <Compile Include="Taustamusa.mp3"> 105 <Name>Taustamusa</Name> 106 <Importer>Mp3Importer</Importer> 107 <Processor>SongProcessor</Processor> 108 </Compile> 109 </ItemGroup> 96 110 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 97 111 <!-- 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.