Changeset 4125 for 2013/24/IlariR


Ignore:
Timestamp:
2013-06-13 15:06:11 (6 years ago)
Author:
ilkarist
Message:

Talletus.

Location:
2013/24/IlariR/Robot attack/Robot attack
Files:
9 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2013/24/IlariR/Robot attack/Robot attack/Robot attack/Robot_attack.cs

    r4092 r4125  
    1515    Image avainkuva = LoadImage("avain"); 
    1616    Image lukkokuva = LoadImage("lukko"); 
     17    Image teleporttikuva = LoadImage("teleportti"); 
     18    Image muurikuva = LoadImage("muuri"); 
     19    Image Vihukuva = LoadImage("PaaVihollinen"); 
    1720    SoundEffect ampuminen = LoadSoundEffect("ampuminen"); 
    1821    SoundEffect rajahdysaani = LoadSoundEffect("rajahdys2"); 
    1922    SoundEffect robotaani = LoadSoundEffect("robotaani"); 
     23    SoundEffect NUKEaani = LoadSoundEffect("NUKEsound"); 
    2024 
    2125    Robot robot; 
     
    2327    IntMeter pisteLaskuri; 
    2428    EasyHighScore topLista = new EasyHighScore(); 
    25     
     29    int kenttaNro = 1; 
    2630 
    2731    public override void Begin() 
     
    3135 
    3236    void Aloitapeli() 
     37    { 
     38        pisteLaskuri = new IntMeter(0); 
     39         
     40 
     41        AlustaKentta(); 
     42         
     43 
     44    } 
     45 
     46 
     47     void AlustaKentta() 
    3348    { 
    3449        ClearAll(); 
     
    3752        LuoPistelaskuri(); 
    3853        Mouse.IsCursorVisible = true; 
    39          
     54 
    4055        robotaani.Play(); 
    41          
    42         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    43         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    4456    } 
    4557 
     
    6981        Keyboard.Listen(Key.Space, ButtonState.Released, AmmuAseella, null, ase, 400.0); 
    7082 
     83        Keyboard.Listen(Key.F10, ButtonState.Pressed, delegate { 
     84            PaasetSeuraavaanTasoon(robot, null); 
     85        }, null); 
     86 
     87        Keyboard.Listen(Key.F11, ButtonState.Pressed, Nuke, null); 
     88 
    7189        Keyboard.Listen(Key.Left, ButtonState.Down, TahtaaNappaimella, null, 25000); 
    7290        Keyboard.Listen(Key.Right, ButtonState.Down, TahtaaNappaimella, null, -25000); 
    7391        //Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella"); 
     92 
     93        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     94        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     95    } 
     96 
     97    void Nuke() 
     98    { 
     99        NUKEaani.Play(); 
     100        Timer.SingleShot(14.5, delegate { 
     101            foreach (PhysicsObject v in GetObjectsWithTag("vihollinen")) 
     102            { 
     103                TuhoaJaRajahda(v); 
     104            } 
     105 
     106            Explosion rajahdys = new Explosion(400); 
     107            rajahdys.Sound = rajahdysaani; 
     108            rajahdys.Position = robot.Position + RandomGen.NextVector(100, 200); 
     109            Add(rajahdys); 
     110        }); 
    74111    } 
    75112 
     
    108145    void LuoPistelaskuri() 
    109146    { 
    110         pisteLaskuri = new IntMeter(0); 
    111  
    112147        Label pisteNaytto = new Label(); 
    113148        pisteNaytto.X = Screen.Left + 100; 
     
    151186 
    152187    } 
     188    void LuoPääVihollinen(Vector paikka, double leveys, double korkeus) 
     189    { 
     190        Robot vihollinen = new Robot(leveys * 2.5, korkeus * 2.5, 100); 
     191        vihollinen.Position = paikka; 
     192        vihollinen.Tag = "vihollinen"; 
     193        vihollinen.Image = Vihukuva; 
     194        vihollinen.CollisionIgnoreGroup = 3; 
     195        Timer ajastin = new Timer(); 
     196        ajastin.Interval = 0.05; 
     197        vihollinen.Destroyed += delegate { pisteLaskuri.AddValue(1000); }; 
     198        ajastin.Timeout += 
     199            delegate 
     200            { 
     201                if (vihollinen.IsDestroyed) 
     202                { 
     203                    ajastin.Stop(); return; 
     204                } 
     205                AmmuAseella(vihollinen, 700); 
     206            }; 
     207        ajastin.Start(); 
     208 
     209        Timer latausajastin = new Timer(); 
     210        latausajastin.Interval = 5.0; 
     211        latausajastin.Timeout += 
     212            delegate 
     213            { 
     214                if (ajastin.Enabled) 
     215                { 
     216                    ajastin.Pause(); 
     217                } 
     218                else 
     219                { 
     220                    ajastin.Start(); 
     221                } 
     222            }; 
     223        latausajastin.Start(); 
     224 
     225        FollowerBrain aivot = new FollowerBrain("Pelaaja"); 
     226        vihollinen.Brain = aivot; 
     227        aivot.TurnWhileMoving = true; 
     228        aivot.Speed = 0; 
     229        vihollinen.Elamat.LowerLimit += delegate { TuhoaJaRajahda(vihollinen); }; 
     230        Add(vihollinen); 
     231    } 
     232 
    153233    void AmmuAseella(PhysicsObject obj, double ammuksenNopeus) 
    154234    { 
     
    175255        } 
    176256 
     257        if (kohde is Muuri) 
     258        { 
     259            ((Muuri)kohde).ElamaLaskuri.AddValue(-1); 
     260        } 
    177261 
    178262        if (!(kohde is Robot)) return; 
     
    185269    void LuoKentta() 
    186270    { 
    187         ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1"); 
     271        if(kenttaNro == 3) 
     272        { 
     273            Label kenttaRuutu = new Label(700, 500); 
     274            kenttaRuutu.Text = "Big Boss!"; 
     275            kenttaRuutu.Color = Color.Transparent; 
     276            kenttaRuutu.TextScale = new Vector(7, 7); 
     277            kenttaRuutu.Position = new Vector(-300, 300); 
     278            kenttaRuutu.TextColor = Color.Turquoise; 
     279            Add(kenttaRuutu); 
     280            Timer ajastin = new Timer(); 
     281            ajastin.Interval = 1; 
     282            ajastin.Start(); 
     283            ajastin.Timeout += delegate { kenttaRuutu.Destroy(); }; 
     284 
     285        } 
     286 
     287        if (kenttaNro == 4) 
     288        { 
     289            Label kenttaRuutu = new Label(700, 500); 
     290            kenttaRuutu.Text = "VOITIT PELIN!"; 
     291            kenttaRuutu.Color = Color.Transparent; 
     292            kenttaRuutu.TextScale = new Vector(7, 7); 
     293            kenttaRuutu.Position = new Vector(-300, 300); 
     294            kenttaRuutu.TextColor = Color.Turquoise; 
     295            Add(kenttaRuutu); 
     296 
     297            PeliLoppui(); 
     298            return; 
     299        } 
     300 
     301        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta"+kenttaNro); 
    188302        ruudut.SetTileMethod("00FF00", LuoLukko); 
    189303        ruudut.SetTileMethod(Color.Blue, LuoPelaaja); 
     
    192306        ruudut.SetTileMethod("BA006E", LuoLiikkumatonVihollinen); 
    193307        ruudut.SetTileMethod("FFD800", LuoAvain); 
     308        ruudut.SetTileMethod("FF00DC", LuoMuuri); 
     309        ruudut.SetTileMethod("00FFFF", LuoPääVihollinen); 
     310        ruudut.SetTileMethod("FF6A00", LuoTahti); 
     311        ruudut.SetTileMethod("0094FF", LuoHaviavaMuuri); 
     312        ruudut.SetTileMethod("404040", LuoMaali); 
    194313        ruudut.Execute(50, 50); 
    195314        Level.BackgroundColor = Color.Black; 
     
    197316        Level.Background.Image = taustakuva; 
    198317        Level.Background.FitToLevel(); 
     318 
     319        Camera.Follow(robot); 
     320        Camera.ZoomFactor = 2; 
     321    } 
     322 
     323    void LuoMuuri(Vector paikka, double leveys, double korkeus) 
     324    { 
     325        Muuri muuri = new Muuri(leveys, korkeus); 
     326        muuri.MakeStatic(); 
     327        muuri.Position = paikka; 
     328        muuri.Image = muurikuva; 
     329        muuri.CollisionIgnoreGroup = 0; 
     330        muuri.Destroyed += delegate { 
     331            for (int i = 0; i < 80; i++) 
     332            { 
     333                PhysicsObject p = new PhysicsObject(6, 6); 
     334                //p.Image = muurikuva; 
     335                p.Color = Color.Gray; 
     336                p.Position = muuri.Position; 
     337                p.LinearDamping = 0.98; 
     338                p.Hit(RandomGen.NextVector(20, 300)); 
     339                p.LifetimeLeft = TimeSpan.FromSeconds(3.0); 
     340                p.CollisionIgnoreGroup = 1; 
     341                p.FadeColorTo(Color.Transparent, 2.0); 
     342                Add(p); 
     343                 
     344            } 
     345            ampuminen.Play(); 
     346             
     347        }; 
     348        Add(muuri); 
     349    } 
     350 
     351    void LuoTahti(Vector paikka, double leveys, double korkeus) 
     352    { 
     353        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     354        tahti.Position = paikka; 
     355        tahti.Shape = Shape.Star; 
     356        tahti.CollisionIgnoreGroup = 0; 
     357        tahti.Tag = "Tahti"; 
     358        tahti.Color = Color.Gold; 
     359        Add(tahti); 
     360 
     361    } 
     362 
     363    void LuoMaali(Vector paikka, double leveys, double korkeus) 
     364    { 
     365        PhysicsObject Maali = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     366        Maali.Position = paikka; 
     367        Maali.Image = teleporttikuva; 
     368        Maali.CollisionIgnoreGroup = 0; 
     369        Add(Maali); 
     370 
     371        AddCollisionHandler(robot, Maali, PaasetSeuraavaanTasoon); 
     372    } 
     373 
     374    void PaasetSeuraavaanTasoon(PhysicsObject robotti, PhysicsObject maali) 
     375    { 
     376        kenttaNro++; 
     377        AlustaKentta(); 
     378    } 
     379 
     380    void LuoHaviavaMuuri(Vector paikka, double leveys, double korkeus) 
     381    { 
     382        PhysicsObject haviavamuuri = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     383        haviavamuuri.Position = paikka; 
     384        haviavamuuri.CollisionIgnoreGroup = 0; 
     385        haviavamuuri.Color = Color.DarkGray; 
     386        haviavamuuri.Tag = "maaliseina"; 
     387        Add(haviavamuuri); 
    199388    } 
    200389 
     
    205394        lukko.Image = lukkokuva; 
    206395        lukko.CollisionIgnoreGroup = 0; 
     396        lukko.Tag = "lukko"; 
    207397        Add(lukko); 
    208  
    209         AddCollisionHandler(robot, lukko, Avaalukko); 
    210398    } 
    211399 
     
    216404            kohde.Destroy(); 
    217405            pisteLaskuri.Value += 250; 
     406 
     407            foreach(PhysicsObject maaliseina in GetObjectsWithTag("maaliseina") ) 
     408            { 
     409                TuhoaJaRajahda(maaliseina); 
     410                //maaliseina.Destroy(); 
     411            } 
    218412        } 
    219413    } 
     
    225419        Avain.Image = avainkuva; 
    226420        Avain.CollisionIgnoreGroup = 0; 
     421        Avain.Tag = "avain"; 
    227422        Add(Avain); 
    228  
    229         AddCollisionHandler(robot, Avain, KeraaAvain); 
    230423    } 
    231424 
     
    240433    void LuoPelaaja(Vector paikka, double leveys, double korkeus) 
    241434    { 
    242         robot = new Robot(leveys, korkeus, 5); 
     435        robot = new Robot(leveys, korkeus, 8); 
    243436        robot.Position = paikka; 
    244437        robot.Shape = Shape.Hexagon; 
     
    250443        //AddCollisionHandler(robot, ); 
    251444        Add(robot); 
    252         robot.Elamat.LowerLimit += delegate { TuhoaJaRajahda(robot); }; 
     445        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     446        elamaPalkki.X = Screen.Left + 150; 
     447        elamaPalkki.Y = Screen.Top - 20; 
     448        elamaPalkki.BindTo(robot.Elamat); 
     449        //Taustaväri: 
     450        elamaPalkki.Color = Color.Yellow; 
     451 
     452        //Palkin väri: 
     453        elamaPalkki.BarColor = Color.Red; 
     454 
     455        //Reunan väri: 
     456        elamaPalkki.BorderColor = Color.Black; 
     457 
     458        Add(elamaPalkki); 
     459 
     460        robot.Elamat.LowerLimit += delegate { 
     461            TuhoaJaRajahda(robot); 
     462 
     463            kenttaNro = 1; 
     464 
     465            for (int i = 0; i < 60; i++) 
     466            { 
     467                Timer.SingleShot(0.1 + i / 40.0, delegate 
     468                { 
     469                    Explosion rajahdys = new Explosion(400); 
     470                    rajahdys.Sound = rajahdysaani; 
     471                    rajahdys.Position = robot.Position + RandomGen.NextVector(100, 200); 
     472                    Add(rajahdys); 
     473                }); 
     474            } 
     475        }; 
    253476        robot.Destroyed += PeliLoppui; 
    254477 
     
    265488        Add(liitos); 
    266489 
     490        AddCollisionHandler(robot, "Tahti", delegate(PhysicsObject tormaaja, PhysicsObject kohde) 
     491        { 
     492            pisteLaskuri.AddValue(500); 
     493            kohde.Destroy(); 
     494        }); 
     495 
     496        AddCollisionHandler(robot, "avain", KeraaAvain); 
     497        AddCollisionHandler(robot, "lukko", Avaalukko); 
     498 
    267499 
    268500        /* 
     
    273505         */ 
    274506 
    275         Camera.Follow(robot); 
    276         Camera.ZoomFactor = 2; 
     507       
    277508    } 
    278509 
     
    331562        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta"); 
    332563        alkuValikko.AddItemHandler(0, Aloitapeli); 
    333         //alkuValikko.AddItemHandler(1, ParhaatPisteet); 
     564        alkuValikko.AddItemHandler(1, NaytaParhaatPisteet); 
    334565        alkuValikko.AddItemHandler(2, Exit); 
    335566 
    336567        Add(alkuValikko); 
     568    } 
     569 
     570    void NaytaParhaatPisteet() 
     571    { 
     572        topLista.Show(); 
     573        topLista.HighScoreWindow.Closed += delegate(Window sender) { Alkuvalikko(); }; 
     574     
    337575    } 
    338576} 
     
    354592 
    355593} 
     594 
     595class Muuri : PhysicsObject 
     596{ 
     597    private IntMeter elamaLaskuri = new IntMeter(5, 0, 5); 
     598    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     599 
     600    public Muuri(double leveys, double korkeus) 
     601        : base(leveys, korkeus) 
     602    { 
     603        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     604        this.Tag = "muuri"; 
     605    } 
     606} 
  • 2013/24/IlariR/Robot attack/Robot attack/Robot attackContent/Robot attackContent.contentproj

    r4092 r4125  
    136136    </Compile> 
    137137  </ItemGroup> 
     138  <ItemGroup> 
     139    <Compile Include="muuri.png"> 
     140      <Name>muuri</Name> 
     141      <Importer>TextureImporter</Importer> 
     142      <Processor>TextureProcessor</Processor> 
     143    </Compile> 
     144  </ItemGroup> 
     145  <ItemGroup> 
     146    <Compile Include="teleportti.png"> 
     147      <Name>teleportti</Name> 
     148      <Importer>TextureImporter</Importer> 
     149      <Processor>TextureProcessor</Processor> 
     150    </Compile> 
     151  </ItemGroup> 
     152  <ItemGroup> 
     153    <Compile Include="kentta2.png"> 
     154      <Name>kentta2</Name> 
     155      <Importer>TextureImporter</Importer> 
     156      <Processor>TextureProcessor</Processor> 
     157    </Compile> 
     158  </ItemGroup> 
     159  <ItemGroup> 
     160    <Compile Include="kentta3.png"> 
     161      <Name>kentta3</Name> 
     162      <Importer>TextureImporter</Importer> 
     163      <Processor>TextureProcessor</Processor> 
     164    </Compile> 
     165  </ItemGroup> 
     166  <ItemGroup> 
     167    <Compile Include="PaaVihollinen.png"> 
     168      <Name>PaaVihollinen</Name> 
     169      <Importer>TextureImporter</Importer> 
     170      <Processor>TextureProcessor</Processor> 
     171    </Compile> 
     172  </ItemGroup> 
     173  <ItemGroup> 
     174    <Compile Include="NUKEsound.wav"> 
     175      <Name>NUKEsound</Name> 
     176      <Importer>WavImporter</Importer> 
     177      <Processor>SoundEffectProcessor</Processor> 
     178    </Compile> 
     179  </ItemGroup> 
    138180  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    139181  <!--  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.