Changeset 1028 for 2010/24


Ignore:
Timestamp:
2010-06-29 16:22:49 (11 years ago)
Author:
anlakane
Message:

Melkein valmis peli, pistelaskuri vielä kesken. Kuvat pitää vielä vaihtaa ja kehittää joku järkevämpi automatiikka korttien luomiseen.

Location:
2010/24/anlakane/Muistipeli
Files:
12 added
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • 2010/24/anlakane/Muistipeli/Content/Content.contentproj

    r923 r1028  
    5555    </Compile> 
    5656  </ItemGroup> 
     57  <ItemGroup> 
     58    <Compile Include="highlight1.png"> 
     59      <Name>highlight1</Name> 
     60      <Importer>TextureImporter</Importer> 
     61      <Processor>TextureProcessor</Processor> 
     62    </Compile> 
     63    <Compile Include="highlight2.png"> 
     64      <Name>highlight2</Name> 
     65      <Importer>TextureImporter</Importer> 
     66      <Processor>TextureProcessor</Processor> 
     67    </Compile> 
     68  </ItemGroup> 
     69  <ItemGroup> 
     70    <Compile Include="tada.mp3"> 
     71      <Name>tada</Name> 
     72      <Importer>Mp3Importer</Importer> 
     73      <Processor>SongProcessor</Processor> 
     74    </Compile> 
     75  </ItemGroup> 
     76  <ItemGroup> 
     77    <Compile Include="henkilo1.jpg"> 
     78      <Name>henkilo1</Name> 
     79      <Importer>TextureImporter</Importer> 
     80      <Processor>TextureProcessor</Processor> 
     81    </Compile> 
     82    <Compile Include="henkilo2.jpg"> 
     83      <Name>henkilo2</Name> 
     84      <Importer>TextureImporter</Importer> 
     85      <Processor>TextureProcessor</Processor> 
     86    </Compile> 
     87    <Compile Include="henkilo3.jpg"> 
     88      <Name>henkilo3</Name> 
     89      <Importer>TextureImporter</Importer> 
     90      <Processor>TextureProcessor</Processor> 
     91    </Compile> 
     92    <Compile Include="henkilo4.jpg"> 
     93      <Name>henkilo4</Name> 
     94      <Importer>TextureImporter</Importer> 
     95      <Processor>TextureProcessor</Processor> 
     96    </Compile> 
     97    <Compile Include="henkilo5.jpg"> 
     98      <Name>henkilo5</Name> 
     99      <Importer>TextureImporter</Importer> 
     100      <Processor>TextureProcessor</Processor> 
     101    </Compile> 
     102    <Compile Include="henkilo6.jpg"> 
     103      <Name>henkilo6</Name> 
     104      <Importer>TextureImporter</Importer> 
     105      <Processor>TextureProcessor</Processor> 
     106    </Compile> 
     107    <Compile Include="henkilo7.jpg"> 
     108      <Name>henkilo7</Name> 
     109      <Importer>TextureImporter</Importer> 
     110      <Processor>TextureProcessor</Processor> 
     111    </Compile> 
     112    <Compile Include="henkilo8.jpg"> 
     113      <Name>henkilo8</Name> 
     114      <Importer>TextureImporter</Importer> 
     115      <Processor>TextureProcessor</Processor> 
     116    </Compile> 
     117    <Compile Include="henkilo0.jpg"> 
     118      <Name>henkilo0</Name> 
     119      <Importer>TextureImporter</Importer> 
     120      <Processor>TextureProcessor</Processor> 
     121    </Compile> 
     122  </ItemGroup> 
    57123</Project> 
  • 2010/24/anlakane/Muistipeli/Kortti.cs

    r1027 r1028  
    1515        PuoliEsilla puoliEsilla; 
    1616        private Image kuvapuoliTekstuuri; 
     17        public Image KuvaPuoliTekstuuri 
     18        { 
     19            set { kuvapuoliTekstuuri = value; } 
     20            get { return kuvapuoliTekstuuri; } 
     21        } 
    1722        private Image takapuoliTekstuuri; 
    1823         
    1924        public enum PuoliEsilla { Kuva, Taka } 
    2025 
    21         private bool onkoPoistettuPelista; 
    22         public bool OnkoPoistettuPelista  
     26        private bool poistettuPelista; 
     27        public bool PoistettuPelista  
    2328        { 
    24             get { return onkoPoistettuPelista; } 
    25             set { onkoPoistettuPelista = value; } 
     29            get { return poistettuPelista; } 
     30            set { poistettuPelista = value; } 
    2631        } 
    2732 
    28         private int tunnus; 
     33        private int tunniste; 
    2934 
    3035        /// <summary> 
    3136        /// Kortin tunnus, jolla parit tunnistetaan pariksi. 
    3237        /// </summary> 
    33         public int Tunnus 
     38        public int Tunniste 
    3439        { 
    35             get { return tunnus; } 
     40            get { return tunniste; } 
    3641        } 
    3742 
     
    4449            this.Image = kuvapuoliTekstuuri; 
    4550            this.liikkeenTila = Liikkeentila.Pysahtynyt; 
    46             this.onkoPoistettuPelista = false; 
     51            this.poistettuPelista = false; 
    4752 
    4853            if (kuvapuoliEsilla) 
     
    5358            IsUpdated = true; 
    5459            this.alkuperainenKoko = new Vector(width, height); 
    55             this.tunnus = tunnus; 
     60            this.tunniste = tunnus; 
    5661 
    5762        } 
     
    122127            } 
    123128 
    124  
    125             // TODO: Add your update code here 
    126129            base.Update(time); 
    127130        } 
  • 2010/24/anlakane/Muistipeli/Muistipeli.cs

    r1027 r1028  
    66using Jypeli.ScreenObjects; 
    77using Jypeli.Assets; 
     8using Jypeli.Effects; 
     9 
    810 
    911namespace Muistipeli 
     
    2123    } 
    2224 
    23     public class Peli2 : Game 
     25    public struct Pelaaja 
     26    { 
     27        public int Numero; 
     28        public String Nimi; 
     29        public int Pisteet; 
     30 
     31        public Pelaaja(String nimi, int numero) 
     32        { 
     33            Numero = numero; 
     34            Nimi = nimi; 
     35            Pisteet = 0; 
     36        } 
     37    } 
     38 
     39 
     40    public class Muistipeli : Game 
    2441    { 
    2542        int montakoRivia; 
     
    2744 
    2845        double korttienVali = 20.0; 
    29  
    3046        double kortinLeveys = 50; 
    3147        double kortinKorkeus = 70; 
     48 
    3249        Kortti[,] kortit; // rivit, sarakkeet 
    3350        Paikka korostettuKortti; 
     
    3956 
    4057        GameObject highlighter; 
    41         List<Kortti> kaannetyt; 
     58        List<Kortti> kaannetyt; // Yhdellä vuorolla käännetyt kortit. Tyhjennetään vuoron päätteeksi. Listassa voi olla siis 0, 1 tai 2 alkiota. 
    4259        Timer piilotusAjastin; 
    43         double aikaaEnnenPiilottamista = 2; 
     60        const double aikaaEnnenPiilottamista = 2; 
     61 
     62        Pelaaja pelaaja1; 
     63        Pelaaja pelaaja2; 
     64        Pelaaja vuorossaOlevaPelaaja; 
     65        Label vuoronaytto; 
     66 
     67        IntMeter pelaajan1Pisteet; 
     68        IntMeter pelaajan2Pisteet; 
     69        IntMeter korttejaLoydetty; 
     70 
    4471        protected override void Begin() 
    4572        { 
    46             piilotusAjastin = new Timer(); 
    47             piilotusAjastin.Interval = aikaaEnnenPiilottamista; 
    48             piilotusAjastin.Trigger += PiilotaKaannetyt; 
    49             Add(piilotusAjastin); 
    50  
    51             LisaaKuvat(); 
    52  
    53             montakoKorttia = 16; 
     73            montakoKorttia = 16; // Pitää olla ennen laskureiden lisäämistä 
     74            LisaaPelaajat(2); 
     75 
     76            AloitaUusiPeli(); 
     77 
     78        } 
     79 
     80        public void AloitaUusiPeli() 
     81        { 
     82            ClearAll(); 
     83            LisaaPiilotusajastin(); 
     84            //LisaaKuvat(); 
     85            LisaaLaskurit(); 
     86            LisaaVuoronaytto(); 
     87 
    5488            montakoKutakinKorttitunnusta = new int[montakoKorttia / 2]; // kortin tunnusNro indeksistä, alkiot tulkitaan siten että "montako tämän tunnuksen alkiota on lisätty peliin" 
    5589            kaannetyt = new List<Kortti>(); 
     
    70104            Camera.ZoomToLevel(); 
    71105 
    72             AloitaPeli(); 
     106            PeliKayntiin(); 
    73107            AsetaNappaimet(); 
     108 
     109        } 
     110 
     111        public void LisaaPiilotusajastin() 
     112        { 
     113            piilotusAjastin = new Timer(); 
     114            piilotusAjastin.Interval = aikaaEnnenPiilottamista; 
     115            piilotusAjastin.Trigger += PiilotaKaannetyt; 
     116            Add(piilotusAjastin); 
     117        } 
     118 
     119        public void LisaaLaskurit() 
     120        { 
     121            pelaajan1Pisteet = new IntMeter(0); 
     122            Label p1 = new Label("Pelaaja 1 pisteet: "); 
     123            p1.TextColor = Color.Black; 
     124            p1.X = Screen.Left + 140; 
     125            p1.Y = Screen.Bottom + 40; 
     126            Add(p1); 
     127            Label pisteNaytto1 = new Label(); 
     128            pisteNaytto1.X = p1.X + (p1.Width/2) + 10; 
     129            pisteNaytto1.Y = p1.Y; 
     130            pisteNaytto1.TextColor = Color.Blue; 
     131            pisteNaytto1.BindTo(pelaajan1Pisteet); 
     132            Add(pisteNaytto1); 
     133 
     134            pelaajan2Pisteet = new IntMeter(0);  
     135            Label p2 = new Label("Pelaaja 2 pisteet: "); 
     136            p2.TextColor = Color.Black; 
     137            p2.X = Screen.Right- 140; 
     138            p2.Y = Screen.Bottom + 40; 
     139            Add(p2);             
     140            Label pisteNaytto2 = new Label(); 
     141            pisteNaytto2.X = p2.X + (p2.Width / 2) + 10; 
     142            pisteNaytto2.Y = p2.Y; 
     143            pisteNaytto2.TextColor = Color.Red; 
     144            pisteNaytto2.BindTo(pelaajan2Pisteet); 
     145            Add(pisteNaytto2); 
     146 
     147            korttejaLoydetty = new IntMeter(0); 
     148            korttejaLoydetty.MaxValue = montakoKorttia; 
     149            korttejaLoydetty.UpperLimit += KaikkiLoydetty; 
     150        } 
     151 
     152        public void KaikkiLoydetty(int arvo) 
     153        { 
     154            Mouse.IsCursorVisible = true; 
     155            String voittoteksti; 
     156            if (pelaajan1Pisteet > pelaajan2Pisteet) 
     157            { 
     158                voittoteksti = "Pelaaja 1 voitti! "; 
     159            } 
     160            else if (pelaajan2Pisteet > pelaajan1Pisteet) 
     161            { 
     162                voittoteksti = "Pelaaja 2 voitti! "; 
     163            } 
     164            else 
     165            { 
     166                voittoteksti = "Tasapeli! "; 
     167            } 
     168 
     169            MessageBox m = new MessageBox( 
     170                "Peli päättyi",  
     171                "" + voittoteksti + "Aloita uusi peli painamalla OK."); 
     172            m.OkButton.Clicked += OKPainettu; 
     173            Add(m); 
     174 
     175        } 
     176 
     177        public void OKPainettu() 
     178        { 
     179            AloitaUusiPeli(); 
     180        } 
     181 
     182        public void LisaaVuoronaytto() 
     183        { 
     184            Label vuorossaNyt = new Label("Vuorossa nyt"); 
     185            vuorossaNyt.X = 0; 
     186            vuorossaNyt.Y = Screen.Bottom + 80; 
     187            vuoronaytto = new Label(); 
     188            vuoronaytto.X = 0; 
     189            vuoronaytto.Y = vuorossaNyt.Y - 32;             
     190            Add(vuorossaNyt); 
     191            Add(vuoronaytto); 
     192        } 
     193 
     194        /// <summary> 
     195        /// Korostetaan ensimmäinen kortti. 
     196        /// </summary> 
     197        public void PeliKayntiin() 
     198        { 
     199            korostettuKortti = new Paikka(0, 0); 
     200            KorostaKortti(new Paikka(0, 0)); 
     201            vuorossaOlevaPelaaja = pelaaja1; 
     202            vuoronaytto.Text = "Pelaaja 1"; 
     203            MessageDisplay.Add("Pelaaja 1 aloittaa pelin!"); 
     204        } 
     205 
     206        void LisaaHighLighter() 
     207        { 
     208            highlighter = new GameObject(kortinLeveys, kortinKorkeus); 
     209            highlighter.Image = LoadImage("highlight1"); 
     210            Add(highlighter); 
    74211        } 
    75212 
     
    90227        } 
    91228 
    92         /// <summary> 
    93         /// Korostetaan ensimmäinen kortti. 
    94         /// </summary> 
    95         void AloitaPeli() 
    96         { 
    97             korostettuKortti = new Paikka(0, 0); 
    98             KorostaKortti(new Paikka(0, 0)); 
    99         } 
    100  
    101         void LisaaHighLighter() 
    102         { 
    103             highlighter = new GameObject(kortinLeveys, kortinKorkeus); 
    104             highlighter.Image = LoadImage("highlight"); 
    105             Add(highlighter); 
     229        void LisaaPelaajat(int montakoPelaajaa) 
     230        { 
     231            // Toistaiseksi tehdään "manuaalisesti" kaksi pelaajaa 
     232            pelaaja1 = new Pelaaja("", 1); 
     233            pelaaja2 = new Pelaaja("", 2); 
    106234        } 
    107235 
     
    130258                if (kaannetyt.Count == 2) // Tasan kaksi korttia käännetään yhdellä vuorolla 
    131259                { 
    132                     if (kaannetyt[0].Tunnus == kaannetyt[1].Tunnus) 
     260                    if (kaannetyt[0].Tunniste == kaannetyt[1].Tunniste) // Käännetyt kortit muodostavat parin 
    133261                    { 
    134                         MessageDisplay.Add("Pari löytyi!"); 
    135262                        foreach (Kortti kaannetty in kaannetyt) 
    136263                        { 
    137                             kaannetty.OnkoPoistettuPelista = true; 
     264                            RajaytaKortti(kaannetty); 
     265                            kaannetty.PoistettuPelista = true; 
    138266                        } 
    139                         kaannetyt.Clear(); 
     267                        PariLoytyi(); 
    140268                    } 
    141269                    else 
     
    149277        } 
    150278 
     279        public void PariLoytyi() 
     280        { 
     281            MediaPlayer.Play("tada"); 
     282            kaannetyt.Clear(); 
     283 
     284            if (vuorossaOlevaPelaaja.Equals(pelaaja1)) 
     285            { 
     286                pelaajan1Pisteet.Value++; 
     287            } 
     288            else if (vuorossaOlevaPelaaja.Equals(pelaaja2)) 
     289            { 
     290                pelaajan2Pisteet.Value++; 
     291            } 
     292 
     293            korttejaLoydetty.Value += 2; 
     294        } 
     295 
     296        /// <summary> 
     297        /// Näpsäkkä korttiin kohdistettu "räjähdys" tai mikä efekti lie. 
     298        /// </summary> 
     299        /// <param name="kaannetty">Kortti jonka päälle räjähdys tulee.</param> 
     300        public void RajaytaKortti(Kortti kortti) 
     301        { 
     302            Image i = kortti.KuvaPuoliTekstuuri; 
     303            ExplosionSystem e = new ExplosionSystem(i, 10); 
     304            e.MinLifetime = 0.3; 
     305            e.MaxLifetime = 1.5; 
     306            e.MinVelocity = 1; 
     307            e.MaxVelocity = 300; 
     308            e.MinScale = 0.01; 
     309            e.MaxScale = 0.05; 
     310            Add(e); 
     311            e.AddEffect(kortti.Position.X, kortti.Position.Y, 10); 
     312        } 
     313 
     314        public void VuoroVaihtuu() 
     315        { 
     316            if (vuorossaOlevaPelaaja.Equals(pelaaja1)) 
     317            { 
     318                vuorossaOlevaPelaaja = pelaaja2; 
     319                highlighter.Image = LoadImage("highlight2"); 
     320                vuoronaytto.Text = "Pelaaja 2"; 
     321                return; 
     322            } 
     323 
     324            if (vuorossaOlevaPelaaja.Equals(pelaaja2)) 
     325            { 
     326                vuorossaOlevaPelaaja = pelaaja1; 
     327                highlighter.Image = LoadImage("highlight1"); 
     328                vuoronaytto.Text = "Pelaaja 1";  
     329                return; 
     330            } 
     331        } 
     332 
    151333        public bool VoikoKorttiaKaantaa(Kortti kortti) 
    152334        { 
     
    155337            { 
    156338                // Jos kortti "on jo löydetty", niin sitä ei voi missään tapauksessa kääntää 
    157                 bool onkoPoistettuPelista = kortit[korostettuKortti.Rivi, korostettuKortti.Sarake].OnkoPoistettuPelista; 
     339                bool onkoPoistettuPelista = kortit[korostettuKortti.Rivi, korostettuKortti.Sarake].PoistettuPelista; 
    158340 
    159341                if (!onkoPoistettuPelista) 
     
    174356            piilotusAjastin.Stop(); 
    175357            Keyboard.Enable(Key.Space); 
     358            VuoroVaihtuu(); 
    176359        } 
    177360 
     
    269452                    } 
    270453 
    271                     kortit[r, s] = TeeKortti(); 
     454                    kortit[r, s] = TeeKortti("kortti1"); 
     455                    kortit[r, s].KuvaPuoliTekstuuri = LoadImage("henkilo" + kortit[r, s].Tunniste.ToString()); 
    272456                    Add(kortit[r, s]); 
    273                     Label tunnusTeksti = new Label(); 
    274                     tunnusTeksti.Text = kortit[r, s].Tunnus.ToString(); 
    275                     tunnusTeksti.TextColor = Color.White; 
    276                     Add(tunnusTeksti); 
     457 
     458                    //Label tunnusTeksti = new Label(); 
     459                    //tunnusTeksti.Text = kortit[r, s].Tunniste.ToString(); 
     460                    //tunnusTeksti.TextColor = Color.White; 
     461                    //Add(tunnusTeksti); 
    277462 
    278463                    kortit[r, s].X = KortinX(s); 
    279464                    kortit[r, s].Y = KortinY(r); 
    280                     tunnusTeksti.Position = new Vector(kortit[r, s].X, kortit[r, s].Y); 
     465                    //tunnusTeksti.Position = new Vector(kortit[r, s].X, kortit[r, s].Y); 
    281466                    montakoKorttiaLisatty++; 
    282467                } 
     
    295480        } 
    296481 
    297         public Kortti TeeKortti() 
    298         { 
    299             Image kuvaTekstuuri = LoadImage("kortti1"); 
     482        public Kortti TeeKortti(String kortinKuva) 
     483        { 
     484            Image kuvaTekstuuri = LoadImage(kortinKuva); 
    300485            Image takaTekstuuri = LoadImage("taka"); 
     486            Kortti kortti = new Kortti(kortinLeveys, kortinKorkeus, false, kuvaTekstuuri, takaTekstuuri, 0); 
    301487            int tunnus; 
    302488            while (true) 
  • 2010/24/anlakane/Muistipeli/Muistipeli.csproj

    r1027 r1028  
    8383  <ItemGroup> 
    8484    <Compile Include="Kortti.cs" /> 
    85     <Compile Include="Peli2.cs" /> 
     85    <Compile Include="Muistipeli.cs" /> 
    8686    <Compile Include="Properties\AssemblyInfo.cs" /> 
    8787    <Compile Include="Ohjelma.cs" /> 
  • 2010/24/anlakane/Muistipeli/Ohjelma.cs

    r921 r1028  
    99        static void Main(string[] args) 
    1010        { 
    11             using (Peli2 game = new Peli2()) 
     11            using (Muistipeli game = new Muistipeli()) 
    1212            { 
    1313                game.Run(); 
Note: See TracChangeset for help on using the changeset viewer.