Changeset 923


Ignore:
Timestamp:
2010-06-16 18:23:52 (9 years ago)
Author:
anlakane
Message:

Kortteja voi kääntää, enintään kaksi kerrallaan.

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"> 
    22  <PropertyGroup> 
    33    <ProjectGuid>a41b15d2-ef63-4b64-8585-deeedcdaa1c0</ProjectGuid> 
     
    3434    <Reference Include="Microsoft.Xna.Framework.Content.Pipeline.XImporter, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" /> 
    3535  </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> 
    3657</Project> 
  • 2010/24/anlakane/Muistipeli/Kortti.cs

    r921 r923  
    1212        bool onkoKaantynyt; 
    1313        protected Vector alkuperainenKoko; 
    14         public enum PuoliEsilla { Kuva, Taka } 
    1514        protected enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu } 
    1615        Liikkeentila liikkeenTila; 
    1716        PuoliEsilla puoliEsilla; 
     17        private Image kuvapuoliTekstuuri; 
     18        private Image takapuoliTekstuuri; 
     19 
    1820        private bool kaantyminenAlkanut = false; 
    19  
     21        public enum PuoliEsilla { Kuva, Taka } 
    2022        public Jypeli.Color kuvapuoliVari; 
    2123        public Jypeli.Color takaVari; 
    2224        public bool onkoPoistettuPelista; 
    2325 
    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) 
    2527            : base(width, height, Shapes.Rectangle) 
    2628        { 
    27             this.kuvapuoliVari = kuvapuoliVari; 
    28             this.takaVari = takaVari; 
     29            this.kuvapuoliTekstuuri = kuvapuoliTekstuuri; 
     30            this.takapuoliTekstuuri = takapuoliTekstuuri; 
     31            this.Image = kuvapuoliTekstuuri; 
    2932            this.onkoPoistettuPelista = false; 
    3033 
    3134            if (kuvapuoliEsilla) 
    32             { 
    33                 this.puoliEsilla = PuoliEsilla.Kuva; 
    34                 this.Color = kuvapuoliVari; 
    35             } 
     35                AsetaPuoli(PuoliEsilla.Kuva); 
    3636            else 
    37             { 
    38                 this.puoliEsilla = PuoliEsilla.Taka; 
    39                 this.Color = takaVari; 
    40             } 
     37                AsetaPuoli(PuoliEsilla.Taka); 
    4138 
    4239            IsUpdated = true; 
     
    5552        } 
    5653 
    57         void AsetaPuoli(PuoliEsilla puoli) 
     54        private void AsetaPuoli(PuoliEsilla puoli) 
    5855        { 
    59             puoliEsilla = puoli; 
     56            this.puoliEsilla = puoli; 
    6057            switch (puoli) 
    6158            { 
    6259                case PuoliEsilla.Kuva: 
    63                     this.Color = kuvapuoliVari; 
     60                    this.Image = kuvapuoliTekstuuri; 
    6461                    break; 
    6562                case PuoliEsilla.Taka: 
    66                     this.Color = takaVari; 
     63                    this.Image = takapuoliTekstuuri; 
    6764                    break; 
    6865            } 
  • 2010/24/anlakane/Muistipeli/Muistipeli.csproj

    r921 r923  
    8686    <Compile Include="Properties\AssemblyInfo.cs" /> 
    8787    <Compile Include="Ohjelma.cs" /> 
    88     <Compile Include="Peli.cs" /> 
    8988  </ItemGroup> 
    9089  <ItemGroup> 
  • 2010/24/anlakane/Muistipeli/Peli.cs

    r921 r923  
    8585        } 
    8686 
    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        //} 
    102102 
    103103        void AsetaNappaimet() 
     
    219219            //kortti.Color = Color.White; 
    220220 
    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); 
    223223        } 
    224224    } 
  • 2010/24/anlakane/Muistipeli/Peli2.cs

    r921 r923  
    1111        int montakoRivia; 
    1212        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; 
    1619        Kortti[,] kortit; // rivit, sarakkeet 
    1720        int[,] korostettuKortti; 
     
    2023        Suunta mihinSuuntaanMenossa; 
    2124 
     25        GameObject highlighter; 
     26        List<Kortti> kaannetyt; 
     27        Timer piilotusAjastin; 
     28        double aikaaEnnenPiilottamista = 2; 
    2229        protected override void Begin() 
    2330        { 
    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 
    2640            montakoSaraketta = (int)Math.Sqrt(montakoKorttia); 
     41            // Sitte laitetaan kortit vähän mukavempaan muotoon kun näytöt on yleensä leveämpiä kuin korkeita 
    2742            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 
    2844            montakoRivia = (int)Math.Ceiling((double)montakoKorttia / (double)montakoSaraketta); 
    2945            kortit = new Kortti[montakoRivia, montakoSaraketta]; 
    3046            KortitRuudulle(montakoKorttia); 
    31  
     47            LisaaHighLighter(); 
    3248            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); 
    3572        } 
    3673 
     
    4178            Keyboard.Listen(Key.Up, ButtonState.Pressed, KortinValinta, null, Suunta.Ylos); 
    4279            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; 
    45118        } 
    46119 
     
    48121        { 
    49122            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(); 
    52125            korostettuKortti = kortinNro; 
    53  
    54126        } 
    55127 
     
    88160            if (mihinSuuntaanMenossa == Suunta.Vasen) 
    89161            { 
    90                 return new int[2, 1] { { korostettuKortti[0, 0] }, { (montakoKorttia%montakoSaraketta) -1 } }; 
     162                return new int[2, 1] { { korostettuKortti[0, 0] }, { (montakoKorttia % montakoSaraketta) - 1 } }; 
    91163            } 
    92164            if (mihinSuuntaanMenossa == Suunta.Oikea) 
     
    105177        } 
    106178 
    107  
    108  
    109179        void KortinValinta(Suunta suunta) 
    110180        { 
    111181            mihinSuuntaanMenossa = suunta; 
    112             PoistaKorostus(korostettuKortti); 
    113  
    114182            if (mihinSuuntaanMenossa == Suunta.Vasen) 
    115183            { 
     
    123191            { 
    124192                KorostaKortti(new int[2, 1] { { korostettuKortti[0, 0] - 1 }, { korostettuKortti[1, 0] } }); 
    125  
    126193            } 
    127194            if (mihinSuuntaanMenossa == Suunta.Alas) 
     
    132199 
    133200        } 
    134  
    135         void PoistaKorostus(int[,] kortinNro) 
    136         { 
    137             kortit[kortinNro[0, 0], kortinNro[1, 0]].Color = Color.White; 
    138  
    139         } 
    140  
    141  
    142201 
    143202        /// <summary> 
     
    162221                    } 
    163222 
    164                     kortit[r, s] = new Kortti(kortinLeveys, kortinKorkeus, false, Color.Red, Color.White); 
     223                    kortit[r, s] = TeeKortti(); 
    165224                    Add(kortit[r, s]); 
    166225 
    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); 
    169228 
    170229                    montakoKorttiaLisatty++; 
     
    172231            } 
    173232        } 
     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        } 
    174251    } 
    175252} 
Note: See TracChangeset for help on using the changeset viewer.