Changeset 2548


Ignore:
Timestamp:
2011-08-04 14:57:02 (8 years ago)
Author:
tenituun
Message:

Talletus.

Location:
2011/31/TeemuT/Diamond TD/Diamond TD
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TD/Peli.cs

    r2529 r2548  
    1010{ 
    1111    List<Vector> polku = new List<Vector>(); 
     12    List<GameObject> ruohoelementit = new List<GameObject>(); 
    1213    Vector[] reitti; 
    13  
     14    int montakoRiviaKentassa = 55; 
     15    int montakoSarakettaKentassa = 74; 
    1416    GameObject start; 
    1517    PhysicsObject maali; 
     18    Image ruohokuva = LoadImage("ruoho"); 
    1619 
    1720    bool asetetaanTykkia = false; 
     21    //double kuvaruudunLeveys = Screen.Width; 
     22    //double kuvaruudunKorkeus = Screen.Height; 
     23    double ruudunLeveys; 
     24    double ruudunKorkeus; 
    1825 
    1926    public override void Begin() 
     
    2229        TeeKayttoliittyma(); 
    2330        LuoPolku(); 
     31        /* 
     32        Timer ajastin = new Timer(); 
     33        ajastin.Interval = 5; 
     34        ajastin.Timeout += LahetaAalto; 
     35        ajastin.Start(10); 
     36         */ 
     37        Mouse.IsCursorVisible = true; 
     38    } 
     39         
     40 
     41    void LahetaAalto() 
     42    { 
    2443        Timer ajastin = new Timer(); 
    2544        ajastin.Interval = 0.2; 
    26         ajastin.Timeout += LuoViholline; 
     45        ajastin.Timeout += delegate { LuoVihollinen(3); }; 
    2746        ajastin.Start(10); 
    28         Mouse.IsCursorVisible = true; 
    2947    } 
    3048 
     
    3250    { 
    3351        Level.BackgroundColor = Color.ForestGreen; 
    34         TileMap ruudut = TileMap.FromLevelAsset("kentta"); 
     52        TileMap ruudut = TileMap.FromLevelAsset("kentta2");         
    3553        ruudut.SetTileMethod('=', LuoPalikka); 
    3654        ruudut.SetTileMethod('o', LuoPalikka); 
     
    3856        ruudut.SetTileMethod('s', LuoStartti); 
    3957        ruudut.SetTileMethod('l', LuoMaali); 
    40         ruudut.Execute(20, 20); 
     58        ruudut.SetTileMethod('r', LuoRuoho); 
     59        ruudunLeveys = Screen.Width / montakoSarakettaKentassa; 
     60        ruudunKorkeus = Screen.Height / montakoRiviaKentassa; 
     61        ruudut.Execute(ruudunLeveys, ruudunKorkeus); 
    4162        Level.CreateBorders(1.0, true); 
     63        Camera.ZoomToLevel(); 
     64    } 
     65    void LuoRuoho(Vector paikka, double leveys, double korkeus) 
     66    { 
     67        GameObject ruoho = new GameObject(leveys, korkeus); 
     68        ruoho.Position = paikka; 
     69        ruoho.Image = ruohokuva; 
     70        Add(ruoho); 
     71        ruohoelementit.Add(ruoho); 
     72 
    4273    } 
    4374 
    4475    void TeeKayttoliittyma() 
    4576    { 
    46         Widget tykki = new Widget(50, 50); 
    47         tykki.Top = Level.Top;         
    48         Add(tykki); 
    49         Mouse.ListenOn(tykki, MouseButton.Left, ButtonState.Pressed, TykkinappiPainettu, null, tykki); 
    50     } 
    51  
    52     void TykkinappiPainettu(Widget w) 
    53     {         
     77        Widget playnappula = new Widget(90, 90); 
     78        playnappula.Bottom = Screen.Bottom + 10; 
     79        playnappula.Left = Screen.Left + 20; 
     80        playnappula.Image = LoadImage("play"); 
     81        Add(playnappula); 
     82        Mouse.ListenOn(playnappula, MouseButton.Left, ButtonState.Pressed, LahetaAalto, null); 
     83 
     84        Widget tykkinappula = new Widget(90, 90); 
     85        tykkinappula.Left = playnappula.Right + 10; 
     86        tykkinappula.Bottom = playnappula.Bottom; 
     87        Add(tykkinappula); 
     88        Mouse.ListenOn(tykkinappula, MouseButton.Left, ButtonState.Pressed, NappiPainettu, null, tykkinappula); 
     89 
     90 
     91    } 
     92 
     93    void NappiPainettu(Widget w) 
     94    { 
     95        asetetaanTykkia = true; 
     96        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AsetaTykki, null, w); 
    5497        w.Color = Color.Black; 
    5598        // Voit muuttaa kuvaa 
    56         asetetaanTykkia = true; 
    57         Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AsetaTykki, null, w); 
    5899    } 
    59100 
     
    62103        if (asetetaanTykkia) 
    63104        { 
    64             GameObject tykki = new GameObject(20, 20); 
    65             Add(tykki); 
    66             tykki.Position = new Vector(Mouse.PositionOnWorld.X, Mouse.PositionOnWorld.Y); 
     105            GameObject allaolevaruoho = ruohoelementit[0]; 
     106            int i = 0; 
     107            while (i < ruohoelementit.Count) 
     108            { 
     109                if (Mouse.IsCursorOn(ruohoelementit[i])) 
     110                { 
     111                    allaolevaruoho = ruohoelementit[i]; 
     112                    LuoTykki(allaolevaruoho.Position); 
     113                    break; 
     114                } 
     115                i++; 
     116            } 
     117            w.Color = Color.White; 
    67118            asetetaanTykkia = false; 
    68             w.Color = Color.White; 
    69         } 
     119        } 
     120    } 
     121 
     122    void LuoTykki(Vector paikka) 
     123    { 
     124 
     125        GameObject tykki = new GameObject(ruudunLeveys, ruudunKorkeus); 
     126        Add(tykki); 
     127        tykki.Position = paikka; 
     128        // Ajastin, jonka avulla ammutaan 
     129        Timer ajastin = new Timer(); 
     130        ajastin.Interval = 0.2; 
     131        ajastin.Timeout += delegate { tykkiAmpuu(tykki); }; 
     132        ajastin.Start(); 
     133    } 
     134 
     135    void tykkiAmpuu(GameObject tykki) 
     136 
     137    { 
     138        PhysicsObject ammus = new PhysicsObject(5, 5, Shape.Circle); 
     139        Add(ammus); 
     140        ammus.Color = Color.Black; 
     141        ammus.Tag = "ammus"; 
     142        ammus.Position = tykki.Position; 
     143        ammus.Hit(new Vector(0, 1000)); 
     144 
     145        PhysicsObject vihu = EtsiLahinVihu(tykki.Position); 
     146 
     147    } 
     148 
     149    PhysicsObject EtsiLahinVihu(Vector position) 
     150    { 
     151        double pieninEtaisyys = 10000000.0; 
     152        PhysicsObject lahin = null; 
     153 
     154        foreach (PhysicsObject vihu in viholliset) 
     155        { 
     156            double etaisyys = Vector.Distance(vihu.Position, position); 
     157            if (etaisyys < pieninEtaisyys) 
     158            { 
     159                pieninEtaisyys = etaisyys; 
     160                lahin = vihu; 
     161            } 
     162        } 
     163 
     164        return lahin; 
    70165    } 
    71166 
     
    102197    } 
    103198 
    104     void LuoViholline() 
    105     { 
    106         PhysicsObject vih = new PhysicsObject(20, 20); 
    107         vih.Position = start.Position; 
     199    List<PhysicsObject> viholliset = new List<PhysicsObject>(); 
     200 
     201    void LuoVihollinen(int elamapisteet) 
     202    { 
     203        Vihollinen vihu = new Vihollinen(20, 20); 
     204        vihu.Elamat = elamapisteet; 
     205        vihu.Position = start.Position; 
     206        vihu.IgnoresCollisionResponse = true; 
     207        viholliset.Add(vihu); 
    108208 
    109209        PathFollowerBrain testiaivot = new PathFollowerBrain(); 
     
    112212        testiaivot.Loop = false; 
    113213 
    114         vih.Brain = testiaivot; 
    115         Add(vih); 
    116         vih.Color = Color.Red; 
    117         vih.Shape = Shape.Circle; 
     214        vihu.Brain = testiaivot; 
     215        Add(vihu); 
     216        vihu.Color = Color.Red; 
     217        vihu.Shape = Shape.Circle; 
     218        AddCollisionHandler(vihu, VihuOsui); 
     219    } 
     220 
     221    void VihuOsui(PhysicsObject vihu, PhysicsObject kohde) 
     222    { 
     223        if (kohde.Tag.ToString() == "ammus") 
     224        { 
     225            Vihollinen v = (Vihollinen)vihu; 
     226            v.Elamat--; // Vähennetään yksi elämäpiste 
     227            if (v.Elamat < 0) v.Destroy(); // Jos elämät menee alle 0 niin tuhotaan vihu 
     228        } 
    118229    } 
    119230 
    120231    void LuoPalikka(Vector paikka, double leveys, double korkeus) 
    121232    { 
    122         PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     233        GameObject palikka = new GameObject(leveys, korkeus); 
    123234        palikka.Position = paikka; 
    124235        palikka.Shape = Shape.Rectangle; 
     
    170281} 
    171282 
     283class Vihollinen : PhysicsObject 
     284{ 
     285    public int Elamat = 3; 
     286 
     287    public Vihollinen(double leveys, double korkeus) 
     288        : base(leveys, korkeus) 
     289    { 
     290    } 
     291} 
     292 
  • 2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TDContent/Diamond TDContent.contentproj

    r2529 r2548  
    5252    </Compile> 
    5353  </ItemGroup> 
     54  <ItemGroup> 
     55    <Compile Include="ruoho.png"> 
     56      <Name>ruoho</Name> 
     57      <Importer>TextureImporter</Importer> 
     58      <Processor>TextureProcessor</Processor> 
     59    </Compile> 
     60  </ItemGroup> 
     61  <ItemGroup> 
     62    <Compile Include="play.png"> 
     63      <Name>play</Name> 
     64      <Importer>TextureImporter</Importer> 
     65      <Processor>TextureProcessor</Processor> 
     66    </Compile> 
     67  </ItemGroup> 
     68  <ItemGroup> 
     69    <Compile Include="kentta2.txt"> 
     70      <Name>kentta2</Name> 
     71      <Importer>TextFileImporter</Importer> 
     72      <Processor>TextFileContentProcessor</Processor> 
     73    </Compile> 
     74  </ItemGroup> 
    5475  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    5576  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
  • 2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TDContent/kentta.txt

    r2529 r2548  
     1rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 
    12rrrrrrrrrrrrrrrrrrrrrroooooooooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 
    23rrrrrrrrrrrrrrrrrrrrrro aaaaaaaaaaaaaa orrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 
    3 rrrrrrrrrrrrrrrrrrrrrro a ooooooooo  a orrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 
    4 rrrrroooooooooooooooooo a orrrrrrro  a ooooooooooooooooooooooorrrrrrrrrrr 
     4rrrrroooooooooooooooooo a ooooooooo  a ooooooooooooooooooooooorrrrrrrrrrr 
    55rrrrro aaaaaaaaaaaaaaaaaa orrrrrrro  aaaaaaaaaaaaaaaaaaaaaa  orrrrrrrrrrr 
    66rrrrro a  ooooooooooooooooorrrrrrroooooooooooooooooooooo  a  orrrrrrrrrrr 
     
    1111rrrrro a  oooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrro  a  orrrrrrrrrrr 
    1212rrrrro aaaaaaaaaa  orrrrrroooooooooooooooooooooooooooooo  a  orrrrrrrrrrr 
    13 rrroooooooooooo a  orrrrrro  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  orrrrrrrrrrr 
     13rrrrroooooooooo a  orrrrrro  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  orrrrrrrrrrr 
    1414rrrrrrrrrrrrrro a  orrrrrro  a  oooooooooooooooooooooooooooooorrrrrrrrrrr 
    1515rrrrroooooooooo a  orrrrrro  a  orrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 
Note: See TracChangeset for help on using the changeset viewer.