Ignore:
Timestamp:
2013-07-24 15:06:16 (6 years ago)
Author:
misakana
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/MitjaK/YellowSubmarine/YellowSubmarine/YellowSubmarine/YellowSubmarine.cs

    r4591 r4641  
    88 
    99public class YellowSubmarine : PhysicsGame 
    10 { 
     10     
     11{    
     12     
    1113    PhysicsObject sukellusvene; 
    1214    Image sukellusvenekuva = LoadImage("submarine"); 
    1315    Image taustakuva = LoadImage("TaustaVuoret"); 
     16    Image kuplanKuva1 = LoadImage("Kupla"); 
     17    Image kuplanKuva2 = LoadImage("Kupla2"); 
     18 
    1419    GameObject tausta; 
    1520    Image pienKivenKuva = LoadImage("Kivi1"); 
    1621    Image miinankuva = LoadImage("Miina"); 
     22    Image kiviKuva = LoadImage("Kivi2"); 
    1723    Image arkunKuva = LoadImage("aarrearkku"); 
    1824    Image valikonKuva = LoadImage("Valikkokuva"); 
     25    Animation sukellusveneAnimaatio = new Animation(LoadImages("submarine", "submarine1", "submarine2", "submarine1")); 
     26    ExplosionSystem expSys; 
     27    ExplosionSystem expSys2; 
     28    ExplosionSystem expSys3; 
     29 
     30    Image vesirajahdys = LoadImage("vesirajahdys1"); 
     31    Image vesirajahdys2 = LoadImage("vesirajahdys2"); 
     32    Image vesirajahdys3 = LoadImage("vesirajahdys3"); 
     33 
     34 
     35     
     36 
    1937 
    2038    /// <summary> 
     
    2543    public override void Begin() 
    2644    { 
     45        IsFullScreen = true; 
    2746        AlkuValikko(); 
    28         AsetaOhjaimet(); 
    29         Level.Background.Image = valikonKuva; 
     47 
    3048    } 
    3149 
     
    5775    void LisaaMiina() 
    5876    { 
    59         PhysicsObject miina = LuoObjektiRuudunReunaan(0, 250); 
     77        PhysicsObject miina = LuoObjektiRuudunReunaan(-100, 250); 
    6078        miina.Tag = "miina"; 
    6179        miina.Image = miinankuva; 
     
    7997        tausta = new GameObject(1000, 600); 
    8098        tausta.Image = taustakuva; 
     99        tausta.LifetimeLeft = TimeSpan.FromSeconds(30); 
    81100        tausta.Position = uudenPaikka; 
    82101        tausta.Color = Jypeli.RandomGen.NextColor(); 
    83102        Add(tausta, -2); 
    84103 
     104        LuoMaata(); 
     105        //Tähän voi tehdä myös surfacen lisäluomisen 
     106    } 
     107 
     108    private void LuoMaata() 
     109    { 
    85110        PhysicsObject maa = new PhysicsObject(tausta.Width, 50); 
    86         maa.Position = tausta.Position + new Vector(0, -275); 
     111        maa.Position = tausta.Position + new Vector(0, -300); 
    87112        //maa.Shape = Shape.Triangle; 
    88113        maa.Color = Color.Black; 
    89114        maa.MakeStatic(); 
    90         maa.LifetimeLeft = TimeSpan.FromSeconds(25); 
     115        maa.LifetimeLeft = TimeSpan.FromSeconds(60); 
    91116        Add(maa); 
    92         //Tähän voi tehdä myös surfacen lisäluomisen 
    93     } 
    94  
    95  
    96     protected override void Update(Time time) 
    97     { 
    98         if (!isGameStarted) 
    99         { 
    100             base.Update(time); 
    101             return; 
    102         } 
    103  
    104         Vector paikka = Camera.ScreenToWorld(new Vector(Screen.Right, 0)); 
    105         if (paikka.X >= tausta.Right) LuoLisaaTaustaa(new Vector(paikka.X, tausta.Y)); 
    106         //if (sukellusvene.X >= tausta.Right) LuoLisaaTaustaa(new Vector(tausta.Right, tausta.Y)); 
    107  
    108         base.Update(time); 
    109     } 
     117    } 
     118 
     119 
     120    void RajaytaKohteet(PhysicsObject ens, PhysicsObject toinen) 
     121    { 
     122        expSys.AddEffect(ens.Position, 100); 
     123        expSys2.AddEffect(ens.Position, 100); 
     124        expSys3.AddEffect(ens.Position, 100); 
     125        ens.Destroy(); 
     126        toinen.Destroy(); 
     127 
     128    } 
     129 
     130 
    110131 
    111132 
     
    115136        sukellusvene.Velocity = new Vector(50, 0); 
    116137        sukellusvene.CanRotate = false; 
    117         sukellusvene.Image = sukellusvenekuva; 
     138        sukellusvene.Animation = sukellusveneAnimaatio; 
     139        sukellusvene.Animation.Start(); 
    118140        sukellusvene.Shape = Shape.FromImage(sukellusvenekuva); 
    119         AddCollisionHandler(sukellusvene, "miina", CollisionHandler.ExplodeBoth(100, true)); 
     141        AddCollisionHandler(sukellusvene, "miina", RajaytaKohteet); 
     142        AddCollisionHandler(sukellusvene, "miina", Havio); 
     143 
     144        AddCollisionHandler(sukellusvene, "kivi", RajaytaKohteet); 
     145        AddCollisionHandler(sukellusvene, "kivi", Havio); 
    120146        Add(sukellusvene); 
     147 
     148        int times = 0; 
    121149 
    122150        Timer ajastin = new Timer(); 
    123151        ajastin.Interval = 0.1; 
     152        const int kuinkaUseinKupliaSekunninKymmenesOsissa = 30; 
    124153        ajastin.Timeout += delegate 
    125154        { 
     155 
    126156            if (sukellusvene.Velocity.X >= 300) ajastin.Stop(); 
    127             else sukellusvene.Velocity += new Vector(0.2, 0); 
     157            else sukellusvene.Velocity += new Vector(0.2,0); 
     158            times++; 
     159 
     160            if (times % kuinkaUseinKupliaSekunninKymmenesOsissa == 0) 
     161            { 
     162                for (int i = 0; i < RandomGen.NextInt(1, 4); i++) 
     163                { 
     164                    LuoKelluvaKupla(sukellusvene.Position + new Vector(-10, 0) + Jypeli.RandomGen.NextVector(1, 5)); 
     165                } 
     166            } 
    128167            //sukellusvene.Velocity = new Vector(sukellusvene.Velocity.X * 1.1, sukellusvene.Velocity.Y); 
    129168        }; 
     
    131170    } 
    132171 
     172 
     173 
     174    void LuoKelluvaKupla(Vector paikka) 
     175    { 
     176        GameObject kupla = new GameObject(5, 5); 
     177        kupla.Image = Jypeli.RandomGen.SelectOne(kuplanKuva1, kuplanKuva2); 
     178        kupla.Position = paikka; 
     179        Add(kupla); 
     180 
     181        Timer ajastin = new Timer(); 
     182        ajastin.Interval = 0.5; 
     183        ajastin.Timeout += delegate 
     184        { 
     185            if (kupla.Position.Y > Screen.Top) 
     186            { 
     187                kupla.Destroy(); 
     188                ajastin.Stop(); 
     189            } 
     190            else kupla.Position += new Vector(RandomGen.NextDouble(-10, 10), 7); 
     191        }; 
     192        ajastin.Start(); 
     193 
     194    } 
     195 
     196 
    133197    void AsetaOhjaimet() 
    134198    { 
     
    149213        kivi.Shape = Shape.Triangle; 
    150214        kivi.Color = Color.Black; 
    151         //TODO: kiven paikka pikkukiville paremmin!!! 
    152  
    153         //kivi.Size = new Vector(60, 60); 
    154         //Add(kivi); 
    155         //PhysicsObject toinenKivi = new PhysicsObject(60, 60); 
    156         //toinenKivi.Position = kivi.Position + new Vector(kivi.Width- 7, 0); 
    157         //toinenKivi.Shape = Shape.Triangle; 
    158         //toinenKivi.Color = Color.Black; 
    159         //toinenKivi.LifetimeLeft = TimeSpan.FromSeconds(15); 
    160         //toinenKivi.MakeStatic(); 
    161         //Add(toinenKivi); 
     215 
    162216        for (int i = 0; i < 20; i++) 
    163217        { 
     
    167221            pienKivi.Color = Color.Red; 
    168222            pienKivi.LifetimeLeft = TimeSpan.FromSeconds(25); 
     223            pienKivi.Mass = 100; 
     224            pienKivi.Tag = "kivi"; 
    169225            pienKivi.Image = pienKivenKuva; 
    170226            Add(pienKivi); 
    171227        } 
    172228 
    173         LuoMaastonOsa(Camera.ScreenToWorld(RandomGen.NextVector(Screen.Right, Screen.Bottom + 100, Screen.Right + 100, Screen.Bottom + 200)), 
    174         new Vector(50.0, 50.0), LoadImage("Kivi2"), TimeSpan.FromSeconds(25), 10000, true); 
     229        LuoMaastonOsa( 
     230            Camera.ScreenToWorld(RandomGen.NextVector(Screen.Right, Screen.Bottom + 100, Screen.Right + 100, Screen.Bottom + 200)), 
     231            new Vector(50.0, 50.0), 
     232            kiviKuva, 
     233            TimeSpan.FromSeconds(25), 
     234            10000, 
     235            true 
     236            ); 
    175237    } 
    176238 
     
    191253        kappale.Mass = massa; 
    192254        Add(kappale); 
    193         //if (jaakoPaikalleenOsuttuaanJohonkin) 
    194         //{ 
    195         //    AddCollisionHandler(kappale, delegate(IPhysicsObject k, IPhysicsObject tormaaja) 
    196         //    { 
    197         //        PhysicsObject tormatty = k as PhysicsObject; 
    198         //        if (tormatty != null) 
    199         //            tormatty.MakeStatic(); 
    200         //    }); 
    201         //} 
    202     } 
     255    } 
     256 
    203257    void AlkuValikko() 
    204258    { 
    205259        ClearAll(); 
    206  
     260        Level.Background.Image = valikonKuva; 
    207261        List<Label> valikonKohdat = new List<Label>(); 
    208262 
     
    223277    } 
    224278 
     279    ExplosionSystem AlustaExpSystem(Image kuva) 
     280    { 
     281        ExplosionSystem alustettava = new ExplosionSystem(kuva, 150); 
     282        alustettava.Image = kuva; 
     283        alustettava.MaxScale = 35; 
     284        alustettava.MinScale = 10; 
     285        alustettava.MinVelocity = 100; 
     286        alustettava.MaxVelocity = 200; 
     287        Add(alustettava); 
     288        return alustettava; 
     289    } 
     290 
     291 
    225292    void AloitaPeli(List<Label> valikonOsat) 
    226293    { 
     
    229296            osa.Destroy(); 
    230297        } 
     298 
     299        expSys = AlustaExpSystem(vesirajahdys); 
     300        expSys2 = AlustaExpSystem(vesirajahdys2); 
     301        expSys3 = AlustaExpSystem(vesirajahdys3); 
     302 
     303        AsetaOhjaimet(); 
    231304 
    232305        Gravity = new Vector(0.0, -150.0); 
     
    236309        //Add(alkuvalikko); 
    237310 
    238  
    239311        Level.Background.CreateGradient(Color.DarkBlue, Color.LightBlue); 
    240312 
    241313        tausta = new GameObject(1000, 600); 
    242314        tausta.Image = taustakuva; 
    243         //tausta.Position = new Vector(0, Screen.Bottom + tausta.Height/2); 
     315        // tausta.Position = sukellusvene.Position; 
    244316        Add(tausta, -2); 
    245  
     317        LuoMaata(); 
     318 
     319        
    246320        //Surface tausta = new Surface(200, 100); 
    247321        //tausta.Color = Color.Pink; 
     
    259333        LuoSukellusvene(); 
    260334        LuoMaastoa(); 
    261  
    262  
     335        tausta.Position = sukellusvene.Position; 
    263336        Camera.Follow(sukellusvene); 
    264337        Camera.ZoomFactor = 2; 
    265338        Camera.FollowsY = false; 
    266339        isGameStarted = true; 
     340 
     341        Level.AmbientLight = 0.25; 
    267342    } 
    268343 
     
    282357 
    283358    } 
     359 
     360    void Havio(PhysicsObject tormaaja, PhysicsObject kohde) 
     361    { 
     362        isGameStarted = false; 
     363        Timer.SingleShot(1.0, AlkuValikko); 
     364    } 
     365 
     366    protected override void Update(Time time) 
     367    { 
     368        if (!isGameStarted) 
     369        { 
     370            base.Update(time); 
     371            return; 
     372        } 
     373        base.Update(time); 
     374        //Vector paikka = Camera.ScreenToWorld(new Vector(Screen.Right, 0)); 
     375        Vector paikka = new Vector(sukellusvene.X + tausta.Width*2, 0); 
     376        if (paikka.X >= tausta.Right) LuoLisaaTaustaa(new Vector(tausta.X, tausta.Y)); 
     377        //if (sukellusvene.X >= tausta.Right) LuoLisaaTaustaa(new Vector(tausta.Right, tausta.Y)); 
     378 
     379        //valo.Position = sukellusvene.Position; 
     380 
     381         
     382    } 
     383 
     384 
    284385} 
    285386 
Note: See TracChangeset for help on using the changeset viewer.