Changeset 4410


Ignore:
Timestamp:
2013-07-03 14:58:30 (6 years ago)
Author:
emkempas
Message:

Talletus.

Location:
2013/27/Emil-AleksiK/dp1/dp1
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • 2013/27/Emil-AleksiK/dp1/dp1/dp1/dp1.cs

    r4376 r4410  
    1010{ 
    1111    PhysicsObject dp; 
     12    DoubleMeter elamaLaskuri; 
     13    AssaultRifle pistooli; 
    1214    public override void Begin() 
    1315    { 
    14         dp = new PhysicsObject(60,60,Shape.Circle); 
    15         Add(dp); 
     16        luo_kenttä(); 
     17        LuoElamaLaskuri(); 
    1618        Level.CreateBorders(0, false); 
    17         Camera.ZoomToLevel(); 
     19        Camera.Follow(dp); 
     20 
     21        pistooli = new AssaultRifle(30, 10); 
     22 
     23        //Ammusten määrä aluksi: 
     24        pistooli.Ammo.Value = 20; 
     25 
     26        //Mitä tapahtuu kun ammus osuu johonkin? 
     27        pistooli.ProjectileCollision = AmmusOsui; 
     28 
     29        dp.Add(pistooli); 
    1830 
    1931        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     
    2739        Keyboard.Listen(Key.Down, ButtonState.Down, liiku, null, 0.0, -500.0); 
    2840        Keyboard.Listen(Key.Down, ButtonState.Released, liiku, null, 0.0, 0.0); 
    29          
     41        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pistooli); 
    3042    } 
    3143 
    32     void liiku(double X,double Y) 
     44    void liiku(double X, double Y) 
    3345    { 
    34         dp.Velocity = new Vector(X,Y); 
     46        dp.Velocity = new Vector(X, Y); 
     47        dp.Angle = dp.Velocity.Angle; 
     48 
     49    } 
     50    void luo_kenttä() 
     51    { 
     52        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta1"); 
     53 
     54        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. 
     55        ruudut.SetTileMethod(Color.Red, LuoPelaaja); 
     56        ruudut.SetTileMethod(Color.Black, LuoSeinä); 
     57        ruudut.SetTileMethod(Color.Blue, LuoVihollinen); 
     58        ruudut.Execute(40, 40); 
     59    } 
     60    void LuoPelaaja(Vector paikka, double leveys, double korkeus) 
     61    { 
     62        dp = new PhysicsObject(30, 30, Shape.Circle); 
     63        dp.Position = paikka; 
     64        dp.LinearDamping = 0.8; 
     65        dp.Restitution = 0; 
     66        dp.Color = Color.Red; 
     67        Add(dp); 
     68        AddCollisionHandler(dp, "vihollinen", rysähdys); 
     69        dp.CanRotate = false; 
     70 
     71    } 
     72    void LuoSeinä(Vector paikka, double leveys, double korkeus) 
     73    { 
     74        PhysicsObject seinä = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     75        seinä.Position = paikka; 
     76        seinä.Color = Color.Black; 
     77        seinä.Tag = "seinä"; 
     78        Add(seinä); 
     79    } 
     80    void LuoVihollinen(Vector paikka, double leveys, double korkeus) 
     81    { 
     82        PhysicsObject vihollinen = new PhysicsObject(leveys / 1.3, korkeus / 1.3); 
     83        vihollinen.Position = paikka; 
     84        vihollinen.Shape = Shape.Circle; 
     85        vihollinen.Color = Color.Blue; 
     86        vihollinen.Tag = "vihollinen"; 
     87        //vihollinen.Size = new Vector(30, 30); 
     88        hippa(vihollinen, 0); 
     89        AddCollisionHandler(vihollinen, delegate(PhysicsObject obj, PhysicsObject toin) { hippa(vihollinen, 0); }); 
     90        Add(vihollinen); 
     91    } 
     92 
     93    void hippa(PhysicsObject vihollinen, int kertaa) 
     94    { 
     95        if (kertaa > 50) return; 
     96        Vector[] vectorit = { new Vector(vihollinen.X, vihollinen.Y + 40), new Vector(vihollinen.X, vihollinen.Y - 40), new Vector(vihollinen.X + 40, vihollinen.Y), new Vector(vihollinen.X - 40, vihollinen.Y) }; 
     97        Vector suunta = RandomGen.SelectOne<Vector>(vectorit); 
     98        if (GetObjectAt(suunta, "seinä", 10) == null) 
     99        { 
     100            vihollinen.MoveTo(suunta, 100, delegate { hippa(vihollinen, 0); }); 
     101            return; 
     102        } 
     103        else hippa(vihollinen, ++kertaa); 
     104        //Vector alaPuoli = new Vector(vihollinen.X, vihollinen.Y - 40); 
     105        //if (GetObjectAt(alaPuoli, "seinä", 5) == null) 
     106        //{ 
     107        //    vihollinen.MoveTo(alaPuoli, 100, delegate { hippa(vihollinen); }); 
     108        //    return; 
     109        //} 
     110        //Vector oikea = new Vector(vihollinen.X + 40, vihollinen.Y); 
     111        //if (GetObjectAt(oikea, "seinä", 5) == null) 
     112        //{ 
     113        //    vihollinen.MoveTo(oikea, 100, delegate { hippa(vihollinen); }); 
     114        //    return; 
     115        //} 
     116        //Vector vasen = new Vector(vihollinen.X - 40, vihollinen.Y); 
     117        //if (GetObjectAt(vasen, "seinä", 5) == null) 
     118        //{ 
     119        //    vihollinen.MoveTo(vasen, 100, delegate { hippa(vihollinen); }); 
     120        //    return; 
     121        //} 
     122 
     123    } 
     124    void LuoElamaLaskuri() 
     125    { 
     126        elamaLaskuri = new DoubleMeter(100); 
     127        elamaLaskuri.MaxValue = 100; 
     128        elamaLaskuri.LowerLimit += ElamaLoppui; 
     129 
     130        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     131        elamaPalkki.X = Screen.Left + 150; 
     132        elamaPalkki.Y = Screen.Top - 20; 
     133        elamaPalkki.BindTo(elamaLaskuri); 
     134        Add(elamaPalkki); 
     135    } 
     136    void ElamaLoppui() 
     137    { 
     138        MessageDisplay.Add("Elämät loppuivat, voi voi."); 
     139    } 
     140    void rysähdys(PhysicsObject pelaaja, PhysicsObject vihollinen) 
     141    { 
     142        elamaLaskuri.Value -= 20; 
     143    } 
     144    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     145    { 
     146        ammus.Destroy(); 
     147 
     148    } 
     149    void AmmuAseella(AssaultRifle pistooli) 
     150    { 
     151        PhysicsObject ammus = pistooli.Shoot(); 
     152 
     153        if (ammus != null) 
     154        { 
     155            //ammus.Size *= 3; 
     156            //ammus.Image = ... 
     157            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
     158        } 
     159 
    35160 
    36161    } 
  • 2013/27/Emil-AleksiK/dp1/dp1/dp1Content/dp1Content.contentproj

    r4376 r4410  
    4545    <Reference Include="AnimationExtension" /> 
    4646  </ItemGroup> 
     47  <ItemGroup> 
     48    <Compile Include="kentta1.png"> 
     49      <Name>kentta1</Name> 
     50      <Importer>TextureImporter</Importer> 
     51      <Processor>TextureProcessor</Processor> 
     52    </Compile> 
     53  </ItemGroup> 
    4754  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    4855  <!--  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.