Changeset 1609 for 2010


Ignore:
Timestamp:
2010-08-04 15:00:54 (9 years ago)
Author:
hniemi
Message:

Kääntymistä paranneltu, reunoja säädetty

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/23/hniemi/Matopeli/Peli.cs

    r1585 r1609  
    1010    const double ruudunKoko = 20; 
    1111    const int madonPituus = 6; 
     12    const double vaikeusaste = 0.2; 
     13 
    1214    int ruutujaVaakasuunnassa; 
    1315    int ruutujaPystysuunnassa; 
     
    1517    List<GameObject> kerattavat = new List<GameObject>(); 
    1618    Direction liikkumissuunta; 
     19    Direction viimesuunta; 
    1720    Timer liikutusajastin; 
    1821 
     
    3033        Level.Height = 500; 
    3134        Level.Width = 500; 
     35        Level.CreateBorders(true); 
    3236        ruutujaPystysuunnassa = (int)Math.Floor(Level.Height / ruudunKoko); 
    3337        ruutujaVaakasuunnassa = (int)Math.Floor(Level.Width / ruudunKoko); 
     
    3943        { 
    4044            mato.Add(new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 
     45            mato[i].Tag = "matopala"; 
    4146            Add(mato[i]); 
    4247        } 
     
    4449        //Aka. Too lazy for layers 
    4550        mato.Insert(0, new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 
     51        mato[0].Tag = "matopala"; 
    4652        Add(mato[0]);  
    4753    } 
     
    6571    } 
    6672 
     73    /// <summary> 
     74    /// Asettaa madon liikkumissuunnan 
     75    ///  
     76    /// Ei voi asettaa menemään matoa taaksepäin 
     77    /// </summary> 
     78    /// <param name="suunta">Asetettava suunta</param> 
    6779    void AsetaSuunta(Direction suunta) 
    6880    { 
    69         liikkumissuunta = suunta; 
     81        if (Directions.Inverse(suunta) != viimesuunta) liikkumissuunta = suunta; 
    7082    } 
    7183 
     
    7385    { 
    7486        liikutusajastin = new Timer(); 
    75         liikutusajastin.Interval = 0.4; 
     87        liikutusajastin.Interval = vaikeusaste; 
    7688        liikutusajastin.Trigger += SiirraMatoa; 
    7789    } 
     
    8698        } 
    8799 
    88         bool tormasikoItseensa = TarkistaSeuraavaAskel(mato[0].Position + suunta); 
     100        GameObject tormasiko = MitaSisaltaa(mato[0].Position + suunta); 
    89101 
    90102        mato[0].Position = mato[0].Position + suunta; 
    91103 
    92         if (tormasikoItseensa) 
     104        if (tormasiko != null && (tormasiko.Tag.ToString() == "seina" || tormasiko.Tag.ToString() == "matopala")) 
    93105        { 
    94106            liikutusajastin.Stop(); 
    95107            mato[0].Color = Color.Blue; 
    96108        } 
     109        viimesuunta = liikkumissuunta; 
    97110    } 
    98111 
    99     bool TarkistaSeuraavaAskel(Vector paikka) 
     112    /// <summary> 
     113    /// Palauttaa annetun koordinaatin sisällön 
     114    ///  
     115    /// Etsii ainoastaan kerättävistä, madosta ja seinistä. 
     116    ///  
     117    /// Seinien peliobjektin tag on "seina" 
     118    /// </summary> 
     119    /// <param name="paikka">Tarkistettava paikka</param> 
     120    /// <returns>null, jos paikasta ei löydy mitään</returns> 
     121    GameObject MitaSisaltaa(Vector paikka) 
    100122    { 
     123        double puskuri = ruudunKoko / 5; 
     124 
     125        //Tarkistaa, onko annettu paikka madon sisällä 
    101126        foreach (GameObject matopala in mato) 
    102127        { 
    103             if (Vector.Distance(paikka, matopala.Position) < 10) 
     128            if (Vector.Distance(paikka, matopala.Position) < puskuri) 
    104129            { 
    105                 return true; 
     130                return matopala; 
    106131            } 
    107132        } 
    108         return false; 
     133 
     134        foreach (GameObject kerattava in kerattavat) 
     135        { 
     136            if (Vector.Distance(paikka, kerattava.Position) < puskuri) 
     137            { 
     138                return kerattava; 
     139            } 
     140        } 
     141 
     142        //Tarkistaa, onko paikka pelialueen ulkopuolella 
     143        GameObject seina = new GameObject(1, 1); 
     144        seina.Tag = "seina"; 
     145        if (paikka.X < Level.Left || paikka.X > Level.Right) return seina; 
     146        if (paikka.Y < Level.Bottom || paikka.Y > Level.Top) return seina; 
     147 
     148        return null; 
    109149        } 
    110150 
Note: See TracChangeset for help on using the changeset viewer.