- Timestamp:
- 2010-06-16 18:23:52 (13 years ago)
- Location:
- 2010/24/anlakane/Muistipeli
- Files:
-
- 3 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/24/anlakane/Muistipeli/Content/Content.contentproj
r874 r923 1 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">1 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> 2 2 <PropertyGroup> 3 3 <ProjectGuid>a41b15d2-ef63-4b64-8585-deeedcdaa1c0</ProjectGuid> … … 34 34 <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" /> 35 35 </ItemGroup> 36 <ItemGroup> 37 <Compile Include="kortti1.png"> 38 <Name>kortti1</Name> 39 <Importer>TextureImporter</Importer> 40 <Processor>TextureProcessor</Processor> 41 </Compile> 42 </ItemGroup> 43 <ItemGroup> 44 <Compile Include="taka.png"> 45 <Name>taka</Name> 46 <Importer>TextureImporter</Importer> 47 <Processor>TextureProcessor</Processor> 48 </Compile> 49 </ItemGroup> 50 <ItemGroup> 51 <Compile Include="highlight.png"> 52 <Name>highlight</Name> 53 <Importer>TextureImporter</Importer> 54 <Processor>TextureProcessor</Processor> 55 </Compile> 56 </ItemGroup> 36 57 </Project> -
2010/24/anlakane/Muistipeli/Kortti.cs
r921 r923 12 12 bool onkoKaantynyt; 13 13 protected Vector alkuperainenKoko; 14 public enum PuoliEsilla { Kuva, Taka }15 14 protected enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu } 16 15 Liikkeentila liikkeenTila; 17 16 PuoliEsilla puoliEsilla; 17 private Image kuvapuoliTekstuuri; 18 private Image takapuoliTekstuuri; 19 18 20 private bool kaantyminenAlkanut = false; 19 21 public enum PuoliEsilla { Kuva, Taka } 20 22 public Jypeli.Color kuvapuoliVari; 21 23 public Jypeli.Color takaVari; 22 24 public bool onkoPoistettuPelista; 23 25 24 public Kortti(double width, double height, bool kuvapuoliEsilla, Jypeli.Color kuvapuoliVari, Jypeli.Color takaVari)26 public Kortti(double width, double height, bool kuvapuoliEsilla, Image kuvapuoliTekstuuri, Image takapuoliTekstuuri) 25 27 : base(width, height, Shapes.Rectangle) 26 28 { 27 this.kuvapuoliVari = kuvapuoliVari; 28 this.takaVari = takaVari; 29 this.kuvapuoliTekstuuri = kuvapuoliTekstuuri; 30 this.takapuoliTekstuuri = takapuoliTekstuuri; 31 this.Image = kuvapuoliTekstuuri; 29 32 this.onkoPoistettuPelista = false; 30 33 31 34 if (kuvapuoliEsilla) 32 { 33 this.puoliEsilla = PuoliEsilla.Kuva; 34 this.Color = kuvapuoliVari; 35 } 35 AsetaPuoli(PuoliEsilla.Kuva); 36 36 else 37 { 38 this.puoliEsilla = PuoliEsilla.Taka; 39 this.Color = takaVari; 40 } 37 AsetaPuoli(PuoliEsilla.Taka); 41 38 42 39 IsUpdated = true; … … 55 52 } 56 53 57 void AsetaPuoli(PuoliEsilla puoli)54 private void AsetaPuoli(PuoliEsilla puoli) 58 55 { 59 puoliEsilla = puoli;56 this.puoliEsilla = puoli; 60 57 switch (puoli) 61 58 { 62 59 case PuoliEsilla.Kuva: 63 this. Color = kuvapuoliVari;60 this.Image = kuvapuoliTekstuuri; 64 61 break; 65 62 case PuoliEsilla.Taka: 66 this. Color = takaVari;63 this.Image = takapuoliTekstuuri; 67 64 break; 68 65 } -
2010/24/anlakane/Muistipeli/Muistipeli.csproj
r921 r923 86 86 <Compile Include="Properties\AssemblyInfo.cs" /> 87 87 <Compile Include="Ohjelma.cs" /> 88 <Compile Include="Peli.cs" />89 88 </ItemGroup> 90 89 <ItemGroup> -
2010/24/anlakane/Muistipeli/Peli.cs
r921 r923 85 85 } 86 86 87 void PoistaKorostus(int kortinNro)88 {89 kortinNro = KortinNumeronTarkistus(kortinNro);90 91 Kortti.PuoliEsilla puoliesilla = kortit[kortinNro].KumpiPuoliEsilla();92 if (puoliesilla == Kortti.PuoliEsilla.Kuva)93 {94 kortit[kortinNro].Color = kortit[kortinNro].kuvapuoliVari;95 }96 if (puoliesilla == Kortti.PuoliEsilla.Taka)97 {98 kortit[kortinNro].Color = kortit[kortinNro].takaVari;99 }100 101 }87 //void PoistaKorostus(int kortinNro) 88 //{ 89 // kortinNro = KortinNumeronTarkistus(kortinNro); 90 91 // Kortti.PuoliEsilla puoliesilla = kortit[kortinNro].KumpiPuoliEsilla(); 92 // if (puoliesilla == Kortti.PuoliEsilla.Kuva) 93 // { 94 // kortit[kortinNro].Color = kortit[kortinNro].kuvapuoliVari; 95 // } 96 // if (puoliesilla == Kortti.PuoliEsilla.Taka) 97 // { 98 // kortit[kortinNro].Color = kortit[kortinNro].takaVari; 99 // } 100 101 //} 102 102 103 103 void AsetaNappaimet() … … 219 219 //kortti.Color = Color.White; 220 220 221 Kortti kortti = new Kortti(kortinLeveys, kortinKorkeus, true, Color.White, Color.Red);222 kortit.Add(kortti);221 //Kortti kortti = new Kortti(kortinLeveys, kortinKorkeus, true, Color.White, Color.Red); 222 //kortit.Add(kortti); 223 223 } 224 224 } -
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.