Ignore:
Timestamp:
2011-08-05 12:22:50 (8 years ago)
Author:
tenituun
Message:

Talletus.

Location:
2011/31/TeemuT/Diamond TD/Diamond TD
Files:
1 added
2 edited

Legend:

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

    r2548 r2595  
    99public class Peli : PhysicsGame 
    1010{ 
     11    List<Label> valikonKohdat; 
    1112    List<Vector> polku = new List<Vector>(); 
    1213    List<GameObject> ruohoelementit = new List<GameObject>(); 
     
    1415    int montakoRiviaKentassa = 55; 
    1516    int montakoSarakettaKentassa = 74; 
     17    int vihujenElamat = 3; 
    1618    GameObject start; 
    1719    PhysicsObject maali; 
    1820    Image ruohokuva = LoadImage("ruoho"); 
     21    ScoreList topLista = new ScoreList(10, false, 0); 
     22 
    1923 
    2024    bool asetetaanTykkia = false; 
     
    2327    double ruudunLeveys; 
    2428    double ruudunKorkeus; 
     29    int tykinHinta = 500; 
     30    int pisteitaVihusta = 50; 
     31    IntMeter rahaMaara = new IntMeter(1000); 
     32    IntMeter elamaLaskuri = new IntMeter(50); 
     33    IntMeter aaltolaskin = new IntMeter(0); 
     34    SoundEffect ampuaani = LoadSoundEffect("kk"); 
     35 
     36 
    2537 
    2638    public override void Begin() 
    2739    { 
     40        Valikko();         
     41        if (DataStorage.Exists("pisteet.xml")) 
     42            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml"); 
     43 
     44    } 
     45 
     46    void Valikko() 
     47    { 
     48        ClearAll(); 
     49 
     50        valikonKohdat = new List<Label>(); 
     51 
     52        Label kohta1 = new Label("Aloita uusi peli"); 
     53        kohta1.Position = new Vector(0, 40); 
     54        valikonKohdat.Add(kohta1); 
     55 
     56        Label kohta2 = new Label("Lopeta"); 
     57        kohta2.Position = new Vector(0, -40); 
     58        valikonKohdat.Add(kohta2); 
     59 
     60        foreach (Label valikonKohta in valikonKohdat) 
     61        { 
     62            Add(valikonKohta); 
     63        } 
     64 
     65        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null); 
     66        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null); 
     67 
     68        Mouse.IsCursorVisible = true; 
     69        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); 
     70        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, ""); 
     71 
     72 
     73 
     74    } 
     75 
     76    void ValikossaLiikkuminen(AnalogState hiirenTila) 
     77    { 
     78        foreach (Label kohta in valikonKohdat) 
     79        { 
     80            if (Mouse.IsCursorOn(kohta)) 
     81            { 
     82                kohta.TextColor = Color.Red; 
     83            } 
     84            else 
     85            { 
     86                kohta.TextColor = Color.Black; 
     87            } 
     88 
     89        } 
     90    } 
     91 
     92    void AloitaPeli() 
     93    { 
     94        ClearAll(); 
    2895        TeeKentta(); 
    2996        TeeKayttoliittyma(); 
     97 
     98        vihujenElamat = 3; 
     99        pisteitaVihusta = 50; 
     100 
    30101        LuoPolku(); 
    31102        /* 
     
    36107         */ 
    37108        Mouse.IsCursorVisible = true; 
    38     } 
    39          
     109        // Tähän tulee kaikki kentän luomiset ym. alustukset... 
     110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon"); 
     111    } 
     112 
     113 
     114 
    40115 
    41116    void LahetaAalto() 
    42117    { 
     118        if (viholliset.Count != 0) return; 
    43119        Timer ajastin = new Timer(); 
    44120        ajastin.Interval = 0.2; 
    45         ajastin.Timeout += delegate { LuoVihollinen(3); }; 
    46         ajastin.Start(10); 
     121        ajastin.Timeout += delegate { LuoVihollinen(vihujenElamat); }; 
     122        ajastin.Start(5 + vihujenElamat * 2); 
     123        Timer.SingleShot(5, delegate { vihujenElamat++; }); 
     124        aaltolaskin.Value = aaltolaskin.Value + 1; 
    47125    } 
    48126 
     
    50128    { 
    51129        Level.BackgroundColor = Color.ForestGreen; 
    52         TileMap ruudut = TileMap.FromLevelAsset("kentta2");         
     130        TileMap ruudut = TileMap.FromLevelAsset("kentta2"); 
    53131        ruudut.SetTileMethod('=', LuoPalikka); 
    54132        ruudut.SetTileMethod('o', LuoPalikka); 
     
    88166        Mouse.ListenOn(tykkinappula, MouseButton.Left, ButtonState.Pressed, NappiPainettu, null, tykkinappula); 
    89167 
     168        Label rahaNaytto = new Label(); 
     169        rahaNaytto.Right = Screen.Right-100; 
     170        rahaNaytto.Bottom = Screen.Bottom; 
     171        Add(rahaNaytto); 
     172        rahaMaara.MinValue = 0; 
     173        rahaNaytto.Title = "Rahat"; 
     174        rahaNaytto.BindTo(rahaMaara); 
     175 
     176        Label elamaNaytto = new Label(); 
     177        elamaNaytto.Right = Screen.Right - 300; 
     178        elamaNaytto.Bottom = Screen.Bottom; 
     179        Add(elamaNaytto); 
     180        elamaLaskuri.MinValue = -1; 
     181        elamaNaytto.Title = "Elämät"; 
     182        elamaNaytto.BindTo(elamaLaskuri); 
     183 
     184        Label aaltonaytto = new Label(); 
     185        aaltonaytto.Right = Screen.Right - 500; 
     186        aaltonaytto.Bottom = Screen.Bottom; 
     187        Add(aaltonaytto); 
     188        aaltolaskin.MinValue = -1; 
     189        aaltonaytto.Title = "Aallot"; 
     190        aaltonaytto.BindTo(aaltolaskin); 
    90191 
    91192    } 
     
    101202    void AsetaTykki(Widget w) 
    102203    { 
    103         if (asetetaanTykkia) 
     204        if (asetetaanTykkia && rahaMaara.Value >= tykinHinta) 
    104205        { 
    105206            GameObject allaolevaruoho = ruohoelementit[0]; 
     
    111212                    allaolevaruoho = ruohoelementit[i]; 
    112213                    LuoTykki(allaolevaruoho.Position); 
     214                    rahaMaara.Value -= tykinHinta; 
    113215                    break; 
    114216                } 
    115217                i++; 
    116218            } 
    117             w.Color = Color.White; 
    118             asetetaanTykkia = false; 
    119         } 
     219        } 
     220        w.Color = Color.White; 
     221        asetetaanTykkia = false; 
     222 
    120223    } 
    121224 
     
    128231        // Ajastin, jonka avulla ammutaan 
    129232        Timer ajastin = new Timer(); 
    130         ajastin.Interval = 0.2; 
     233        ajastin.Interval = 0.4; 
    131234        ajastin.Timeout += delegate { tykkiAmpuu(tykki); }; 
    132235        ajastin.Start(); 
     
    134237 
    135238    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  
     239    { 
    145240        PhysicsObject vihu = EtsiLahinVihu(tykki.Position); 
    146241 
    147     } 
     242 
     243 
     244        if (vihu != null && !vihu.IsDestroyed) 
     245        { 
     246            PhysicsObject ammus = new PhysicsObject(5, 5, Shape.Circle); 
     247            ampuaani.Play(); 
     248            Add(ammus); 
     249            ammus.Color = Color.Black; 
     250            AddCollisionHandler(ammus, KasitteleAmmuksenTormaus); 
     251            ammus.Tag = "ammus"; 
     252            ammus.Position = tykki.Position; 
     253 
     254            Vector suunta = (vihu.Position - tykki.Position); 
     255            double voima = 1000; 
     256 
     257            ammus.Hit((suunta / suunta.Magnitude) * voima); 
     258        } 
     259 
     260    } 
     261 
     262    void KasitteleAmmuksenTormaus(PhysicsObject ammus, PhysicsObject kohde) 
     263    { 
     264        ammus.Destroy(); 
     265    } 
     266 
     267 
     268 
    148269 
    149270    PhysicsObject EtsiLahinVihu(Vector position) 
     
    155276        { 
    156277            double etaisyys = Vector.Distance(vihu.Position, position); 
    157             if (etaisyys < pieninEtaisyys) 
     278            if (!vihu.IsDestroyed && etaisyys < pieninEtaisyys) 
    158279            { 
    159280                pieninEtaisyys = etaisyys; 
     
    194315    void KasitteleMaalinTormaus(PhysicsObject maali, PhysicsObject vih) 
    195316    { 
     317        elamaLaskuri.Value = elamaLaskuri.Value - 1; 
     318        viholliset.Remove(vih); 
     319 
     320        if (elamaLaskuri.Value == 0) 
     321        { 
     322            elamaLaskuri.Value = -1; 
     323            Timer.SingleShot(4, HighScore); 
     324 
     325            Label havio = new Label("Game over"); 
     326            Add(havio); 
     327        } 
    196328        vih.Destroy(); 
    197329    } 
    198330 
    199331    List<PhysicsObject> viholliset = new List<PhysicsObject>(); 
     332 
     333    void HighScore() 
     334    { 
     335         
     336        HighScoreWindow topIkkuna = new HighScoreWindow("Pelin nimi tai jotain", 
     337                             "Parhaat pisteet", 
     338                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:", 
     339                             topLista, aaltolaskin.Value); 
     340        topIkkuna.Closed += TallennaPisteet; 
     341        Add(topIkkuna); 
     342    } 
     343    void TallennaPisteet(Window sender) 
     344    { 
     345        DataStorage.Save<ScoreList>(topLista, "pisteet.xml"); 
     346        Valikko(); 
     347    } 
     348 
    200349 
    201350    void LuoVihollinen(int elamapisteet) 
     
    225374            Vihollinen v = (Vihollinen)vihu; 
    226375            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 
     376            if (v.Elamat < 0) 
     377            { 
     378                v.Destroy(); // Jos elämät menee alle 0 niin tuhotaan vihu 
     379                viholliset.Remove(v); 
     380                rahaMaara.Value += pisteitaVihusta; 
     381            } 
    228382        } 
    229383    } 
  • 2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TDContent/Diamond TDContent.contentproj

    r2548 r2595  
    7373    </Compile> 
    7474  </ItemGroup> 
     75  <ItemGroup> 
     76    <Compile Include="kk.wav"> 
     77      <Name>kk</Name> 
     78      <Importer>WavImporter</Importer> 
     79      <Processor>SoundEffectProcessor</Processor> 
     80    </Compile> 
     81  </ItemGroup> 
    7582  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    7683  <!--  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.