Changeset 1609 for 2010/23/hniemi/Matopeli/Peli.cs
- Timestamp:
- 2010-08-04 15:00:54 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/23/hniemi/Matopeli/Peli.cs
r1585 r1609 10 10 const double ruudunKoko = 20; 11 11 const int madonPituus = 6; 12 const double vaikeusaste = 0.2; 13 12 14 int ruutujaVaakasuunnassa; 13 15 int ruutujaPystysuunnassa; … … 15 17 List<GameObject> kerattavat = new List<GameObject>(); 16 18 Direction liikkumissuunta; 19 Direction viimesuunta; 17 20 Timer liikutusajastin; 18 21 … … 30 33 Level.Height = 500; 31 34 Level.Width = 500; 35 Level.CreateBorders(true); 32 36 ruutujaPystysuunnassa = (int)Math.Floor(Level.Height / ruudunKoko); 33 37 ruutujaVaakasuunnassa = (int)Math.Floor(Level.Width / ruudunKoko); … … 39 43 { 40 44 mato.Add(new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 45 mato[i].Tag = "matopala"; 41 46 Add(mato[i]); 42 47 } … … 44 49 //Aka. Too lazy for layers 45 50 mato.Insert(0, new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 51 mato[0].Tag = "matopala"; 46 52 Add(mato[0]); 47 53 } … … 65 71 } 66 72 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> 67 79 void AsetaSuunta(Direction suunta) 68 80 { 69 liikkumissuunta = suunta;81 if (Directions.Inverse(suunta) != viimesuunta) liikkumissuunta = suunta; 70 82 } 71 83 … … 73 85 { 74 86 liikutusajastin = new Timer(); 75 liikutusajastin.Interval = 0.4;87 liikutusajastin.Interval = vaikeusaste; 76 88 liikutusajastin.Trigger += SiirraMatoa; 77 89 } … … 86 98 } 87 99 88 bool tormasikoItseensa = TarkistaSeuraavaAskel(mato[0].Position + suunta);100 GameObject tormasiko = MitaSisaltaa(mato[0].Position + suunta); 89 101 90 102 mato[0].Position = mato[0].Position + suunta; 91 103 92 if (tormasiko Itseensa)104 if (tormasiko != null && (tormasiko.Tag.ToString() == "seina" || tormasiko.Tag.ToString() == "matopala")) 93 105 { 94 106 liikutusajastin.Stop(); 95 107 mato[0].Color = Color.Blue; 96 108 } 109 viimesuunta = liikkumissuunta; 97 110 } 98 111 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) 100 122 { 123 double puskuri = ruudunKoko / 5; 124 125 //Tarkistaa, onko annettu paikka madon sisällä 101 126 foreach (GameObject matopala in mato) 102 127 { 103 if (Vector.Distance(paikka, matopala.Position) < 10)128 if (Vector.Distance(paikka, matopala.Position) < puskuri) 104 129 { 105 return true;130 return matopala; 106 131 } 107 132 } 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; 109 149 } 110 150
Note: See TracChangeset
for help on using the changeset viewer.