Changeset 6377


Ignore:
Timestamp:
2015-06-25 15:01:59 (4 years ago)
Author:
komihovi
Message:
 
Location:
2015/26/KonstaH/Tower Defense
Files:
7 added
12 edited

Legend:

Unmodified
Added
Removed
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower Defense.csproj

    r6261 r6377  
    111111  </ItemGroup> 
    112112  <ItemGroup> 
     113    <Compile Include="LoadImage.cs" /> 
    113114    <Compile Include="Ohjelma.cs" /> 
    114115    <Compile Include="Tower_Defense.cs" /> 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower Defense.csproj.Debug.cachefile

    r6261 r6377  
    33Content\Parempitykki.xnb 
    44Content\Ammus.xnb 
     5Content\Vihollinen.xnb 
     6Content\Pickup_Coin23.xnb 
     7Content\Parempiammus.xnb 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/Tower_Defense.cs

    r6261 r6377  
    1010{ 
    1111    Image tykkikuva = LoadImage("Tykki"); 
     12    public Image Parempiammus = LoadImage("Parempiammus"); 
     13    public Image Ammus = LoadImage("Ammus"); 
     14    Image Paivitetyntykinkuva = LoadImage("Parempitykki"); 
     15    Image Vihollisenkuva = LoadImage("Vihollinen"); 
     16   public SoundEffect RahaAani = LoadSoundEffect("Pickup_Coin23"); 
    1217    const double tykinLeveys = 80; 
    1318    const double tykinKorkeus = 40; 
    14     Image Ammus = LoadImage("Ammus"); 
    15     Image Paivitetyntykinkuva = LoadImage("Parempitykki"); 
    16     
    17       
    18  
    19      
     19    const double VihollinenLeveys = 40; 
     20    const double Vihujennopeus = -75; 
     21    const double VihollinenKorkeus = 20; 
     22 
     23    PhysicsObject reuna; 
     24    PhysicsObject Suojeltava; 
    2025    enum TykinTyyppi 
    2126    { 
     
    2530        ViritettyTykki 
    2631    } 
     32    int kierrosNro = 0; 
     33 
     34    int[] Aallot = new int[] {30, 60, 120, 240, 480, 960, 1920, 3840, 7680, 15360  }; 
     35    Timer Spawner; 
    2736 
    2837    TykinTyyppi valittuTykki = TykinTyyppi.EiTykki; 
    2938 
    30     IntMeter rahaa = new IntMeter(200, 0, 999); 
     39   public IntMeter rahaa = new IntMeter(100, 0, 999999999); 
    3140 
    3241 
    3342    public override void Begin() 
    3443    { 
    35         SetWindowSize(800, 600); 
    36  
    37         Level.Width = 800; 
    38         Level.Height = 600; 
     44        IsFullScreen = true;  
     45 
     46        Level.Width = 1920; 
     47        LuoKentta(); 
     48            
     49         
    3950        LuoKassakone(); 
    4051        Camera.ZoomToLevel(); 
    41  
    42         PhysicsObject tykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus*4),tykkikuva, false ); 
     52       // LisaaVihollinen(); 
     53         
     54        PhysicsObject tykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus*4),tykkikuva, false, 1, Ammus  ); 
    4355        Mouse.ListenOn(tykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.Perustykki); 
    4456 
    45         PhysicsObject Paivitettytykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 6), Paivitetyntykinkuva, false); 
     57        PhysicsObject Paivitettytykki = LisaaTykki(new Vector(Level.Right - tykinLeveys, Level.Top - tykinKorkeus * 6), Paivitetyntykinkuva, false, 5, Parempiammus ); 
    4658        Mouse.ListenOn(Paivitettytykki, MouseButton.Left, ButtonState.Pressed, OtaTykki, "Laita tykki paikoilleen.", TykinTyyppi.PaivitettyTykki); 
    4759         
     
    4961        IsMouseVisible = true; 
    5062        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     63        Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaAalto, "ALOITTAAALLON!"); 
     64    } 
     65    void AloitaAalto() 
     66    { 
     67        Spawner.Start(Aallot[kierrosNro]); 
    5168    } 
    5269    void OtaTykki(TykinTyyppi Tyyppi) 
     
    5471        valittuTykki = Tyyppi; 
    5572 
     73    } 
     74    void LuoKentta() 
     75    { 
     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; 
    5697    } 
    5798    void LuoKassakone() 
     
    63104        pisteNaytto.Color = Color.Transparent; 
    64105        pisteNaytto.BindTo(rahaa); 
    65         pisteNaytto.Font = LoadFont("Rahafontti"); 
     106        pisteNaytto.Font = LoadFont("Rahafontti");  
    66107        Add(pisteNaytto); 
    67108    } 
     
    71112        if (rahaa.Value >= 10 && valittuTykki == TykinTyyppi.Perustykki) 
    72113        { 
    73             rahaa.Value -= 10; 
    74  
    75             LisaaTykki(Mouse.PositionOnWorld, tykkikuva, true); 
     114            rahaa.Value -= 15; 
     115 
     116            LisaaTykki(Mouse.PositionOnWorld, tykkikuva, true, 1, Ammus ); 
    76117        } 
    77118        else if(rahaa.Value >= 50 && valittuTykki == TykinTyyppi.PaivitettyTykki) 
    78119        { 
    79             rahaa.Value -= 50; 
    80  
    81             LisaaTykki(Mouse.PositionOnWorld, Paivitetyntykinkuva, true ); 
     120            rahaa.Value -= 100; 
     121 
     122            LisaaTykki(Mouse.PositionOnWorld, Paivitetyntykinkuva, true, 5, Parempiammus ); 
    82123        } 
    83124         
     
    85126    } 
    86127 
    87     PhysicsObject LisaaTykki(Vector paikka, Image Tykinkuva, bool pystyykoAmpumaan) 
    88     { 
    89         PhysicsObject tykki = new PhysicsObject(tykinLeveys, tykinKorkeus); 
     128    Tykki LisaaTykki(Vector paikka, Image Tykinkuva, bool pystyykoAmpumaan, int damage, Image panoksenkuva) 
     129    { 
     130        Tykki tykki = new Tykki(tykinLeveys, tykinKorkeus, damage); 
    90131        Add(tykki); 
     132        tykki.MakeStatic(); 
    91133        tykki.Image = Tykinkuva; 
    92134        tykki.Tag = "Tykki"; 
    93135        tykki.Position = paikka; 
    94  
    95          
     136        tykki.Panoksenkuva = panoksenkuva; 
    96137 
    97138        if (pystyykoAmpumaan) 
    98139        { 
    99             Timer AmpumisAjastin = new Timer(); AmpumisAjastin.Interval = 0.5; 
     140            Timer AmpumisAjastin = new Timer(); AmpumisAjastin.Interval = 1.0; 
    100141            AmpumisAjastin.Timeout += delegate { Tykkiampuu(tykki); }; 
    101142            AmpumisAjastin.Start(); 
     
    104145        return tykki; 
    105146    } 
    106     void Tykkiampuu(PhysicsObject tykki) 
     147    void Tykkiampuu(Tykki tykki) 
    107148    { 
    108149        PhysicsObject panos = new PhysicsObject(Ammus.Width, Ammus.Height); 
    109         panos.Image = Ammus; 
     150        panos.Image = tykki.Panoksenkuva; 
    110151        Add(panos); 
     152        panos.Tag = "panos"; 
    111153        panos.Position = tykki.Position; 
     154        panos.CollisionIgnoreGroup = 3; 
    112155        panos.Hit(new Vector(200, 0)); 
    113     } 
     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 
     166 
     167        
     168    } 
     169    void Havisitpelin(PhysicsObject seina, PhysicsObject panos) 
     170    { 
     171        Exit(); 
     172    } 
     173    void LisaaVihollinen() 
     174    { 
     175        Vihu Vihollinen = new Vihu(VihollinenLeveys, VihollinenKorkeus); 
     176        Vihollinen.MakeStatic(); 
     177        Vihollinen.Image = Vihollisenkuva; 
     178        Vihollinen.ElamaLaskuri.Value = Vihollinen.ElamaLaskuri.Value - 0; 
     179        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         
     185        Add(Vihollinen); 
     186 
     187        
     188 
     189          
     190 
     191         
     192 
     193       
     194    } 
     195    void Panostormaaviholliseen(PhysicsObject panos, PhysicsObject Vihollinen, int damage) 
     196    { 
     197        ((Vihu)Vihollinen).ElamaLaskuri.Value -= damage; 
     198    } 
     199 
    114200 
    115201} 
    116  
     202class Vihu : PhysicsObject 
     203{ 
     204    private int arvo = 0; 
     205    public int Arvo 
     206    { 
     207        set { arvo = value; } 
     208        get { return arvo; } 
     209    } 
     210 
     211    private IntMeter elamaLaskuri = new IntMeter(5, 0, 10 ); 
     212    public IntMeter ElamaLaskuri 
     213    { 
     214        set { elamaLaskuri = value; } 
     215        get { return elamaLaskuri; } } 
     216 
     217    public Vihu(double leveys, double korkeus) 
     218        : base(leveys, korkeus) 
     219    { 
     220        Tower_Defense peli = this.Game as Tower_Defense; 
     221        elamaLaskuri.LowerLimit += delegate { this.Destroy(); peli.rahaa.Value += arvo; peli.RahaAani.Play(); }; 
     222         
     223    } 
     224     
     225 
     226} 
     227 
     228class Tykki : PhysicsObject 
     229{ 
     230    private Image panoksenkuva; 
     231    public Image Panoksenkuva 
     232    { 
     233        set { panoksenkuva = value; } 
     234        get { return panoksenkuva; } 
     235    } 
     236 
     237         
     238    private int damage = 0; 
     239    public int Damage 
     240    { 
     241        set { damage = value; } 
     242        get { return damage; } 
     243    } 
     244 
     245    public Tykki(double leveys, double korkeus, int damage) 
     246        : base(leveys, korkeus) 
     247    { 
     248        Damage = damage; 
     249    } 
     250} 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/ContentPipeline-{439F1067-9864-4E3E-8FD7-77C4E0FF4F85}.xml

    r6261 r6377  
    3737      <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Ammus.xnb</Output> 
    3838      <Time>2015-06-24T13:41:00.1791876+03:00</Time> 
     39    </Item> 
     40    <Item> 
     41      <Source>Vihollinen.png</Source> 
     42      <Name>Vihollinen</Name> 
     43      <Importer>TextureImporter</Importer> 
     44      <Processor>TextureProcessor</Processor> 
     45      <Options>None</Options> 
     46      <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Vihollinen.xnb</Output> 
     47      <Time>2015-06-25T09:46:13.8503167+03:00</Time> 
     48    </Item> 
     49    <Item> 
     50      <Source>Pickup_Coin23.wav</Source> 
     51      <Name>Pickup_Coin23</Name> 
     52      <Importer>WavImporter</Importer> 
     53      <Processor>SoundEffectProcessor</Processor> 
     54      <Options>None</Options> 
     55      <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Pickup_Coin23.xnb</Output> 
     56      <Time>2015-06-25T11:07:54.9903167+03:00</Time> 
     57    </Item> 
     58    <Item> 
     59      <Source>Parempiammus.png</Source> 
     60      <Name>Parempiammus</Name> 
     61      <Importer>TextureImporter</Importer> 
     62      <Processor>TextureProcessor</Processor> 
     63      <Options>None</Options> 
     64      <Output>C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Parempiammus.xnb</Output> 
     65      <Time>2015-06-25T14:36:30.2692167+03:00</Time> 
    3966    </Item> 
    4067    <BuildSuccessful>true</BuildSuccessful> 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/Tower Defense.csproj.FileListAbsolute.txt

    r6261 r6377  
    1111C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Parempitykki.xnb 
    1212C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Ammus.xnb 
     13C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Vihollinen.xnb 
     14C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Pickup_Coin23.xnb 
     15C:\MyTemp\KonstaH\Tower Defense\Tower Defense\Tower Defense\bin\x86\Debug\Content\Parempiammus.xnb 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower Defense/obj/x86/Debug/cachefile-{439F1067-9864-4E3E-8FD7-77C4E0FF4F85}-targetpath.txt

    r6261 r6377  
    33Content\Parempitykki.xnb 
    44Content\Ammus.xnb 
     5Content\Vihollinen.xnb 
     6Content\Pickup_Coin23.xnb 
     7Content\Parempiammus.xnb 
  • 2015/26/KonstaH/Tower Defense/Tower Defense/Tower DefenseContent/Tower_DefenseContent.contentproj

    r6261 r6377  
    7373    </Compile> 
    7474  </ItemGroup> 
     75  <ItemGroup> 
     76    <Compile Include="Vihollinen.png"> 
     77      <Name>Vihollinen</Name> 
     78      <Importer>TextureImporter</Importer> 
     79      <Processor>TextureProcessor</Processor> 
     80    </Compile> 
     81  </ItemGroup> 
     82  <ItemGroup> 
     83    <Compile Include="Pickup_Coin23.wav"> 
     84      <Name>Pickup_Coin23</Name> 
     85      <Importer>WavImporter</Importer> 
     86      <Processor>SoundEffectProcessor</Processor> 
     87    </Compile> 
     88  </ItemGroup> 
     89  <ItemGroup> 
     90    <Compile Include="Parempiammus.png"> 
     91      <Name>Parempiammus</Name> 
     92      <Importer>TextureImporter</Importer> 
     93      <Processor>TextureProcessor</Processor> 
     94    </Compile> 
     95  </ItemGroup> 
    7596  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    7697  <!--  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.