Changeset 923 for 2010/24/anlakane/Muistipeli/Peli2.cs
- Timestamp:
- 2010-06-16 18:23:52 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/24/anlakane/Muistipeli/Peli2.cs
r921 r923 11 11 int montakoRivia; 12 12 int montakoSaraketta; 13 14 double kortinLeveys = 80; 15 double kortinKorkeus = 100; 13 bool voikoKaantaa; 14 15 double korttienVali = 20.0; 16 17 double kortinLeveys = 50; 18 double kortinKorkeus = 70; 16 19 Kortti[,] kortit; // rivit, sarakkeet 17 20 int[,] korostettuKortti; … … 20 23 Suunta mihinSuuntaanMenossa; 21 24 25 GameObject highlighter; 26 List<Kortti> kaannetyt; 27 Timer piilotusAjastin; 28 double aikaaEnnenPiilottamista = 2; 22 29 protected override void Begin() 23 30 { 24 montakoKorttia = 21; 25 korostettuKortti = new int[2, 1]; 31 piilotusAjastin = new Timer(); 32 piilotusAjastin.Interval = aikaaEnnenPiilottamista; 33 piilotusAjastin.Trigger += PiilotaKaannetyt; 34 Add(piilotusAjastin); 35 36 montakoKorttia = 52; 37 kaannetyt = new List<Kortti>(); 38 39 // Laitetaan ensin rivejä ja sarakkeita yhtä paljon 26 40 montakoSaraketta = (int)Math.Sqrt(montakoKorttia); 41 // Sitte laitetaan kortit vähän mukavempaan muotoon kun näytöt on yleensä leveämpiä kuin korkeita 27 42 montakoSaraketta = (int)Math.Floor((3.0 / 2.0) * montakoSaraketta); 43 // Tarvittavien rivien määrä saadaan korttien määrän ja saadun sarakkeiden määrän suhteesta 28 44 montakoRivia = (int)Math.Ceiling((double)montakoKorttia / (double)montakoSaraketta); 29 45 kortit = new Kortti[montakoRivia, montakoSaraketta]; 30 46 KortitRuudulle(montakoKorttia); 31 47 LisaaHighLighter(); 32 48 AsetaNappaimet(); 33 KorostaKortti(new int[2, 1] { { 0 }, { 1 } }); 34 49 50 // Laitetaan kenttä sopivan kokoiseksi että kortit täyttävät aina mahollisimman paljon ruutukapasiteetista 51 Level.Width = montakoSaraketta * (korttienVali + kortinLeveys) + kortinLeveys; 52 Level.Height = montakoRivia * (korttienVali + kortinKorkeus) + kortinKorkeus; 53 Camera.ZoomToLevel(); 54 AloitaPeli(); 55 } 56 57 /// <summary> 58 /// Korostetaan ensimmäinen kortti. 59 /// </summary> 60 public void AloitaPeli() 61 { 62 korostettuKortti = new int[2, 1]; 63 KorostaKortti(new int[2, 1] { { 0 }, { 0 } }); 64 voikoKaantaa = true; 65 } 66 67 private void LisaaHighLighter() 68 { 69 highlighter = new GameObject(kortinLeveys, kortinKorkeus); 70 highlighter.Image = LoadImage("highlight"); 71 Add(highlighter); 35 72 } 36 73 … … 41 78 Keyboard.Listen(Key.Up, ButtonState.Pressed, KortinValinta, null, Suunta.Ylos); 42 79 Keyboard.Listen(Key.Down, ButtonState.Pressed, KortinValinta, null, Suunta.Alas); 43 //Keyboard.Listen(Key.Space, ButtonState.Pressed, KaannaKortti, null); 44 //Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, null); 80 Keyboard.Listen(Key.Space, ButtonState.Pressed, KaannaKortti, null); 81 Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, null); 82 } 83 84 void Lopeta() 85 { 86 Exit(); 87 } 88 89 void KaannaKortti() 90 { 91 if (voikoKaantaa) 92 { 93 // Ei käännetä kahta kertaa samaa korttia 94 if (kaannetyt.Count == 0 || kortit[korostettuKortti[0, 0], korostettuKortti[1, 0]] != kaannetyt[0]) 95 { 96 kortit[korostettuKortti[0, 0], korostettuKortti[1, 0]].Kaanna(); 97 kaannetyt.Add(kortit[korostettuKortti[0, 0], korostettuKortti[1, 0]]); 98 99 if (kaannetyt.Count == 2) 100 { 101 // Jos kaksi korttia on käännetty niin ajastin lähtee käyntiin eikä sinä aikana voi kääntää kortteja 102 voikoKaantaa = false; 103 piilotusAjastin.Start(); 104 } 105 } 106 } 107 } 108 109 void PiilotaKaannetyt(Timer t) 110 { 111 foreach (var item in kaannetyt) 112 { 113 item.Kaanna(); 114 } 115 kaannetyt.Clear(); 116 piilotusAjastin.Stop(); 117 voikoKaantaa = true; 45 118 } 46 119 … … 48 121 { 49 122 kortinNro = TarkistaKortinNro(kortinNro); 50 kortit[kortinNro[0, 0], kortinNro[1, 0]].Color = Color.Gray;51 MessageDisplay.Add("Korostettu kortti: [" + kortinNro[0, 0] + ", " + kortinNro[1, 0] + "]");123 highlighter.Position = new Vector(KortinX(kortinNro[1, 0]), KortinY(kortinNro[0, 0])); 124 Kortti.PuoliEsilla puoliesilla = kortit[kortinNro[0, 0], kortinNro[1, 0]].KumpiPuoliEsilla(); 52 125 korostettuKortti = kortinNro; 53 54 126 } 55 127 … … 88 160 if (mihinSuuntaanMenossa == Suunta.Vasen) 89 161 { 90 return new int[2, 1] { { korostettuKortti[0, 0] }, { (montakoKorttia %montakoSaraketta) -1 } };162 return new int[2, 1] { { korostettuKortti[0, 0] }, { (montakoKorttia % montakoSaraketta) - 1 } }; 91 163 } 92 164 if (mihinSuuntaanMenossa == Suunta.Oikea) … … 105 177 } 106 178 107 108 109 179 void KortinValinta(Suunta suunta) 110 180 { 111 181 mihinSuuntaanMenossa = suunta; 112 PoistaKorostus(korostettuKortti);113 114 182 if (mihinSuuntaanMenossa == Suunta.Vasen) 115 183 { … … 123 191 { 124 192 KorostaKortti(new int[2, 1] { { korostettuKortti[0, 0] - 1 }, { korostettuKortti[1, 0] } }); 125 126 193 } 127 194 if (mihinSuuntaanMenossa == Suunta.Alas) … … 132 199 133 200 } 134 135 void PoistaKorostus(int[,] kortinNro)136 {137 kortit[kortinNro[0, 0], kortinNro[1, 0]].Color = Color.White;138 139 }140 141 142 201 143 202 /// <summary> … … 162 221 } 163 222 164 kortit[r, s] = new Kortti(kortinLeveys, kortinKorkeus, false, Color.Red, Color.White);223 kortit[r, s] = TeeKortti(); 165 224 Add(kortit[r, s]); 166 225 167 kortit[r, s].X = (-(montakoSaraketta * (kortinLeveys + 20)) / 2) + (s * (kortinLeveys + 20));168 kortit[r, s].Y = ((montakoRivia) * (kortinKorkeus + 20)) / 2 - r * (kortinKorkeus + 20);226 kortit[r, s].X = KortinX(s); 227 kortit[r, s].Y = KortinY(r); 169 228 170 229 montakoKorttiaLisatty++; … … 172 231 } 173 232 } 233 234 public double KortinX(int sarake) 235 { 236 return (-(montakoSaraketta * (kortinLeveys + korttienVali)) / 2) + (sarake * (kortinLeveys + korttienVali)) + korttienVali; 237 } 238 239 public double KortinY(int rivi) 240 { 241 // Viimeinen termi tulee siitä että viimeisen kortin perässä ei tarvita välistystä 242 return ((montakoRivia) * (kortinKorkeus + korttienVali)) / 2 - rivi * (kortinKorkeus + korttienVali) - korttienVali; 243 } 244 245 public Kortti TeeKortti() 246 { 247 Image kuvaTekstuuri = LoadImage("kortti1"); 248 Image takaTekstuuri = LoadImage("taka"); 249 return new Kortti(kortinLeveys, kortinKorkeus, false, kuvaTekstuuri, takaTekstuuri); 250 } 174 251 } 175 252 }
Note: See TracChangeset
for help on using the changeset viewer.