Changeset 4804 for 2013


Ignore:
Timestamp:
2013-11-23 15:46:37 (6 years ago)
Author:
vesal
Message:

pyorita

File:
1 edited

Legend:

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

    r4803 r4804  
    77using Jypeli.Widgets; 
    88 
     9 
     10 
     11public class Tiernapojat : PhysicsGame 
     12{ 
     13 
     14    private static readonly string[] taso0 = { 
     15"                   *    ", 
     16"      *                 ", 
     17"   *     *     *        ", 
     18" *        *   *         ", 
     19"                        ", 
     20"                        ", 
     21"                        ", 
     22"                        ", 
     23"        *               ", 
     24"      *  *    *         ", 
     25"                        ", 
     26"                        ", 
     27"                        ", 
     28"                        ", 
     29"#                       ", 
     30"   H    M      K      N ", 
     31"=                       ", 
     32                                             }; 
     33 
     34 
     35    const double nopeus = 200; 
     36    const double hyppyNopeus = 750; 
     37    const int RUUDUN_KOKO = 40; 
     38 
     39    private List<Tiernapoika> pojat = new List<Tiernapoika>(); 
     40 
     41    private Image pelaajanKuva = LoadImage("norsu"); 
     42    private Image tahtiKuva = LoadImage("tahti"); 
     43    private Image kadenkuva = LoadImage("kasi"); 
     44    private Image miekankuva = LoadImage("miekka"); 
     45 
     46    //                                             sivu              taka               käsi 
     47    private Image[] herodeksenKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     48    private Image[] muriaaninKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     49    private Image[] knihdinKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("miekka") }; 
     50    private Image[] mankinKuvat = { LoadImage("norsu"), LoadImage("norsu"), LoadImage("kasi"), LoadImage("tahti") }; 
     51 
     52    private SoundEffect maaliAani = LoadSoundEffect("maali"); 
     53 
     54    public override void Begin() 
     55    { 
     56        GamePad[] ohjaimet = { ControllerOne, ControllerTwo, ControllerThree, ControllerFour }; 
     57        Gravity = new Vector(0, -1000); 
     58 
     59        LuoKentta(); 
     60 
     61        int ci = 0; 
     62        foreach (Tiernapoika poika in pojat) 
     63        { 
     64            LisaaNappaimet(ohjaimet[ci++], poika); 
     65            if (ci >= ohjaimet.Length) break; 
     66        } 
     67 
     68        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     69        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     70 
     71        // Camera.Follow(poika1); 
     72        Camera.ZoomFactor = 1.5; 
     73        //Camera.ZoomToAllObjects(0); 
     74        // Camera.StayInLevel = true; 
     75    } 
     76 
     77    void LuoKentta() 
     78    { 
     79        // TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
     80        TileMap kentta = TileMap.FromStringArray(taso0); 
     81        kentta.SetTileMethod('#', LisaaTaso); 
     82        kentta.SetTileMethod('=', LisaaPohjaTaso); 
     83        kentta.SetTileMethod('*', LisaaTahti); 
     84        kentta.SetTileMethod('H', (p, l, k) => LisaaPelaaja(p, l, k, herodeksenKuvat)); 
     85        kentta.SetTileMethod('M', (p, l, k) => LisaaPelaaja(p, l, k, muriaaninKuvat)); 
     86        kentta.SetTileMethod('K', (p, l, k) => LisaaPelaaja(p, l, k, knihdinKuvat)); 
     87        kentta.SetTileMethod('N', (p, l, k) => LisaaPelaaja(p, l, k, mankinKuvat)); 
     88        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
     89        //Level.CreateBorders(); 
     90        Level.Background.CreateGradient(Color.SkyBlue, Color.Blue); 
     91    } 
     92 
     93    void LisaaTaso(Vector paikka, double leveys, double korkeus) 
     94    { 
     95        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     96        taso.Position = paikka; 
     97        taso.Color = Color.Green; 
     98        Add(taso); 
     99    } 
     100 
     101    void LisaaPohjaTaso(Vector paikka, double leveys, double korkeus) 
     102    { 
     103        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 100, korkeus); 
     104        taso.Position = paikka; 
     105        taso.Color = Color.Green; 
     106        Add(taso); 
     107    } 
     108 
     109    void LisaaTahti(Vector paikka, double leveys, double korkeus) 
     110    { 
     111        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     112        tahti.IgnoresCollisionResponse = true; 
     113        tahti.Position = paikka; 
     114        tahti.Image = tahtiKuva; 
     115        tahti.Tag = "tahti"; 
     116        Add(tahti); 
     117    } 
     118 
     119    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image[] kuvat) 
     120    { 
     121        Tiernapoika poika = new Tiernapoika(this, leveys * 4, korkeus * 4, kuvat); 
     122        poika.Position = paikka; 
     123        poika.Color = Color.Red; 
     124 
     125        AddCollisionHandler(poika, "tahti", TormaaTahteen); 
     126        // Add(poika1.KiinnitysVartaloon); 
     127        pojat.Add(poika); 
     128    } 
     129 
     130    void LisaaNappaimet(GamePad controller, Tiernapoika poika) 
     131    { 
     132 
     133        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", poika, -nopeus); 
     134        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", poika, nopeus); 
     135        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
     136        Keyboard.Listen(Key.Down, ButtonState.Pressed, Polvistu, "Pelaaja hyppää", poika, hyppyNopeus); 
     137        Keyboard.Listen(Key.Multiply, ButtonState.Pressed, () => poika.Pyorita(), "Pyöritä tähteä"); 
     138 
     139        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
     140        controller.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", poika, -nopeus); 
     141        controller.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", poika, nopeus); 
     142        controller.Listen(Button.DPadUp, ButtonState.Down, Pois, "Pelaaja poispäin", poika, nopeus); 
     143        controller.Listen(Button.DPadDown, ButtonState.Down, Takaisin, "Pelaaja takaisinpäin", poika, nopeus); 
     144        controller.Listen(Button.Y, ButtonState.Down, Nouse, "Pelaaja nousee", poika, -nopeus); 
     145        controller.Listen(Button.A, ButtonState.Down, Polvistu, "Pelaaja polvistuu", poika, nopeus); 
     146        controller.Listen(Button.RightTrigger, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
     147        controller.Listen(Button.RightShoulder, ButtonState.Pressed, () => poika.Pyorita(), "Pyöritä tähteä"); 
     148        controller.Listen(Button.X, ButtonState.Pressed, () => poika.MiekkaTuppeen(), "Miekka tuppeen"); 
     149        controller.Listen(Button.B, ButtonState.Pressed, () => poika.MiekkaEsiin(), "Miekka esiin"); 
     150 
     151        controller.ListenAnalog(AnalogControl.RightStick, 0.03, LiikutaKatta, "Liikuta kättä", poika); 
     152 
     153        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
     154    } 
     155 
     156    void LiikutaKatta(AnalogState a, Tiernapoika poika) 
     157    { 
     158        double kulma = a.StateVector.Y * 90; 
     159        poika.LiikkuvaOsa.Tavoite = Angle.FromDegrees(kulma); 
     160    } 
     161 
     162    void Liikuta(Tiernapoika hahmo, double nopeus) 
     163    { 
     164        hahmo.Walk(nopeus); 
     165    } 
     166 
     167    void Polvistu(Tiernapoika hahmo, double nopeus) 
     168    { 
     169        hahmo.Polvistu(nopeus); 
     170    } 
     171 
     172    void Nouse(Tiernapoika hahmo, double nopeus) 
     173    { 
     174        hahmo.Nouse(nopeus); 
     175    } 
     176 
     177    void Pois(Tiernapoika hahmo, double nopeus) 
     178    { 
     179        hahmo.Pois(nopeus); 
     180    } 
     181 
     182    void Takaisin(Tiernapoika hahmo, double nopeus) 
     183    { 
     184        hahmo.Takaisin(nopeus); 
     185    } 
     186 
     187    void Hyppaa(Tiernapoika hahmo, double nopeus) 
     188    { 
     189        hahmo.Nouse(nopeus); 
     190        hahmo.Jump(nopeus); 
     191    } 
     192 
     193    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti) 
     194    { 
     195        maaliAani.Play(); 
     196        MessageDisplay.Add("Keräsit tähden!"); 
     197        tahti.Destroy(); 
     198    } 
     199} 
     200 
    9201public class Tiernapoika : PlatformCharacter 
    10202{ 
     
    27219        : base(leveys, korkeus) 
    28220    { 
     221        Image = kuvat[0]; 
     222 
    29223        // Pojan oikea käsi 
    30224        liikkuvaOsa = new KaantyvaOsa(leveys, korkeus / 4); 
     
    32226        liikkuvaOsa.Y = Top - Height / 4; 
    33227        liikkuvaOsa.Color = Color.Gray; 
    34         // Add(kiinnitysVartaloon); 
    35228        // Poika ja käsi eivät saa törmätä toisiinsa 
    36229        CollisionIgnoreGroup = 1; 
    37230        liikkuvaOsa.CollisionIgnoreGroup = 1; 
    38231        liikkuvaOsa.Image = kuvat[2]; 
    39         Image = kuvat[0]; 
     232        liikkuvaKoko = liikkuvaOsa.Size; 
     233        Add(liikkuvaOsa); 
     234 
    40235        DirectionChanged += new Action<Direction>(Kaantyi); 
    41236        koko = Size; 
    42237        Mass = 40000.0; 
    43         liikkuvaKoko = liikkuvaOsa.Size; 
    44238        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 ); 
     239 
     240        miekka = new PhysicsObject(leveys * 1.5, 1); 
    50241        miekka.Image = kuvat[3]; 
    51242        miekka.Height = miekka.Width * miekka.Image.Height / miekka.Image.Width; 
    52243        miekka.IgnoresGravity = true; 
    53244        miekka.CollisionIgnoreGroup = 1; 
     245        miekanKoko = miekka.Size; 
     246        miekka.Angle = Angle.FromDegrees(10); 
    54247        liikkuvaOsa.Add(miekka); 
    55         miekanKoko = miekka.Size; 
    56         miekka.Angle = Angle.FromDegrees(20); 
     248 
     249        peli.Add(this, 1); 
     250        //peli.Add(liikkuvaOsa); 
     251        this.peli = peli; 
    57252        SaadaKoko(koko); 
    58253    } 
     
    60255    private void Kaantyi(Direction suunta) 
    61256    { 
     257        miekka.StopAngular(); 
    62258        if (suunta == Direction.Left) 
    63259        { 
    64260            liikkuvaOsa.X = -Width / 2 * 0.9; 
    65             miekka.Angle = Angle.FromDegrees(-20); 
     261            miekka.Angle = Angle.FromDegrees(-10); 
    66262        } 
    67263        else 
    68264        { 
    69265            liikkuvaOsa.X = Width / 2 * 0.9; 
    70             miekka.Angle = Angle.FromDegrees(20); 
     266            miekka.Angle = Angle.FromDegrees(10); 
    71267        } 
    72268        liikkuvaOsa.Suunta = suunta; 
     
    119315    { 
    120316        miekka.IsVisible = false; 
     317        liikkuvaOsa.Tavoite = Angle.FromDegrees(-90); 
    121318    } 
    122319 
     
    124321    { 
    125322        miekka.IsVisible = true; 
     323    } 
     324 
     325    internal void Pyorita() 
     326    { 
     327        miekka.ApplyTorque(100000); 
    126328    } 
    127329} 
     
    189391} 
    190392 
    191  
    192  
    193 public class Tiernapojat : PhysicsGame 
    194 { 
    195  
    196     private static readonly string[] taso0 = { 
    197 "         *            ", 
    198 "         #            ", 
    199 "                      ", 
    200 "                      ", 
    201 "                      ", 
    202 "                      ", 
    203 "                      ", 
    204 "                      ", 
    205 "                      ", 
    206 "                      ", 
    207 "                      ", 
    208 "                      ", 
    209 "                      ", 
    210 "                      ", 
    211 "                      ", 
    212 "  H    M     K      N ", 
    213 "=                     ", 
    214                                              }; 
    215  
    216  
    217     const double nopeus = 200; 
    218     const double hyppyNopeus = 750; 
    219     const int RUUDUN_KOKO = 40; 
    220  
    221     private List<Tiernapoika> pojat = new List<Tiernapoika>(); 
    222  
    223     private Image pelaajanKuva = LoadImage("norsu"); 
    224     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") }; 
    233  
    234     private SoundEffect maaliAani = LoadSoundEffect("maali"); 
    235  
    236     public override void Begin() 
    237     { 
    238         GamePad[] ohjaimet = { ControllerOne, ControllerTwo, ControllerThree, ControllerFour }; 
    239         Gravity = new Vector(0, -1000); 
    240  
    241         LuoKentta(); 
    242  
    243         int ci = 0; 
    244         foreach (Tiernapoika poika in pojat) 
    245         { 
    246             LisaaNappaimet(ohjaimet[ci++], poika); 
    247             if (ci >= ohjaimet.Length) break; 
    248         } 
    249  
    250         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    251         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    252  
    253         // Camera.Follow(poika1); 
    254         Camera.ZoomFactor = 1.5; 
    255         //Camera.ZoomToAllObjects(0); 
    256         // Camera.StayInLevel = true; 
    257     } 
    258  
    259     void LuoKentta() 
    260     { 
    261         // TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
    262         TileMap kentta = TileMap.FromStringArray(taso0); 
    263         kentta.SetTileMethod('#', LisaaTaso); 
    264         kentta.SetTileMethod('=', LisaaPohjaTaso); 
    265         kentta.SetTileMethod('*', LisaaTahti); 
    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)); 
    270         kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    271         //Level.CreateBorders(); 
    272         Level.Background.CreateGradient(Color.White, Color.SkyBlue); 
    273     } 
    274  
    275     void LisaaTaso(Vector paikka, double leveys, double korkeus) 
    276     { 
    277         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    278         taso.Position = paikka; 
    279         taso.Color = Color.Green; 
    280         Add(taso); 
    281     } 
    282  
    283     void LisaaPohjaTaso(Vector paikka, double leveys, double korkeus) 
    284     { 
    285         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys * 100, korkeus); 
    286         taso.Position = paikka; 
    287         taso.Color = Color.Green; 
    288         Add(taso); 
    289     } 
    290  
    291     void LisaaTahti(Vector paikka, double leveys, double korkeus) 
    292     { 
    293         PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    294         tahti.IgnoresCollisionResponse = true; 
    295         tahti.Position = paikka; 
    296         tahti.Image = tahtiKuva; 
    297         tahti.Tag = "tahti"; 
    298         Add(tahti); 
    299     } 
    300  
    301     void LisaaPelaaja(Vector paikka, double leveys, double korkeus, Image[] kuvat) 
    302     { 
    303         Tiernapoika poika = new Tiernapoika(this, leveys * 4, korkeus * 4, kuvat); 
    304         poika.Position = paikka; 
    305         poika.Color = Color.Red; 
    306  
    307         AddCollisionHandler(poika, "tahti", TormaaTahteen); 
    308         // Add(poika1.KiinnitysVartaloon); 
    309         pojat.Add(poika); 
    310     } 
    311  
    312     void LisaaNappaimet(GamePad controller, Tiernapoika poika) 
    313     { 
    314  
    315         Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", poika, -nopeus); 
    316         Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", poika, nopeus); 
    317         Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", poika, hyppyNopeus); 
    318         Keyboard.Listen(Key.Down, ButtonState.Pressed, Polvistu, "Pelaaja hyppää", poika, hyppyNopeus); 
    319  
    320         controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    321         controller.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", poika, -nopeus); 
    322         controller.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", poika, nopeus); 
    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"); 
    330  
    331         controller.ListenAnalog(AnalogControl.RightStick, 0.03, LiikutaKatta, "Liikuta kättä", poika); 
    332  
    333         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    334     } 
    335  
    336     void LiikutaKatta(AnalogState a, Tiernapoika poika) 
    337     { 
    338         double kulma = a.StateVector.Y * 90; 
    339         poika.LiikkuvaOsa.Tavoite = Angle.FromDegrees(kulma); 
    340     } 
    341  
    342     void Liikuta(Tiernapoika hahmo, double nopeus) 
    343     { 
    344         hahmo.Walk(nopeus); 
    345     } 
    346  
    347     void Polvistu(Tiernapoika hahmo, double nopeus) 
    348     { 
    349         hahmo.Polvistu(nopeus); 
    350     } 
    351  
    352     void Nouse(Tiernapoika hahmo, double nopeus) 
    353     { 
    354         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); 
    365     } 
    366  
    367     void Hyppaa(Tiernapoika hahmo, double nopeus) 
    368     { 
    369         hahmo.Jump(nopeus); 
    370     } 
    371  
    372     void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti) 
    373     { 
    374         maaliAani.Play(); 
    375         MessageDisplay.Add("Keräsit tähden!"); 
    376         tahti.Destroy(); 
    377     } 
    378 } 
Note: See TracChangeset for help on using the changeset viewer.