Changeset 4094


Ignore:
Timestamp:
2013-06-12 14:59:04 (6 years ago)
Author:
juiitamm
Message:

Talletus.

Location:
2013/24/AamosR/GeneerinenAvaruuslentely/GeneerinenAvaruuslentely
Files:
6 added
2 edited

Legend:

Unmodified
Added
Removed
  • 2013/24/AamosR/GeneerinenAvaruuslentely/GeneerinenAvaruuslentely/GeneerinenAvaruuslentely/GeneerinenAvaruuslentely.cs

    r4075 r4094  
    77using Jypeli.Widgets; 
    88 
     9//TO DO-list: Tee health packit 
     10 
     11 
     12class alus : PhysicsObject 
     13{ 
     14    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3); 
     15    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     16 
     17    public alus(double leveys, double korkeus) 
     18        : base(leveys, korkeus) 
     19    { 
     20        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     21    } 
     22} 
     23 
    924public class GeneerinenAvaruuslentely : PhysicsGame 
    1025{ 
     26    EasyHighScore topLista = new EasyHighScore(); 
    1127    Image aluskuva = LoadImage("alus"); 
    1228    Image asteroidikuva = LoadImage("asteroidi"); 
    1329    Image tausta = LoadImage("tausta"); 
    1430    Image vihollinenkuva = LoadImage("vihollinen"); 
    15     PhysicsObject alus; 
     31    SoundEffect hurt = LoadSoundEffect("hit"); 
     32    SoundEffect shoot = LoadSoundEffect("shoot"); 
     33    SoundEffect explosion = LoadSoundEffect("explosion"); 
     34 
     35 
     36    alus alus; 
    1637    PhysicsObject asteroidi; 
    17     PhysicsObject vihollinen; 
     38    //PhysicsObject vihollinen; 
    1839    IntMeter pisteLaskuri; 
     40    IntMeter ElamaLaskuri; 
     41     
     42 
    1943     
    2044     
     
    2448        // TODO: Kirjoita ohjelmakoodisi tähän 
    2549        //IsFullScreen = true; 
     50        ClearAll(); 
     51        Level.BackgroundColor = Color.Black; 
     52 
    2653        SetWindowSize(1920, 1080, true); 
     54        MultiSelectWindow valikko = new MultiSelectWindow("Generic Space Game", "Start Game", "High Score", "Quit"); 
     55        //valikko.ItemSelected += PainettiinValikonNappia; 
     56         
     57        valikko.Color = Color.SkyBlue; 
     58         
     59        valikko.BorderColor = Color.Black; 
     60        valikko.AddItemHandler(0, AloitaPeli); 
     61        valikko.AddItemHandler(1, ParhaatPisteet); 
     62        valikko.AddItemHandler(2, ConfirmExit); 
     63         
     64        Add(valikko); 
     65         
     66    } 
     67 
     68    void ParhaatPisteet() 
     69    { 
     70        topLista.Show(); 
     71        topLista.HighScoreWindow.Closed += delegate { Begin(); }; 
     72    } 
     73     
     74    void AloitaPeli() 
     75    { 
     76        ClearAll(); 
     77 
     78        MediaPlayer.Play("8bit Dungeon Boss"); 
    2779        LuoKentta(); 
    2880        AsteroidiAjastin(); 
     
    3082        AsetaOhjaimet(); 
    3183        LuoPisteLaskuri(); 
    32          
    33  
    34         if (alus.Y > Level.Top) 
    35         { 
    36             alus.Velocity = Vector.Zero; 
    37             return; 
    38         } 
     84        LuoElamaLaskuri(); 
     85    } 
     86 
     87    void LuoElamaLaskuri() 
     88    { 
     89        ElamaLaskuri = new IntMeter(5, 0, 10); 
     90 
     91        Label ElamaNaytto = new Label(); 
     92        ElamaNaytto.X = Screen.Left + 100; 
     93        ElamaNaytto.Y = Screen.Top - 100; 
     94        ElamaNaytto.TextColor = Color.White; 
     95        ElamaNaytto.Title = "HP"; 
     96        ElamaNaytto.BindTo(ElamaLaskuri); 
     97         
     98        ElamaLaskuri.LowerLimit +=  ElamaLoppui; 
     99        ElamaLaskuri.LowerLimit += ElamaLaskuri.Reset; 
     100        //ElamaLaskuri.LowerLimit += topLista.EnterAndShow(pisteLaskuri.Value); 
     101        //ElamaLaskuri.LowerLimit += topLista.HighScoreWindow.Closed += Begin; 
     102 
     103        Add(ElamaNaytto); 
     104 
     105 
     106    } 
     107 
     108    void ElamaLoppui() 
     109    { 
     110        alus.Destroy(); 
     111        explosion.Play(); 
     112        //Begin(); 
     113        topLista.EnterAndShow(pisteLaskuri.Value); 
     114        topLista.HighScoreWindow.Closed += delegate { Begin(); }; 
     115         
     116         
    39117    } 
    40118 
     
    53131        pisteNaytto.TextColor = Color.White; 
    54132        //pisteNaytto.Color = Color.White; 
    55         pisteNaytto.Title = "Pisteet"; 
     133        pisteNaytto.Title = "Points"; 
    56134         
    57135 
     
    64142    void LuoKentta() 
    65143    { 
    66         alus = new PhysicsObject(100, 100); 
     144        Level.Width = Screen.Width; 
     145        Level.Height = Screen.Height; 
     146        Level.CreateBorders(); 
     147         
     148        alus = new alus(100, 100); 
    67149        alus.Shape = Shape.Rectangle; 
    68150        alus.X = 0; 
     
    71153        alus.AngularDamping = 0.5; 
    72154        alus.LinearDamping = 0.95; 
     155        alus.ElamaLaskuri.Value--; 
    73156 
    74157        Level.Background.Image = tausta; 
     
    117200    void kuolema(PhysicsObject alus, PhysicsObject vihollinen) 
    118201    { 
    119         alus.Destroy(); 
    120         pisteLaskuri.Reset(); 
    121     } 
     202        hurt.Play(); 
     203        ElamaLaskuri.Value -= 1; 
     204        vihollinen.Destroy(); 
     205    } 
     206 
     207         
     208     
    122209 
    123210    void LisaaAsteroidi() 
     
    133220        asteroidi.Image = asteroidikuva; 
    134221        asteroidi.Tag = "vihollinen"; 
     222        asteroidi.IgnoresCollisionResponse = true; 
    135223        Add(asteroidi); 
    136224        Angle asteroidikulma = (Vector.Zero - asteroidi.Position).Angle; 
     
    150238    { 
    151239        Timer ajastin = new Timer(); 
    152         ajastin.Interval = 1.5; 
     240        ajastin.Interval = 7; 
    153241        ajastin.Timeout += LisaaVihollinen; 
    154242        ajastin.Start(); 
     
    158246    { 
    159247        Vector kentanPiste = Vector.FromLengthAndAngle(Level.Width + 200, RandomGen.NextAngle()); 
    160         vihollinen = new PhysicsObject(150, 150); 
     248        PhysicsObject vihollinen = new PhysicsObject(150, 150); 
    161249        vihollinen.Position = kentanPiste; 
    162250        vihollinen.Shape = Shape.Circle; 
     
    164252        vihollinen.Image = vihollinenkuva; 
    165253        vihollinen.Tag = "vihollinen"; 
     254        //vihollinen.Tag = "vihu"; 
     255        vihollinen.IgnoresCollisionResponse = true; 
     256        vihollinen.MaximumLifetime = TimeSpan.FromSeconds(10); 
     257 
     258        AssaultRifle pelaajan1Ase = new AssaultRifle(30, 10); 
     259        pelaajan1Ase.IsVisible = false; 
     260         
     261        pelaajan1Ase.InfiniteAmmo = true; 
     262        pelaajan1Ase.Power.DefaultValue = 200; 
     263        pelaajan1Ase.Power.Value = 200; 
     264        pelaajan1Ase.ProjectileCollision = AmmusOsui; 
     265        vihollinen.Add(pelaajan1Ase); 
     266 
    166267        Add(vihollinen); 
    167268        Angle vihollinenkulma = (Vector.Zero - vihollinen.Position).Angle; 
    168         Vector vihollinenvector = Vector.FromLengthAndAngle(500, RandomGen.NextAngle(vihollinenkulma - Angle.FromDegrees(50), (vihollinenkulma + Angle.FromDegrees(50)))); 
     269        Vector vihollinenvector = Vector.FromLengthAndAngle(500, RandomGen.NextAngle(vihollinenkulma - Angle.FromDegrees(10), (vihollinenkulma + Angle.FromDegrees(10)))); 
     270         
    169271        vihollinen.Hit(vihollinenvector); 
    170272 
     273        Timer ajastin = new Timer(); 
     274        ajastin.Interval = 5; 
     275        ajastin.Timeout += delegate { VihollinenAmpuu(vihollinen, pelaajan1Ase, ajastin); }; 
     276        ajastin.Start(); 
     277 
     278    } 
     279 
     280    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     281    { 
     282        if (kohde == alus) 
     283        { 
     284            ElamaLaskuri.Value -= 1; 
     285            hurt.Play(); 
     286             
     287        } 
     288 
     289        ammus.Destroy(); 
     290    } 
     291 
     292    void VihollinenAmpuu(PhysicsObject vihollinen, AssaultRifle ase, Timer ajastin) 
     293    { 
     294        if (vihollinen.IsDestroyed) 
     295        { 
     296            ajastin.Stop(); 
     297        } 
     298        Vector suunta = (alus.Position - vihollinen.Position).Normalize(); 
     299        ase.Angle = suunta.Angle; 
     300        PhysicsObject ammus = ase.Shoot(); 
     301 
     302        if (ammus != null) 
     303        { 
     304            ammus.IgnoresCollisionResponse = true; 
     305        } 
    171306    } 
    172307 
    173308    void Ammu() 
    174309    { 
     310        shoot.Play(); 
    175311        PhysicsObject ammus = new PhysicsObject(10, 10); 
    176312         
     
    213349    { 
    214350        vihollinen.Destroy(); 
     351        hurt.Play(); 
    215352        ammus.Destroy(); 
    216353 
     
    218355         
    219356    } 
     357 
     358    void asteroidiKuolema(PhysicsObject ammus, PhysicsObject asteroidi) 
     359    { 
     360        asteroidi.Destroy(); 
     361        ammus.Destroy(); 
     362 
     363        pisteLaskuri.Value += 5; 
     364    } 
    220365} 
  • 2013/24/AamosR/GeneerinenAvaruuslentely/GeneerinenAvaruuslentely/GeneerinenAvaruuslentelyContent/GeneerinenAvaruuslentelyContent.contentproj

    r4075 r4094  
    7373    </Compile> 
    7474  </ItemGroup> 
     75  <ItemGroup> 
     76    <Compile Include="8bit Dungeon Boss.mp3"> 
     77      <Name>8bit Dungeon Boss</Name> 
     78      <Importer>Mp3Importer</Importer> 
     79      <Processor>SongProcessor</Processor> 
     80    </Compile> 
     81  </ItemGroup> 
     82  <ItemGroup> 
     83    <Compile Include="hit.wav"> 
     84      <Name>hit</Name> 
     85      <Importer>WavImporter</Importer> 
     86      <Processor>SoundEffectProcessor</Processor> 
     87    </Compile> 
     88  </ItemGroup> 
     89  <ItemGroup> 
     90    <Compile Include="shoot.wav"> 
     91      <Name>shoot</Name> 
     92      <Importer>WavImporter</Importer> 
     93      <Processor>SoundEffectProcessor</Processor> 
     94    </Compile> 
     95  </ItemGroup> 
     96  <ItemGroup> 
     97    <Compile Include="explosion.wav"> 
     98      <Name>explosion</Name> 
     99      <Importer>WavImporter</Importer> 
     100      <Processor>SoundEffectProcessor</Processor> 
     101    </Compile> 
     102  </ItemGroup> 
    75103  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    76104  <!--  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.