Ignore:
Timestamp:
2013-11-23 14:57:39 (8 years ago)
Author:
vesal
Message:

miekka

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.cs

    r4802 r4803  
    1010{ 
    1111 
    12     private double korkeus; 
    1312    private KaantyvaOsa liikkuvaOsa; 
     13    private Direction suunta; 
     14    private Vector koko; 
     15    private Vector liikkuvaKoko; 
     16    private Vector miekanKoko; 
     17    private PhysicsGame peli; 
     18    private PhysicsObject miekka; 
    1419 
    1520    public KaantyvaOsa LiikkuvaOsa 
     
    1722        get { return liikkuvaOsa; } 
    1823    } 
    19     private AxleJoint kiinnitysVartaloon; 
    20  
    21     public AxleJoint KiinnitysVartaloon 
    22     { 
    23         get { return kiinnitysVartaloon; } 
    24     } 
    25  
    26     public Tiernapoika(double leveys, double korkeus, Image kuva, Image kasikuva) 
    27         : base(leveys,korkeus) 
     24 
     25 
     26    public Tiernapoika(PhysicsGame peli, double leveys, double korkeus, Image[] kuvat) 
     27        : base(leveys, korkeus) 
    2828    { 
    2929        // Pojan oikea käsi 
    3030        liikkuvaOsa = new KaantyvaOsa(leveys, korkeus / 4); 
    31         liikkuvaOsa.X = Right - Width / 10; 
     31        liikkuvaOsa.Left = Right - Width / 10; 
    3232        liikkuvaOsa.Y = Top - Height / 4; 
    3333        liikkuvaOsa.Color = Color.Gray; 
    34         Add(liikkuvaOsa); 
    35         kiinnitysVartaloon = new AxleJoint(this, liikkuvaOsa, new Vector(Right, liikkuvaOsa.Y)); 
    36         kiinnitysVartaloon.Softness = 0; 
    3734        // Add(kiinnitysVartaloon); 
    3835        // Poika ja käsi eivät saa törmätä toisiinsa 
    3936        CollisionIgnoreGroup = 1; 
    4037        liikkuvaOsa.CollisionIgnoreGroup = 1; 
    41         liikkuvaOsa.Image = kasikuva; 
    42         Image = kuva; 
     38        liikkuvaOsa.Image = kuvat[2]; 
     39        Image = kuvat[0]; 
    4340        DirectionChanged += new Action<Direction>(Kaantyi); 
    44         this.korkeus = korkeus; 
     41        koko = Size; 
    4542        Mass = 40000.0; 
     43        liikkuvaKoko = liikkuvaOsa.Size; 
     44        suunta = Direction.Right; 
     45        Add(liikkuvaOsa); 
     46        peli.Add(this, 1); 
     47        //peli.Add(liikkuvaOsa); 
     48        this.peli = peli; 
     49        miekka = new PhysicsObject(leveys*1.5,1 ); 
     50        miekka.Image = kuvat[3]; 
     51        miekka.Height = miekka.Width * miekka.Image.Height / miekka.Image.Width; 
     52        miekka.IgnoresGravity = true; 
     53        miekka.CollisionIgnoreGroup = 1; 
     54        liikkuvaOsa.Add(miekka); 
     55        miekanKoko = miekka.Size; 
     56        miekka.Angle = Angle.FromDegrees(20); 
     57        SaadaKoko(koko); 
    4658    } 
    4759 
    4860    private void Kaantyi(Direction suunta) 
    4961    { 
    50         if ( suunta == Direction.Left ) 
    51             liikkuvaOsa.X = -Width/2 * 0.9; 
     62        if (suunta == Direction.Left) 
     63        { 
     64            liikkuvaOsa.X = -Width / 2 * 0.9; 
     65            miekka.Angle = Angle.FromDegrees(-20); 
     66        } 
    5267        else 
    53             liikkuvaOsa.X = Width/2*0.9; 
     68        { 
     69            liikkuvaOsa.X = Width / 2 * 0.9; 
     70            miekka.Angle = Angle.FromDegrees(20); 
     71        } 
    5472        liikkuvaOsa.Suunta = suunta; 
    55  
    56  
    57     } 
    58  
     73        this.suunta = suunta; 
     74        liikkuvaOsa.Y = Height / 6; 
     75    } 
     76 
     77 
     78    private void SaadaKoko(Vector uusikoko) 
     79    { 
     80        Size = uusikoko; 
     81        liikkuvaOsa.Size = liikkuvaKoko * Size.Y / koko.Y; 
     82        miekka.Size = miekanKoko * Size.Y / koko.Y; 
     83        miekka.Position = new Vector(liikkuvaOsa.Width / 2 - 10, 0); 
     84        Kaantyi(suunta); 
     85    } 
    5986 
    6087 
    6188    internal void Nouse(double nopeus) 
    6289    { 
    63         Height = korkeus; 
    64     } 
     90        SaadaKoko(koko); 
     91        Kaantyi(suunta); 
     92    } 
     93 
    6594 
    6695    internal void Polvistu(double nopeus) 
    6796    { 
    68         Height = korkeus / 2; 
     97        SaadaKoko(new Vector(Width, koko.Y / 2)); 
     98    } 
     99 
     100 
     101    internal void Pois(double nopeus) 
     102    { 
     103        if (Height < koko.Y / 2) return; 
     104        SaadaKoko(Size * 0.99); 
     105        //  peli.Remove(this); 
     106        //  peli.Add(this, -1); 
     107    } 
     108 
     109 
     110    internal void Takaisin(double nopeus) 
     111    { 
     112        if (Height > koko.Y) Nouse(nopeus); 
     113        SaadaKoko(Size * 1.01); 
     114        // peli.Remove(this); 
     115        // peli.Add(this, 1); 
     116    } 
     117 
     118    internal void MiekkaTuppeen() 
     119    { 
     120        miekka.IsVisible = false; 
     121    } 
     122 
     123    internal void MiekkaEsiin() 
     124    { 
     125        miekka.IsVisible = true; 
    69126    } 
    70127} 
     128 
    71129 
    72130/// @author  Vesa Lappalainen 
     
    84142    /// Tavoitekulma, johon maila pyrkii osoittamaan 
    85143    /// </summary> 
    86     public Angle Tavoite { get { return tavoite; } set { tavoite = value ; saavutettu = false; } } 
     144    public Angle Tavoite { get { return tavoite; } set { tavoite = value; saavutettu = false; } } 
    87145    private Angle tavoite; 
    88146    private bool saavutettu = true; 
     
    93151            if (value == Direction.Left) { suuntaero = vasen; s = -1; } else { suuntaero = oikea; s = 1; } 
    94152            Tavoite = Tavoite; 
    95     } } 
     153        } 
     154    } 
     155 
    96156 
    97157    public KaantyvaOsa(double width, double height) 
     
    150210"                      ", 
    151211"                      ", 
    152  N   N  N  N        ", 
     212H    M     K      N ", 
    153213"=                     ", 
    154214                                             }; 
     
    163223    private Image pelaajanKuva = LoadImage("norsu"); 
    164224    private Image tahtiKuva = LoadImage("tahti"); 
     225    private Image kadenkuva = LoadImage("kasi"); 
     226    private Image miekankuva = LoadImage("miekka"); 
     227 
     228    //                                             sivu              taka               käsi 
     229    private Image[] herodeksenKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     230    private Image[] muriaaninKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     231    private Image[] knihdinKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     232    private Image[] mankinKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("tahti") }; 
    165233 
    166234    private SoundEffect maaliAani = LoadSoundEffect("maali"); 
     
    183251        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    184252 
    185        // Camera.Follow(poika1); 
     253        // Camera.Follow(poika1); 
    186254        Camera.ZoomFactor = 1.5; 
    187255        //Camera.ZoomToAllObjects(0); 
    188        // Camera.StayInLevel = true; 
     256        // Camera.StayInLevel = true; 
    189257    } 
    190258 
     
    196264        kentta.SetTileMethod('=', LisaaPohjaTaso); 
    197265        kentta.SetTileMethod('*', LisaaTahti); 
    198         kentta.SetTileMethod('N', LisaaPelaaja); 
     266        kentta.SetTileMethod('H', (p, l, k) => LisaaPelaaja(p, l, k, herodeksenKuvat)); 
     267        kentta.SetTileMethod('M', (p, l, k) => LisaaPelaaja(p, l, k, muriaaninKuvat)); 
     268        kentta.SetTileMethod('K', (p, l, k) => LisaaPelaaja(p, l, k, knihdinKuvat)); 
     269        kentta.SetTileMethod('N', (p, l, k) => LisaaPelaaja(p, l, k, mankinKuvat)); 
    199270        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    200271        //Level.CreateBorders(); 
     
    212283    void LisaaPohjaTaso(Vector paikka, double leveys, double korkeus) 
    213284    { 
    214         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys*100, korkeus); 
     285        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 100, korkeus); 
    215286        taso.Position = paikka; 
    216287        taso.Color = Color.Green; 
     
    228299    } 
    229300 
    230     void LisaaPelaaja(Vector paikka, double leveys, double korkeus) 
    231     { 
    232         Tiernapoika poika = new Tiernapoika(leveys*4, korkeus*4,pelaajanKuva, LoadImage("kasi")); 
     301    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image[] kuvat) 
     302    { 
     303        Tiernapoika poika = new Tiernapoika(this, leveys * 4, korkeus * 4, kuvat); 
    233304        poika.Position = paikka; 
    234305        poika.Color = Color.Red; 
     
    236307        AddCollisionHandler(poika, "tahti", TormaaTahteen); 
    237308        // Add(poika1.KiinnitysVartaloon); 
    238         Add(poika); 
    239309        pojat.Add(poika); 
    240310    } 
     
    246316        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", poika, nopeus); 
    247317        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
     318        Keyboard.Listen(Key.Down, ButtonState.Pressed, Polvistu, "Pelaaja hyppää", poika, hyppyNopeus); 
    248319 
    249320        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    250321        controller.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", poika, -nopeus); 
    251322        controller.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", poika, nopeus); 
    252         controller.Listen(Button.DPadUp, ButtonState.Down, Nouse, "Pelaaja nousee", poika, -nopeus); 
    253         controller.Listen(Button.DPadDown, ButtonState.Down, Polvistu, "Pelaaja polvistuu", poika, nopeus); 
    254         controller.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
     323        controller.Listen(Button.DPadUp, ButtonState.Down, Pois, "Pelaaja poispäin", poika, nopeus); 
     324        controller.Listen(Button.DPadDown, ButtonState.Down, Takaisin, "Pelaaja takaisinpäin", poika, nopeus); 
     325        controller.Listen(Button.Y, ButtonState.Down, Nouse, "Pelaaja nousee", poika, -nopeus); 
     326        controller.Listen(Button.A, ButtonState.Down, Polvistu, "Pelaaja polvistuu", poika, nopeus); 
     327        controller.Listen(Button.RightTrigger, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
     328        controller.Listen(Button.X, ButtonState.Pressed, () => poika.MiekkaTuppeen(), "Miekka tuppeen"); 
     329        controller.Listen(Button.B, ButtonState.Pressed, () => poika.MiekkaEsiin(), "Miekka esiin"); 
    255330 
    256331        controller.ListenAnalog(AnalogControl.RightStick, 0.03, LiikutaKatta, "Liikuta kättä", poika); 
     
    278353    { 
    279354        hahmo.Nouse(nopeus); 
     355    } 
     356 
     357    void Pois(Tiernapoika hahmo, double nopeus) 
     358    { 
     359        hahmo.Pois(nopeus); 
     360    } 
     361 
     362    void Takaisin(Tiernapoika hahmo, double nopeus) 
     363    { 
     364        hahmo.Takaisin(nopeus); 
    280365    } 
    281366 
Note: See TracChangeset for help on using the changeset viewer.