Ignore:
Timestamp:
2017-06-15 15:02:29 (2 years ago)
Author:
npo17_1
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2016/koodauskerho/OttoK/Catboarding/Catboarding/Catboarding/Catboarding.cs

    r8680 r8738  
    88public class Catboarding : PhysicsGame 
    99{ 
    10     const double nopeus = 200; 
    1110    const double hyppyNopeus = 750; 
    1211    const int RUUDUN_KOKO = 40; 
     
    1514    PhysicsObject pelaaja1; 
    1615    PhysicsObject Kissa; 
     16    AxleJoint Liitos; 
    1717 
    1818    Image LumilaudanKuva = LoadImage("Snowboard"); 
    1919    Image tahtiKuva = LoadImage("tahti"); 
    2020    Image KissanKuva = LoadImage("Cat"); 
     21    Image KissanKuva2 = LoadImage("Cat2"); 
    2122 
    22     SoundEffect maaliAani = LoadSoundEffect("maali"); 
     23    SoundEffect Hyppyaani = LoadSoundEffect("Meow"); 
     24     
     25 
    2326 
    2427    public override void Begin() 
     
    2629        SmoothTextures = true; 
    2730        Gravity = new Vector(0, -1000); 
    28         //Level.CreateBorders(); 
     31        //Level.CreateLeftBorder(); 
    2932 
    3033        LuoKentta(); 
     34        LisaaKissa(172/2, 82/2); 
    3135        LisaaNappaimet(); 
    3236 
    33         Camera.Follow(pelaaja1); 
     37        Camera.Follow(Kissa); 
    3438        Camera.ZoomFactor = 1.2; 
    3539        //Camera.ZoomToAllObjects(); 
    36         Camera.StayInLevel = true; 
     40        //Camera.StayInLevel = true; 
    3741        IsFullScreen = true; 
    38         LisaaKissa(172/2, 82/2); 
     42        MediaPlayer.Play("MUSIC"); 
     43        pelaaja1.Hit(new Vector(900,0)); 
     44    } 
     45 
     46    double[] Jako(double[] taulukko) 
     47    { 
     48        double[] uusi = new double[taulukko.Length*2]; 
     49        for (int i = 0; i < taulukko.Length-1; i++) 
     50        { 
     51            uusi[i*2] = taulukko[i]; 
     52 
     53            uusi[i*2+1] = (taulukko[i] + taulukko[i+1]) * 0.5; 
     54        } 
     55        // alemmassa ei ole järkeä, mutta en jaksanut ajatella sitä loppuun asti t. simo 
     56        uusi[uusi.Length - 2] = taulukko[taulukko.Length - 1]; 
     57        uusi[uusi.Length - 1] = taulukko[taulukko.Length - 1]; 
     58        return uusi; 
    3959    } 
    4060 
     
    4565        //kentta.SetTileMethod('*', LisaaTahti); 
    4666        //kentta.SetTileMethod('N', LisaaPelaaja); 
    47         LisaaPelaaja(new Vector(-420,30),50,50); 
     67        LisaaPelaaja(new Vector(500,10.0),50,50); 
    4868        Level.Background.CreateGradient(Color.LightBlue, Color.SkyBlue); 
    4969 
    50         double[] korkeudet = new double[] {900, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 900}; 
     70        double[] korkeudet = new double[] { 9000, 9000, 8700, 7900, 6900, 6200, 5700, 5000}; 
     71 
     72        korkeudet = Jako(Jako(korkeudet)); 
     73 
    5174        Surface maasto = new Surface(5000,korkeudet, 1.0); 
    52         maasto.Y = 0-350; 
    53         maasto.X = -125; 
     75        maasto.Tag = "maasto"; 
     76        maasto.Y = -maasto.Height/2; 
     77        maasto.X = maasto.Width/2; 
     78         
    5479        maasto.Color = Color.White; 
    55         maasto.KineticFriction = 0.03; 
    56         maasto.StaticFriction = 0.1; 
     80        maasto.KineticFriction = 0.0; 
     81        maasto.StaticFriction = 0.0; 
    5782     
    5883        Add(maasto); 
     
    81106    void LisaaPelaaja(Vector paikka, double leveys, double korkeus) 
    82107    { 
    83         pelaaja1 = new PhysicsObject(148/1.5, 16/1.5, Shape.FromImage(LumilaudanKuva)); 
     108        pelaaja1 = new PhysicsObject(148/1.5, 25/1.5, Shape.FromImage(LumilaudanKuva)); 
    84109        pelaaja1.Position = paikka; 
    85110        pelaaja1.Mass = 4.0; 
    86111        pelaaja1.Image = LumilaudanKuva; 
    87112        pelaaja1.CanRotate = true; 
    88         //pelaaja1.MaxAngularVelocity = 15; 
     113        pelaaja1.MaxAngularVelocity = 20; 
    89114        Add(pelaaja1); 
    90115        AddCollisionHandler(pelaaja1, tarkista); 
     
    97122        Kissa.Image = KissanKuva; 
    98123        Add(Kissa); 
    99         AxleJoint Liitos = new AxleJoint(pelaaja1, Kissa); 
     124        Liitos = new AxleJoint(pelaaja1, Kissa); 
     125        Liitos.Softness = 1; 
     126        AddCollisionHandler(Kissa, "maasto", delegate(PhysicsObject a, PhysicsObject b) 
     127        { 
     128           Liitos.Destroy(); 
     129            Kissa.Image = KissanKuva2; 
     130 
     131        }); 
    100132        Add(Liitos); 
    101133    } 
     
    103135    protected override void Update(Time time) 
    104136    { 
     137        if(!Liitos.IsDestroyed) 
    105138        Kissa.Angle = pelaaja1.Angle; 
    106139        base.Update(time); 
     
    119152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    120153 
    121         //Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
    122         //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    123         //Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    124  
    125         Keyboard.Listen(Key.Left, ButtonState.Down, RLeft, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
    126         Keyboard.Listen(Key.Right, ButtonState.Down, RRight, "Liikkuu vasemmalle", pelaaja1, nopeus); 
     154        Keyboard.Listen(Key.Left, ButtonState.Down, Pyori, "Liikkuu vasemmalle", pelaaja1, 1.0); 
     155        Keyboard.Listen(Key.Right, ButtonState.Down, Pyori, "Liikkuu vasemmalle", pelaaja1, -1.0); 
    127156        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    128157 
    129158        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
    130159 
    131         //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus); 
    132         //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus); 
    133         //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     160        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Tatti, "Liikuta pelaajaa tattia pyörittämällä.", pelaaja1); 
     161        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    134162 
    135163        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    136164    } 
    137165 
    138     void RLeft(PhysicsObject hahmo, double nopeus) 
     166    void Tatti(AnalogState tatinTila,PhysicsObject hahmo) 
    139167    { 
    140         hahmo.AngularVelocity += 1; 
     168        Pyori(hahmo, -tatinTila.StateVector.X); 
    141169    } 
    142  
    143     void RRight(PhysicsObject hahmo, double nopeus) 
     170    void Pyori(PhysicsObject hahmo, double nopeus) 
    144171    { 
    145         hahmo.AngularVelocity -= 1; 
     172        if (!Liitos.IsDestroyed) 
     173            hahmo.AngularVelocity += nopeus; 
    146174    } 
    147175 
    148176    void Hyppaa(PhysicsObject hahmo, double nopeus) 
    149177    { 
    150         if(osuu) 
     178        if(osuu && !Liitos.IsDestroyed) 
    151179        { 
    152180            hahmo.Hit(new Vector(0, 2000)); 
     181            Hyppyaani.Play(); 
    153182            osuu = false; 
    154183        } 
     
    157186    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti) 
    158187    { 
    159         maaliAani.Play(); 
     188        Hyppyaani.Play(); 
    160189        MessageDisplay.Add("Keräsit tähden!"); 
    161190        tahti.Destroy(); 
Note: See TracChangeset for help on using the changeset viewer.