- Timestamp:
- 2010-08-04 16:33:17 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/23/hniemi/Matopeli/Peli.cs
r1609 r1612 9 9 //GameObject[] mato; 10 10 const double ruudunKoko = 20; 11 constint madonPituus = 6;11 int madonPituus = 6; 12 12 const double vaikeusaste = 0.2; 13 14 double kerattavienLisaysAikaSek = 1.0; 13 15 14 16 int ruutujaVaakasuunnassa; … … 19 21 Direction viimesuunta; 20 22 Timer liikutusajastin; 23 Timer kerattavienLisaysAjastin; 21 24 22 25 protected override void Begin() 23 26 { 24 27 LuoKentta(); 25 Luo LiikutusAjastin();28 LuoAjastimet(); 26 29 LuoMato(madonPituus); 27 30 LisaaOhjaimet(); … … 40 43 void LuoMato(int pituus) 41 44 { 42 for (int i = 0; i < pituus-1; i++) 43 { 44 mato.Add(new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 45 mato[i].Tag = "matopala"; 46 Add(mato[i]); 45 for (int i = 0; i < pituus - 1; i++) 46 { 47 LisaaPalaMatoon(); 47 48 } 48 49 //Luo madon pään viimeiseksi, jotta sen pään värin muuttaminen näkyy … … 50 51 mato.Insert(0, new GameObject(ruudunKoko - 1, ruudunKoko - 1)); 51 52 mato[0].Tag = "matopala"; 52 Add(mato[0]); 53 Add(mato[0]); 54 } 55 56 void LisaaPalaMatoon() 57 { 58 GameObject pala = new GameObject(ruudunKoko - 1, ruudunKoko - 1); 59 pala.Tag = "matopala"; 60 mato.Add(pala); 61 Add(pala); 53 62 } 54 63 … … 60 69 Keyboard.Listen(Key.Right, ButtonState.Pressed, AsetaSuunta, "Kääntää oikealle", Direction.Right); 61 70 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistuu pelistä"); 62 }63 64 void LuoKerattava()65 {66 GameObject kerattava = new GameObject(ruudunKoko / 2, ruudunKoko / 2, Shapes.Circle);67 68 Add(kerattava);69 kerattavat.Add(kerattava);70 71 71 } 72 72 … … 82 82 } 83 83 84 void Luo LiikutusAjastin()84 void LuoAjastimet() 85 85 { 86 86 liikutusajastin = new Timer(); 87 87 liikutusajastin.Interval = vaikeusaste; 88 88 liikutusajastin.Trigger += SiirraMatoa; 89 90 kerattavienLisaysAjastin = new Timer(); 91 kerattavienLisaysAjastin.Interval = kerattavienLisaysAikaSek; 92 kerattavienLisaysAjastin.Trigger += LisaaKerattava; 89 93 } 90 94 … … 93 97 Vector suunta = Vector.FromLengthAndAngle(ruudunKoko, Angle.FromDirection(liikkumissuunta)); 94 98 95 for (int i = mato.Count -1; i > 0; i--)99 for (int i = mato.Count - 1; i > 0; i--) 96 100 { 97 101 mato[i].Position = mato[i - 1].Position; 98 102 } 99 103 100 GameObject tormasiko = MitaSisaltaa(mato[0].Position + suunta); 101 104 GameObject seuraavanRuudunOlio = MitaSisaltaa(mato[0].Position + suunta); 102 105 mato[0].Position = mato[0].Position + suunta; 103 104 if (tormasiko != null && (tormasiko.Tag.ToString() == "seina" || tormasiko.Tag.ToString() == "matopala")) 106 viimesuunta = liikkumissuunta; 107 108 if (seuraavanRuudunOlio == null) 109 { 110 return; 111 } 112 113 if (seuraavanRuudunOlio.Tag.ToString() == "kerattava") 114 { 115 seuraavanRuudunOlio.Destroy(); 116 kerattavat.Remove(seuraavanRuudunOlio); 117 madonPituus++; 118 LisaaPalaMatoon(); 119 } 120 121 if (seuraavanRuudunOlio.Tag.ToString() == "seina" || seuraavanRuudunOlio.Tag.ToString() == "matopala") 105 122 { 106 123 liikutusajastin.Stop(); 107 124 mato[0].Color = Color.Blue; 108 125 } 109 viimesuunta = liikkumissuunta; 126 } 127 128 /// <summary> 129 /// Lisää kerättävän esineen satunnaiseen paikkaan pelikentällä. 130 /// Ei lisätä kentällä jo olemassa olevien kamojen päälle. 131 /// </summary> 132 /// <param name="ajastin"></param> 133 void LisaaKerattava(Timer ajastin) 134 { 135 double kerattavanX = RandomGen.NextInt(-ruutujaVaakasuunnassa/2, ruutujaVaakasuunnassa/2) * ruudunKoko; 136 double kerattavanY = RandomGen.NextInt(-ruutujaPystysuunnassa/2, ruutujaPystysuunnassa/2) * ruudunKoko; 137 138 if (kerattavat.Count >= ruutujaVaakasuunnassa * ruutujaPystysuunnassa - madonPituus) return; 139 140 while (MitaSisaltaa(new Vector(kerattavanX, kerattavanY)) != null) 141 { 142 kerattavanX = RandomGen.NextInt(-ruutujaVaakasuunnassa / 2, ruutujaVaakasuunnassa / 2) * ruudunKoko; 143 kerattavanY = RandomGen.NextInt(-ruutujaPystysuunnassa / 2, ruutujaPystysuunnassa / 2) * ruudunKoko; 144 } 145 146 GameObject kerattava = new GameObject(ruudunKoko, ruudunKoko, Shapes.Rectangle); 147 Add(kerattava); 148 kerattava.X = kerattavanX; 149 kerattava.Y = kerattavanY; 150 kerattava.Tag = "kerattava"; 151 kerattava.Color = RandomGen.NextColor(); 152 kerattavat.Add(kerattava); 110 153 } 111 154 … … 118 161 /// </summary> 119 162 /// <param name="paikka">Tarkistettava paikka</param> 120 /// <returns> null, jos paikasta ei löydy mitään</returns>163 /// <returns>Ruudun sisältämä GameObject. Palauttaa null, jos paikasta ei löydy mitään.</returns> 121 164 GameObject MitaSisaltaa(Vector paikka) 122 165 { 123 double puskuri = ruudunKoko / 5;166 double puskuri = ruudunKoko / 2; 124 167 125 168 //Tarkistaa, onko annettu paikka madon sisällä … … 147 190 148 191 return null; 149 192 } 150 193 151 194 void AloitaPeli() … … 153 196 liikkumissuunta = Direction.Right; 154 197 liikutusajastin.Start(); 198 kerattavienLisaysAjastin.Start(); 155 199 } 156 200 }
Note: See TracChangeset
for help on using the changeset viewer.