Ignore:
Timestamp:
2016-06-14 14:49:49 (4 years ago)
Author:
koannak
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2016/24/IlariJ/ShootIO/ShootIO/ShootIO/ShootIO.cs

    r7251 r7289  
    99public class ShootIO : PhysicsGame 
    1010{ 
    11     PhysicsObject pelaaja; 
     11    Image zompi1 = LoadImage("zompi1"); 
     12    Image zompi2 = LoadImage("zompi2"); 
     13    Image zompi3 = LoadImage("zompi3"); 
     14    Image taustaKuva = LoadImage("tausta"); 
     15    AssaultRifle pyssy; 
     16    private double liikkumisnopeus = 100; 
     17    Image tankinKuva = LoadImage("tankki"); 
     18    Tankki pelaaja; 
     19    DoubleMeter elamaLaskuri; 
    1220    public override void Begin() 
    1321    { 
    14     LuoKentta(); 
    15     Camera.ZoomToAllObjects(); 
    16     // TODO: Kirjoita ohjelmakoodisi tähän 
     22        LuoKentta(); 
     23        LuoPelaaja(); 
     24        LisaaOhjaimet(); 
     25        LuoElamaLaskuri(); 
     26        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella"); 
     27        Camera.Follow(pelaaja); 
     28        Camera.Zoom(4); 
     29        // TODO: Kirjoita ohjelmakoodisi tähän 
    1730 
    18     PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    19     Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     31        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     32        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    2033    } 
    2134    void LuoKentta() 
    2235    { 
    23     //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. 
    24     ColorTileMap ruudut = ColorTileMap.FromLevelAsset("mappi"); 
     36        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. 
     37        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("mappi"); 
    2538 
    26     //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. 
     39        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. 
    2740 
    28     ruudut.SetTileMethod(Color.Black, LuoEste); 
    29     ruudut.SetTileMethod(Color.Red, LuoPommi); 
     41        ruudut.SetTileMethod(Color.Black, LuoEste); 
     42        ruudut.SetTileMethod(Color.Red, LuoPommi); 
     43        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoVihu, zompi1); 
     44        ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoVihu, zompi2); 
     45        ruudut.SetTileMethod(Color.FromHexCode("FF6A00"), LuoVihu, zompi3); 
    3046 
    31     //3. Execute luo kentän 
    32     //   Parametreina leveys ja korkeus 
    33     ruudut.Execute(20, 20); 
     47        //3. Execute luo kentän 
     48        //   Parametreina leveys ja korkeus 
     49        ruudut.Execute(20, 20); 
     50 
     51        Level.Background.Image = taustaKuva; 
     52        Level.Background.FitToLevel(); 
    3453    } 
    3554 
    36     void LuoPelaaja(Vector paikka, double leveys, double korkeus) 
     55    void LuoPelaaja() 
    3756    { 
    38     pelaaja = new PhysicsObject(10, 10); 
    39     pelaaja.Position = paikka; 
    40     //AddCollisionHandler(pelaaja, "pommi", TormaaPommiin); 
    41     Add(pelaaja); 
     57        pelaaja = new Tankki(10, 10); 
     58        pelaaja.Position = new Vector(0,0); 
     59        AddCollisionHandler(pelaaja, "pommi", TormaaPommiin); 
     60        Add(pelaaja); 
     61        pelaaja.Image = tankinKuva; 
     62        pelaaja.IgnoresExplosions = false; 
     63        pelaaja.CanRotate = false; 
     64 
     65        LuoAse(); 
     66 
    4267    } 
    4368 
    4469    void LuoEste(Vector paikka, double leveys, double korkeus) 
    4570    { 
    46     PhysicsObject este = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    47     este.Position = paikka; 
    48     este.Image = LoadImage("este"); 
    49     este.CollisionIgnoreGroup = 1; 
    50     Add(este); 
     71        PhysicsObject este = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     72        este.Position = paikka; 
     73        este.Image = LoadImage("este"); 
     74        este.CollisionIgnoreGroup = 1; 
     75        Add(este); 
    5176    } 
    5277 
    5378    void LuoPommi(Vector paikka, double leveys, double korkeus) 
    5479    { 
    55     PhysicsObject pommi = PhysicsObject.CreateStaticObject(5, 5); 
    56     pommi.IgnoresCollisionResponse = true; 
    57     pommi.Position = paikka; 
    58     pommi.Image = LoadImage("pommi"); 
    59     pommi.Tag = "pommi"; 
    60     Add(pommi, 1); 
     80        PhysicsObject pommi = PhysicsObject.CreateStaticObject(11, 11); 
     81        pommi.IgnoresCollisionResponse = true; 
     82        pommi.Position = paikka; 
     83        pommi.Image = LoadImage("pommi"); 
     84        pommi.Tag = "pommi"; 
     85        Add(pommi, 1); 
    6186    } 
     87 
     88    void LisaaOhjaimet() 
     89    { 
     90        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, null, new Vector(-liikkumisnopeus, 0)); 
     91        Keyboard.Listen(Key.A, ButtonState.Released, Liikuta, null, Vector.Zero); 
     92        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, null, new Vector(liikkumisnopeus, 0)); 
     93        Keyboard.Listen(Key.D, ButtonState.Released, Liikuta, null, Vector.Zero); 
     94        Keyboard.Listen(Key.S, ButtonState.Down, Liikuta, null, new Vector(0, -liikkumisnopeus)); 
     95        Keyboard.Listen(Key.S, ButtonState.Released, Liikuta, null, Vector.Zero); 
     96        Keyboard.Listen(Key.W, ButtonState.Down, Liikuta, null, new Vector(0, liikkumisnopeus)); 
     97        Keyboard.Listen(Key.W, ButtonState.Released, Liikuta, null, Vector.Zero); 
     98        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pyssy); 
     99 
     100    } 
     101 
     102    void Liikuta(Vector speed) 
     103    { 
     104        pelaaja.Velocity = speed; 
     105    } 
     106 
     107    void TormaaPommiin(PhysicsObject pelaaja, PhysicsObject pommi) 
     108    { 
     109        Explosion rajahdys = new Explosion(50); 
     110        rajahdys.Position = pommi.Position; 
     111        Add(rajahdys); 
     112        pommi.Destroy(); 
     113        this.pelaaja.ElamaLaskuri.Value -=2; 
     114        elamaLaskuri.Value -=2; 
     115        rajahdys.Speed = 100.0; 
     116        rajahdys.Force = 100; 
     117    } 
     118 
     119    void LuoElamaLaskuri() 
     120    { 
     121        elamaLaskuri = new DoubleMeter(10); 
     122        elamaLaskuri.MaxValue = 10; 
     123        elamaLaskuri.LowerLimit += ElamaLoppui; 
     124 
     125        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     126        elamaPalkki.X = Screen.Left + 150; 
     127        elamaPalkki.Y = Screen.Top - 20; 
     128        elamaPalkki.BindTo(elamaLaskuri); 
     129        Add(elamaPalkki); 
     130    } 
     131 
     132    void ElamaLoppui() 
     133    { 
     134        MessageDisplay.Add("Elämät loppuivat, voi voi."); 
     135    } 
     136 
     137    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde) 
     138    { 
     139        //ammus.Destroy(); 
     140    } 
     141 
     142    void AmmuAseella(AssaultRifle ase) 
     143    { 
     144        PhysicsObject ammus = pyssy.Shoot(); 
     145 
     146        if (ammus != null) 
     147        { 
     148            ammus.Size *= 0.5; 
     149            //ammus.Image = ... 
     150            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
     151        } 
     152    } 
     153 
     154    void LuoAse() 
     155    { 
     156        pyssy = new AssaultRifle(20, 5); 
     157        //pyssy.ProjectileCollision = AmmusOsui; 
     158 
     159        //Ammusten määrä aluksi: 
     160        pyssy.Ammo.Value = 1000; 
     161        //Mitä tapahtuu kun ammus osuu johonkin? 
     162        pyssy.ProjectileCollision = AmmusOsui; 
     163        pyssy.IsVisible = false; 
     164        pelaaja.Add(pyssy); 
     165    } 
     166 
     167    void Tahtaa(AnalogState hiirenLiike) 
     168    { 
     169        Vector suuntaPelaaja = (Mouse.PositionOnWorld - pelaaja.AbsolutePosition).Normalize(); 
     170        Mouse.IsCursorVisible = true; 
     171        pelaaja.Angle = suuntaPelaaja.Angle; 
     172    } 
     173 
     174    void LuoVihu(Vector paikka, double leveys, double korkeus, Image vihuKuva) 
     175 
     176    { 
     177        PhysicsObject Vihu = new PhysicsObject(10, 12); 
     178        Vihu.Shape = Shape.Rectangle; 
     179        Add(Vihu); 
     180        Vihu.Image = vihuKuva; 
     181        Vihu.Position = paikka; 
     182    } 
     183 
     184 
    62185} 
     186 
     187class Tankki : PhysicsObject 
     188{ 
     189    private IntMeter elamaLaskuri = new IntMeter(10, 0, 20); 
     190    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
     191 
     192    public Tankki(double leveys, double korkeus) 
     193        : base(leveys, korkeus) 
     194    { 
     195        elamaLaskuri.LowerLimit += delegate { this.Destroy(); }; 
     196    } 
     197 
     198} 
Note: See TracChangeset for help on using the changeset viewer.