Ignore:
Timestamp:
2016-06-23 13:13:08 (3 years ago)
Author:
tesatapa
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2016/25/ToukoP/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs

    r7475 r7500  
    99public class FysiikkaPeli1 : PhysicsGame 
    1010{ 
    11     EasyHighScore TopLista = new EasyHighScore(); 
    12     IntMeter pelaajanpisteet; 
     11    AssaultRifle raketinAse; 
     12    Image savunkuva = LoadImage("savu"); 
     13    IntMeter pelaajanpisteet = new IntMeter(0); 
     14 
     15    ScoreList TopLista; 
    1316    PhysicsObject raketti; 
    1417    Vector pelaajanAlkuPaikka; 
     18    string[] kentat = new string[] { "Kentta1", "Kentta2", "Kentta3", "Kentta4", "Kentta5", "Kentta6" }; 
     19    int kenttaMenossa = 0; 
     20    double raketinNopeus = 75.0; 
    1521    public override void Begin() 
    16     { 
    17  
     22 
     23    { 
     24        TopLista = new ScoreList(10, true, 10000); 
     25        TopLista = DataStorage.TryLoad<ScoreList>(TopLista, "pisteet2.xml"); 
    1826        AlkuValikko(); 
    19          
     27 
     28 
     29 
    2030    } 
    2131 
     
    3141        raketti.RotateImage = true; 
    3242        Image kuva = LoadImage("raketti"); 
    33  
     43        raketti.CollisionIgnoreGroup = 2; 
    3444        raketti.Image = kuva; 
    3545        Timer ajastin = new Timer(); 
    36         ajastin.Interval = 0.05; 
     46        ajastin.Interval = 0.10; 
    3747        ajastin.Timeout += asetanopeus; 
    3848        ajastin.Start(); 
    3949        AddCollisionHandler(raketti, "vihollinen", TormaaViholliseen); 
    40  
    41  
    42     } 
    43  
     50        AddCollisionHandler(raketti, "maali", tormaamaaliin); 
     51        AddCollisionHandler(raketti, "boosti", keraaBoosti); 
     52        AddCollisionHandler(raketti, "hidaste", keraaHidaste); 
     53        AddCollisionHandler(raketti, "asteroidi", TormaaViholliseen); 
     54        Ase(); 
     55        raketti.Add(raketinAse); 
     56 
     57    } 
     58    void tormaamaaliin(PhysicsObject raketti, PhysicsObject maali) 
     59    { 
     60        if (kentat.Length > kenttaMenossa +1) 
     61        { SeuraavaKentta(); } 
     62 
     63        else 
     64        { 
     65            ClearAll(); 
     66            TarkistaPaasitkoListalle(); 
     67        } 
     68    } 
    4469    void LuoKentta() 
    4570    { 
    4671        Level.Background.Color = Color.White; 
    47         TileMap kentta = TileMap.FromLevelAsset("Kentta1"); 
     72        TileMap kentta = TileMap.FromLevelAsset(kentat[kenttaMenossa]); 
    4873        kentta.SetTileMethod('p', luoraketti); 
    4974        kentta.SetTileMethod('#', LisaaTaso); 
     75        kentta.SetTileMethod('m', LisaaMaali); 
     76        kentta.SetTileMethod('b', Boosti); 
     77        kentta.SetTileMethod('h', Hidaste); 
     78        kentta.SetTileMethod('s', LuoSavu); 
     79        kentta.SetTileMethod('v', LuoVihollinen); 
     80        kentta.SetTileMethod('a', LuoAsteroidi); 
    5081        kentta.Execute(); 
    51         //  kentta.SetTileMethod("m", VaihdaLevel); 
     82 
     83 
    5284    } 
    5385    void LisaaTaso(Vector paikka, double leveys, double korkeus) 
     
    5890        Add(taso); 
    5991        taso.Tag = "vihollinen"; 
     92 
     93    } 
     94    void LisaaMaali(Vector paikka, double leveys, double korkeus) 
     95    { 
     96        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     97        maali.Position = paikka; 
     98        maali.Color = Color.Blue; 
     99        Add(maali); 
     100        maali.Tag = "maali"; 
     101        maali.Color = Color.Pink; 
     102        maali.CollisionIgnoreGroup = 5; 
     103 
     104 
    60105    } 
    61106    void LuoOhjaimet() 
     
    65110        Keyboard.Listen(Key.Right, ButtonState.Down, kaanna, "", -1.7); 
    66111        Keyboard.Listen(Key.Left, ButtonState.Down, kaanna, "", 1.7); 
    67  
     112        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, null, raketinAse); 
    68113 
    69114    } 
     
    79124    void asetanopeus() 
    80125    { 
    81         raketti.Velocity = Vector.FromLengthAndAngle(75.0, raketti.Angle); 
    82  
     126        raketti.Velocity = Vector.FromLengthAndAngle(raketinNopeus, raketti.Angle); 
    83127    } 
    84128 
     
    87131        //pelaaja.Destroy(); 
    88132        Pisteet(); 
    89         aloitaalusta(); 
     133        ClearAll(); 
     134        raketinNopeus = 75.0; 
     135        AloitaPeli(); 
     136        //aloitaalusta(); 
     137        DoNextUpdate(delegate { raketti.StopAngular(); }); 
    90138    } 
    91139    void aloitaalusta() 
    92140    { 
     141        raketti.StopAngular(); 
     142        raketinNopeus = 75.0; 
    93143        raketti.Position = pelaajanAlkuPaikka; 
    94144        raketti.Velocity = Vector.Zero; 
    95145        raketti.Angle = Angle.FromDegrees(90); 
     146 
     147 
     148 
    96149    } 
    97150    void Lisaalaskuri() 
    98151    { 
    99         pelaajanpisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
    100     } 
    101     IntMeter LuoPisteLaskuri(double x, double y) 
    102     { 
    103         IntMeter laskuri = new IntMeter(0); 
    104         laskuri.MaxValue = 10; 
     152        IntMeter laskuri; 
     153        if (pelaajanpisteet == null) 
     154        { 
     155            laskuri = new IntMeter(0); 
     156        } 
     157        else 
     158        { 
     159            laskuri = pelaajanpisteet; 
     160        } 
     161        pelaajanpisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0, laskuri); 
     162    } 
     163    IntMeter LuoPisteLaskuri(double x, double y, IntMeter laskuri) 
     164    { 
     165 
    105166        Label naytto = new Label(); 
    106167        naytto.BindTo(laskuri); 
     
    123184    void AlkuValikko() 
    124185    { 
     186 
    125187        MultiSelectWindow AlkuValikko = new MultiSelectWindow("Pelin alkuvalikko", 
    126188        "Aloita peli", "Parhaat pisteet", "Lopeta"); 
     
    133195        Mouse.IsCursorVisible = true; 
    134196    } 
    135  void Pelaajakuoli() 
    136     { 
    137         raketti.Destroy(); 
    138         TopLista.EnterAndShow(pelaajanpisteet.value); 
    139         TopLista.HighScoreWindow.Closed += Aloitapeli; 
    140     } 
    141         
    142                  
    143  
    144  
    145  
    146  
    147  
    148  
    149         void Parhaatpisteet() 
    150     { 
    151  
    152     } 
     197 
     198 
     199    public void Aloitapeli(Window sender) 
     200    { 
     201        //... 
     202    } 
     203 
     204 
     205 
     206    void TarkistaPaasitkoListalle() 
     207    { 
     208        HighScoreWindow TopIkkuna = new HighScoreWindow("Parhaat pisteet", "Onnittelut Paasit Listalle", 
     209           TopLista, pelaajanpisteet.Value); 
     210 
     211        TopIkkuna.Closed += TallennaPisteet; 
     212        Add(TopIkkuna); 
     213    } 
     214 
     215 
     216 
     217    void Parhaatpisteet() 
     218    { 
     219        HighScoreWindow TopIkkuna = new HighScoreWindow( 
     220            "Parhaat pisteet", 
     221 
     222            TopLista); 
     223        TopIkkuna.Closed += delegate { AlkuValikko(); }; 
     224        Add(TopIkkuna); 
     225    } 
     226 
     227 
    153228    void AloitaPeli() 
    154229    { 
     230        MediaPlayer.Play("TaustaMusa"); 
     231        //MediaPlayer.PlayFromFile("TaustaMusa.mp3"); 
     232        MediaPlayer.IsRepeating = true; 
    155233        LuoKentta(); 
    156234        Lisaalaskuri(); 
     
    159237    } 
    160238 
     239 
     240    void TallennaPisteet(Window sender) 
     241    { 
     242        DataStorage.Save<ScoreList>(TopLista, "pisteet.xml"); 
     243        pelaajanpisteet.Value = 0; 
     244        AlkuValikko(); 
     245 
     246    } 
     247 
     248    void SeuraavaKentta() 
     249    { 
     250        ClearAll(); 
     251        kenttaMenossa++; 
     252        if (kenttaMenossa >= kentat.Length) { kenttaMenossa = 0; AlkuValikko(); } 
     253        else 
     254        { 
     255            AloitaPeli(); 
     256        } 
     257 
     258    } 
     259    void Boosti(Vector paikka, double leveys, double korkeus) 
     260    { 
     261 
     262        PhysicsObject boosti = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     263        boosti.IgnoresCollisionResponse = true; 
     264        Add(boosti); 
     265        boosti.Position = paikka; 
     266        boosti.Tag = "boosti"; 
     267        boosti.Color = Color.Red; 
     268 
     269    } 
     270    void keraaBoosti(PhysicsObject pelaaja, PhysicsObject boosti) 
     271    { 
     272        raketinNopeus = 270.0; 
     273        Timer.SingleShot(1.0, delegate { raketinNopeus = 75.0; }); 
     274    } 
     275    void Hidaste(Vector paikka, double leveys, double korkeus) 
     276    { 
     277 
     278        PhysicsObject hidaste = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     279        hidaste.IgnoresCollisionResponse = true; 
     280        Add(hidaste); 
     281        hidaste.Position = paikka; 
     282        hidaste.Tag = "hidaste"; 
     283        hidaste.Color = Color.Green; 
     284 
     285    } 
     286    void keraaHidaste(PhysicsObject pelaaja, PhysicsObject hidaste) 
     287    { 
     288        raketinNopeus = 25.0; 
     289        Timer.SingleShot(2.0, delegate { raketinNopeus = 75; }); 
     290    } 
     291    void LuoSavu(Vector paikka, double leveys, double korkeus) 
     292    { 
     293        Smoke savu = new Smoke(); 
     294        savu.Position = paikka; 
     295        Add(savu); 
     296        savu.AlphaAmount = 0.08; 
     297        //savu.Image = LoadImage("raketti"); 
     298 
     299 
     300    } 
     301    void LuoVihollinen(Vector paikka, double leveys, double korkeus) 
     302    { 
     303        PhysicsObject Viholllinen = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     304        Viholllinen.Position = paikka; 
     305        Viholllinen.Color = Color.Brown; 
     306        Add(Viholllinen); 
     307        Viholllinen.CollisionIgnoreGroup = 5; 
     308        Timer ajastin = new Timer(); 
     309        ajastin.Interval = 2.1; 
     310        ajastin.Timeout += delegate { ammukohti(Viholllinen, raketti); }; 
     311        ajastin.Start(); 
     312    } 
     313    void ammukohti(PhysicsObject vihollinen, PhysicsObject pelaaja) 
     314    { 
     315 
     316        Vector suunta = pelaaja.Position - vihollinen.Position; 
     317        PhysicsObject ammus = new PhysicsObject(15, 15); 
     318        ammus.Position = vihollinen.Position; 
     319        ammus.CollisionIgnoreGroup = vihollinen.CollisionIgnoreGroup; 
     320        Add(ammus); 
     321        ammus.Velocity = suunta.Normalize() * 500; 
     322        ammus.Tag = "vihollinen"; 
     323        AddCollisionHandler(ammus, CollisionHandler.DestroyObject); 
     324        ammus.Color = Color.Orange; 
     325 
     326    } 
     327    void Ase() 
     328    { 
     329        raketinAse = new AssaultRifle(0, 0); 
     330        raketinAse.Ammo.Value = 1000; 
     331        raketinAse.ProjectileCollision = AmmusOsui; 
     332    } 
     333    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     334    { 
     335 
     336    } 
     337    void AmmuAseella(AssaultRifle ase) 
     338    { 
     339        PhysicsObject ammus = ase.Shoot(); 
     340        if (ammus != null) 
     341        { 
     342 
     343            ammus.CollisionIgnoreGroup = 5; 
     344            AddCollisionHandler(ammus, ammustormaa); 
     345        } 
     346    } 
     347    void ammustormaa(PhysicsObject ammus, PhysicsObject kohde) 
     348    { 
     349        ammus.Destroy(); 
     350        if ((String)kohde.Tag == "tuhoutuva") 
     351        { 
     352            kohde.Destroy(); 
     353        } 
     354    } 
     355    void LuoAsteroidi(Vector paikka, double leveys, double korkeus) 
     356    { 
     357        PhysicsObject asteroidi = new PhysicsObject(70.0, 75.0); 
     358        asteroidi.Tag = "tuhoutuva"; 
     359        asteroidi.Color = Color.Black; 
     360        Add(asteroidi); 
     361        asteroidi.Position = paikka; 
     362 
     363 
     364 
     365    } 
    161366} 
     367 
     368 
Note: See TracChangeset for help on using the changeset viewer.