Changeset 5120 for 2014/26


Ignore:
Timestamp:
2014-06-26 14:43:51 (5 years ago)
Author:
pypelli
Message:
 
Location:
2014/26/Pyry-PetteriP/Motopeli
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • 2014/26/Pyry-PetteriP/Motopeli/Motopeli/Motopeli/Motopeli.cs

    r5109 r5120  
    1010{ 
    1111    Image autoKuva = LoadImage("auto2"); 
    12     Automobile moottoripyora; 
     12    Auto auto1; 
    1313    RoadMap tie; 
     14    Automobile auto2; 
     15 
     16 
     17    ScoreList topLista = new ScoreList(10, true, 1000); 
     18 
     19 
     20 
     21    Timer aikaLaskuri; 
     22 
     23    bool osuttuOikeaanViivaan = false; 
     24    bool osuttuAlaViivaan = false; 
     25    bool osuttuVasempaanViivaan = false; 
    1426 
    1527    Vector[] reittiPisteet = new Vector[] 
    1628    {      
    1729      new Vector( 0, 300 ), 
    18       new Vector(400,300 ),//suoran päätös oikealla ulhaalla 
     30      new Vector(400,300 ), // suoran päätös oikealla ylhaalla 
    1931      new Vector(500, 250), 
    2032      new Vector (600,100),   
     
    4254      }; 
    4355 
    44  
    45  
    46  
    47  
    48  
    49  
    50  
    51  
    52  
    53  
    54  
    55  
    56  
    57  
    58  
     56    List<Automobile> autot; 
    5957 
    6058    public override void Begin() 
    6159    { 
    62         AloitaAlusta(); 
     60        autot = new List<Automobile>(); 
     61        topLista = DataStorage.TryLoad<ScoreList>(topLista, "pisteet.xml"); 
     62        Alkuvalikko(); 
     63    } 
     64 
     65    void Alku(Window sender) 
     66    { 
     67        Alkuvalikko(); 
     68    } 
     69 
     70    void Alkuvalikko() 
     71    { 
     72        ClearAll(); 
     73        autot.Clear(); 
     74        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Multplayer", "Parhaat pisteet", "Lopeta"); 
     75        Add(alkuValikko); 
     76 
     77        alkuValikko.AddItemHandler(0, AloitaAlusta, 1); 
     78        alkuValikko.AddItemHandler(1, AloitaAlusta, 2); 
     79        alkuValikko.AddItemHandler(2, ParhaatAjat); 
     80        alkuValikko.AddItemHandler(3, Exit); 
     81 
     82    } 
     83 
     84 
     85    void AloitaAlusta(int pelaajienMaara) 
     86    { 
     87        ClearAll(); 
     88 
     89 
    6390        SmoothTextures = false; 
    6491 
    65  
    66  
    67         //LuoKaide(); 
    68  
     92        Luokentta(); 
     93        LisaaMaaliViiva(); 
     94 
     95        LisaaRataPisteet(200, 20, 600, 0, "oikea"); 
     96        LisaaRataPisteet(20, 200, 50, -300, "ala"); 
     97        LisaaRataPisteet(200, 20, -530, 160, "vasen"); 
     98 
     99 
     100        auto1 = TeeAuto(new Vector(0, 300)); 
     101        autot.Add(auto1); 
     102 
     103        if (pelaajienMaara == 2) 
     104        { 
     105            auto2 = TeeAuto(new Vector(0, 330)); 
     106            autot.Add(auto2); 
     107        } 
     108 
     109        AsetaOhjaimet(pelaajienMaara); 
     110 
     111 
     112        Camera.ZoomToLevel(); 
     113 
     114        LisaaAjastimet(); 
     115        LuoAikaLaskuri(); 
     116    } 
     117 
     118 
     119    void ParhaatAjat() 
     120    { 
     121        HighScoreWindow topIkkuna = new HighScoreWindow( 
     122                              "Parhaat ajat", 
     123                              topLista); 
     124        topIkkuna.Closed += TallennaAjat; 
     125        Add(topIkkuna); 
    69126    } 
    70127 
     
    77134 
    78135        Level.Background.Color = Color.Green; 
    79  
    80136        Level.Size = Screen.Size; 
    81  
    82137        Level.CreateBorders(0.5, false); 
    83  
    84     } 
    85  
    86  
    87     void Moottoripyora() 
    88     { 
    89         moottoripyora = new Automobile(35.0, 20.0); 
    90         Add(moottoripyora); 
    91         moottoripyora.Position = new Vector(0, 300); 
    92         moottoripyora.Image = autoKuva; 
    93         moottoripyora.AngularDamping = 0.95; 
     138    } 
     139 
     140 
     141    Auto TeeAuto(Vector paikka) 
     142    { 
     143        Auto auto = new Auto(35.0, 20.0); 
     144        Add(auto); 
     145        auto.Position = paikka; 
     146        auto.Image = autoKuva; 
     147        auto.AngularDamping = 0.95; 
    94148        //moottoripyora.MomentOfInertia = 400; 
    95         moottoripyora.TopSpeed = 10; 
    96         moottoripyora.Acceleration = 200; 
    97         moottoripyora.BrakeDeceleration = 500; 
    98     } 
    99  
    100  
    101     void AsetaOhjaimet() 
    102     { 
    103         Keyboard.Listen(Key.D, ButtonState.Down, KaannaPelaajaa, null, -2000.0); 
    104         Keyboard.Listen(Key.A, ButtonState.Down, KaannaPelaajaa, null, 2000.0); 
    105         Keyboard.Listen(Key.W, ButtonState.Down, KaasutaPelaajaa, null); 
    106         Keyboard.Listen(Key.S, ButtonState.Down, TaaksepainPelaajaa, null); 
     149        auto.TopSpeed = 10; 
     150        auto.Acceleration = 200; 
     151 
     152        AddCollisionHandler<Auto, PhysicsObject>(auto, "maali", TuliMaaliin); 
     153        AddCollisionHandler<Auto, PhysicsObject>(auto, "oikea", delegate { auto.osuttuOikeaanViivaan = true; }); 
     154        AddCollisionHandler<Auto, PhysicsObject>(auto, "ala", delegate { auto.osuttuAlaViivaan = true; }); 
     155        AddCollisionHandler<Auto, PhysicsObject>(auto, "vasen", delegate { auto.osuttuVasempaanViivaan = true; }); 
     156        return auto; 
     157    } 
     158 
     159 
     160    void AsetaOhjaimet(int pelaajienMaara) 
     161    { 
     162        Keyboard.Listen(Key.D, ButtonState.Down, KaannaPelaajaa, null, auto1, -2000.0); 
     163        Keyboard.Listen(Key.A, ButtonState.Down, KaannaPelaajaa, null, auto1, 2000.0); 
     164        Keyboard.Listen(Key.W, ButtonState.Down, KaasutaPelaajaa, null, auto1); 
     165        Keyboard.Listen(Key.S, ButtonState.Down, TaaksepainPelaajaa, null, auto1); 
    107166        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    108         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    109         Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloittaa Pelin Alusta"); 
    110  
    111     } 
    112  
    113  
    114     void LiikutaPelaajaa(Vector vektori) 
    115     { 
    116         moottoripyora.Push(vektori); 
    117     } 
    118     void KaannaPelaajaa(double kulma) 
     167        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Alkuvalikko, "Menee Alkuvalikkoon"); 
     168        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloittaa Pelin Alusta", pelaajienMaara); 
     169 
     170        if (pelaajienMaara == 1) return; 
     171 
     172        Keyboard.Listen(Key.Right, ButtonState.Down, KaannaPelaajaa, null, auto2, -2000.0); 
     173        Keyboard.Listen(Key.Left, ButtonState.Down, KaannaPelaajaa, null, auto2, 2000.0); 
     174        Keyboard.Listen(Key.Up, ButtonState.Down, KaasutaPelaajaa, null, auto2); 
     175        Keyboard.Listen(Key.Down, ButtonState.Down, TaaksepainPelaajaa, null, auto2); 
     176    } 
     177 
     178 
     179    void LiikutaPelaajaa(Automobile auto, Vector vektori) 
     180    { 
     181        auto.Push(vektori); 
     182    } 
     183 
     184    void KaannaPelaajaa(Automobile auto, double kulma) 
    119185    { 
    120186        //moottoripyora.Angle += kulma; 
    121         moottoripyora.ApplyTorque(kulma); 
    122     } 
    123  
    124     void KaasutaPelaajaa() 
    125     { 
    126         moottoripyora.Accelerate(); 
    127     } 
    128     void TaaksepainPelaajaa() 
    129     { 
    130         moottoripyora.Brake(); 
    131     } 
     187        auto.ApplyTorque(kulma); 
     188    } 
     189 
     190    void KaasutaPelaajaa(Automobile auto) 
     191    { 
     192        auto.Accelerate(); 
     193    } 
     194 
     195    void TaaksepainPelaajaa(Automobile auto) 
     196    { 
     197        auto.Brake(); 
     198    } 
     199 
    132200    void LuoMerkki(Vector paikka) 
    133201    { 
     
    136204        palikka.Position = paikka; 
    137205        palikka.Color = Color.Black; 
    138  
    139206    } 
    140207 
     
    154221    //    return patka; 
    155222    //} 
    156     void AloitaAlusta() 
    157     { 
    158         ClearAll(); 
    159         Luokentta(); 
    160         lisaaMaaliViiva(); 
    161         AsetaOhjaimet(); 
    162         // LuoKaide(); 
    163         Moottoripyora(); 
    164         Camera.ZoomToLevel(); 
    165         LisaaAjastimet(); 
    166         LuoAikaLaskuri(); 
    167     } 
    168  
    169     void lisaaMaaliViiva() 
     223 
     224 
     225    void LisaaMaaliViiva() 
    170226    { 
    171227        PhysicsObject maali = PhysicsObject.CreateStaticObject(20, 200); 
     
    173229        maali.Position = new Vector(0, 300); 
    174230        maali.IgnoresCollisionResponse = true; 
     231        maali.Tag = "maali"; 
    175232        Add(maali); 
    176233    } 
    177234 
     235 
     236    void LisaaRataPisteet(int leveys, int korkeus, int paikkaX, int paikkaY, string tag) 
     237    { 
     238        PhysicsObject viiva = new PhysicsObject(leveys, korkeus); 
     239        viiva.IsVisible = false; 
     240        viiva.Position = new Vector(paikkaX, paikkaY); 
     241        viiva.IgnoresCollisionResponse = true; 
     242        viiva.Tag = tag; 
     243        Add(viiva); 
     244    } 
    178245 
    179246    void LisaaAjastimet() 
     
    181248        Timer ajastin = new Timer(); 
    182249        ajastin.Interval = 0.1; 
    183         ajastin.Timeout += Asetaautonnopedet; 
     250        ajastin.Timeout += AsetaAutojenNopedet; 
    184251        ajastin.Start(); 
    185252    } 
    186253 
    187254 
    188     void Asetaautonnopedet() 
    189     { 
    190         if (tie.IsInside(moottoripyora.Position)) 
     255    void AsetaAutojenNopedet() 
     256    { 
     257        foreach (Auto auto in autot) 
    191258        { 
    192             moottoripyora.MaxVelocity = 1000; 
     259            if (tie.IsInside(auto.Position)) 
     260            { 
     261                auto.MaxVelocity = 1000; 
     262            } 
     263 
     264            else 
     265            { 
     266                auto.MaxVelocity = 100; 
     267            } 
    193268        } 
    194         else 
    195         { 
    196             moottoripyora.MaxVelocity = 100; 
    197         } 
    198  
    199269    } 
    200270 
     
    202272    void LuoAikaLaskuri() 
    203273    { 
    204         Timer aikaLaskuri = new Timer(); 
     274        aikaLaskuri = new Timer(); 
    205275        aikaLaskuri.Start(); 
    206276 
    207277        Label aikaNaytto = new Label(); 
    208         aikaNaytto.TextColor = Color.White; 
     278        aikaNaytto.TextColor = Color.Black; 
    209279        aikaNaytto.DecimalPlaces = 1; 
    210280        aikaNaytto.BindTo(aikaLaskuri.SecondCounter); 
     
    212282        Add(aikaNaytto); 
    213283    } 
     284 
     285 
     286    void TuliMaaliin(Auto auto, PhysicsObject maali) 
     287    { 
     288        if (auto.osuttuAlaViivaan && auto.osuttuOikeaanViivaan && auto.osuttuVasempaanViivaan) 
     289        { 
     290            aikaLaskuri.Stop(); 
     291            MessageDisplay.Add("MAALI!"); 
     292            RemoveCollisionHandlers(null, null, "maali", null); 
     293            HighScoreWindow topIkkuna = new HighScoreWindow( 
     294                             "Parhaat pisteet", 
     295                             "Onneksi olkoon, pääsit listalle ajalla {0:0.00}s! Syötä nimesi:", 
     296                             topLista, aikaLaskuri.CurrentTime); 
     297            topIkkuna.Closed += TallennaAjat; 
     298            Add(topIkkuna); 
     299        } 
     300    } 
     301 
     302 
     303    void TallennaAjat(Window sender) 
     304    { 
     305        DataStorage.Save<ScoreList>(topLista, "pisteet.xml"); 
     306        Alkuvalikko(); 
     307    } 
    214308} 
    215  
    216  
    217  
  • 2014/26/Pyry-PetteriP/Motopeli/Motopeli/Motopeli/Motopeli.csproj

    r5063 r5120  
    111111  </ItemGroup> 
    112112  <ItemGroup> 
     113    <Compile Include="Auto.cs" /> 
    113114    <Compile Include="Ohjelma.cs" /> 
    114115    <Compile Include="Motopeli.cs" /> 
Note: See TracChangeset for help on using the changeset viewer.