Changeset 1038 for 2010/24


Ignore:
Timestamp:
2010-07-01 16:09:48 (9 years ago)
Author:
anlakane
Message:

Vähän kivoja efektejä ja ääniä. Korttien määrän voi "valita" alussa.

Location:
2010/24/anlakane/Muistipeli
Files:
23 added
3 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/anlakane/Muistipeli/Kortti.cs

    r1033 r1038  
    88    public class Kortti : GameObject 
    99    { 
     10        private enum LiikkeenTila { Pysahtynyt, Pienentyy, Suurentuu } 
     11         
    1012        protected Vector alkuperainenKoko; 
    11         private enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu } 
    12         Liikkeentila liikkeenTila; 
     13        private LiikkeenTila liikkeenTila; 
     14         
    1315        PuoliEsilla puoliEsilla; 
    1416        private Image kuvapuoliTekstuuri; 
     
    4547            this.kuvapuoliTekstuuri = kuvapuoliTekstuuri; 
    4648            this.takapuoliTekstuuri = takapuoliTekstuuri; 
    47             this.liikkeenTila = Liikkeentila.Pysahtynyt; 
     49            this.liikkeenTila = LiikkeenTila.Pysahtynyt; 
    4850            this.poistettuPelista = false; 
    4951 
     
    6365            this.kuvapuoliTekstuuri = Image.FromColor((int)Math.Floor(leveys), (int)Math.Floor(korkeus), Color.White); 
    6466            this.takapuoliTekstuuri = takapuoliTekstuuri; 
    65             this.liikkeenTila = Liikkeentila.Pysahtynyt; 
     67            this.liikkeenTila = LiikkeenTila.Pysahtynyt; 
    6668            this.poistettuPelista = false; 
    6769 
     
    7880        public void Kaanna() 
    7981        { 
    80             liikkeenTila = Liikkeentila.Pienentyy; 
     82            liikkeenTila = LiikkeenTila.Pienentyy; 
    8183        } 
    8284 
     85        /// <summary> 
     86        /// Aliohjelma palauttaa tiedon siitä, onko kortin animaatio käynnissä vai ei. 
     87        /// </summary> 
     88        /// <returns>Animaatio käynnissä.</returns> 
     89        public bool OnkoLiikkeessa() 
     90        { 
     91            if (liikkeenTila == LiikkeenTila.Pysahtynyt) 
     92                return false; 
     93            return true; 
     94        } 
    8395 
    8496        public PuoliEsilla KumpiPuoliEsilla() 
     
    107119        public override void Update(Time time) 
    108120        { 
    109             if (liikkeenTila == Liikkeentila.Pienentyy) 
     121            if (liikkeenTila == LiikkeenTila.Pienentyy) 
    110122            { 
    111123                if (this.Width > 3) 
     
    124136                        AsetaPuoli(PuoliEsilla.Kuva); 
    125137                    } 
    126                     liikkeenTila = Liikkeentila.Suurentuu; 
     138                    liikkeenTila = LiikkeenTila.Suurentuu; 
    127139                } 
    128140            } 
    129141 
    130             if (liikkeenTila == Liikkeentila.Suurentuu) 
     142            if (liikkeenTila == LiikkeenTila.Suurentuu) 
    131143            { 
    132144                if (this.Width < this.alkuperainenKoko.X) 
     
    136148                if (this.Width >= this.alkuperainenKoko.X) 
    137149                { 
    138                     liikkeenTila = Liikkeentila.Pysahtynyt; 
     150                    liikkeenTila = LiikkeenTila.Pysahtynyt; 
    139151                } 
    140152 
  • 2010/24/anlakane/Muistipeli/Muistipeli.cs

    r1036 r1038  
    7474        IntMeter korttejaLoydetty; 
    7575 
     76        SoundEffect pariLoytyiAani; 
     77        SoundEffect kortinKaantoAani; 
     78        SoundEffect liikkumisAani; 
     79        SoundEffect vuoroVaihtuuAani; 
     80        SoundEffect pelaaja1Aani; 
     81        SoundEffect pelaaja2Aani; 
     82        SoundEffect voittoAani; 
     83 
    7684        protected override void Begin() 
    7785        { 
     86            LisaaPelaajat(2); 
    7887            Valikko(); 
    7988        } 
    8089 
     90        #region Valikko 
     91 
    8192        public void Valikko() 
    8293        { 
    8394            ClearAll(); 
     95            Level.Width = 2000; 
     96            Level.Height = 1500; 
    8497            valikonKohdat = new List<GameObject>(); 
    8598            Level.BackgroundColor = Color.White; 
     
    100113            { 
    101114                Add(valikonKohta); 
    102                 Mouse.ListenOn(valikonKohta, MouseButton.Left, ButtonState.Pressed, ValikonValinta, null, valikonKohta); 
    103             } 
    104  
     115                Mouse.ListenOn(valikonKohta, MouseButton.Left, ButtonState.Pressed, KorttisarjaValittu, null, valikonKohta); 
     116            } 
     117 
     118            ValikonOhjaimet(); 
     119 
     120            Camera.ZoomToLevel(); 
     121        } 
     122 
     123        public void KorttisarjaValittu(GameObject mitaPainettiin) 
     124        { 
     125            korttisarja = mitaPainettiin.Tag.ToString(); 
     126            PelinKorttienMaara(); 
     127        } 
     128 
     129        public void ValikonOhjaimet() 
     130        { 
    105131            Mouse.IsCursorVisible = true; 
    106132            Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); 
    107133            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, ""); 
    108              
    109         } 
    110  
    111         public void ValikonValinta(GameObject mitaPainettiin) 
    112         { 
    113             AloitaUusiPeli(mitaPainettiin.Tag.ToString()); 
    114         } 
    115          
     134        } 
     135 
    116136        public void ValikossaLiikkuminen(AnalogState hiirenTila) 
    117137        { 
     
    125145                { 
    126146                    kohta.Image = LoadImage(kohta.Tag.ToString()); 
    127                 }                
    128             } 
    129         } 
    130  
    131  
    132  
    133         public void AloitaUusiPeli(String korttisarja) 
     147                } 
     148            } 
     149        } 
     150 
     151        public void PelinKorttienMaara() 
     152        { 
     153            int montakoKuvaaSarjassa = LataaKuvat(); 
     154 
     155            ClearAll(); 
     156            valikonKohdat.Clear(); 
     157 
     158            Label montako = new Label("Kuinka monta korttia?"); 
     159            montako.Position = new Vector(0, 250); 
     160            Add(montako); 
     161 
     162            GameObject vahan = new GameObject(512, 128); 
     163            vahan.Tag = "4"; 
     164            valikonKohdat.Add(vahan); 
     165 
     166            GameObject sopivasti = new GameObject(512, 128); 
     167            sopivasti.Tag = "2"; 
     168            valikonKohdat.Add(sopivasti); 
     169 
     170            GameObject paljon = new GameObject(512, 128); 
     171            paljon.Tag = "1"; 
     172            valikonKohdat.Add(paljon); 
     173 
     174            int i = 0; 
     175            foreach (var valikonKohta in valikonKohdat) 
     176            { 
     177                Add(valikonKohta); 
     178                valikonKohta.Position = new Vector(0, valikonKohdat.Count * valikonKohta.Height / 2 - (valikonKohta.Height * i) - 10); 
     179                Mouse.ListenOn(valikonKohta, MouseButton.Left, ButtonState.Pressed, MaaraValittu, null, valikonKohta, montakoKuvaaSarjassa); 
     180                i++; 
     181            } 
     182            ValikonOhjaimet(); 
     183 
     184        } 
     185 
     186        public void MaaraValittu(GameObject mitaPainettiin, int montakoKuvaaSarjassa) 
     187        { 
     188            // jos painettiin "vähän" niin kortteja tulee 1/4 maksimista 
     189            // esim. jos kortteja on 13, niin pareja tulee floor(1/4 * 13) = 3 ja siten 6 korttia 
     190            montakoKorttia = 2 * (int)Math.Floor((1.0/(int.Parse(mitaPainettiin.Tag.ToString())) * montakoKuvaaSarjassa)); 
     191            AloitaUusiPeli(); 
     192        } 
     193 
     194 
     195        #endregion 
     196        public void AloitaUusiPeli() 
    134197        { 
    135198            ClearAll(); 
    136199            Level.BackgroundColor = Color.LightCyan; 
    137             LisaaPelaajat(2); 
    138200            LisaaPiilotusajastin(); 
    139             this.korttisarja = korttisarja; 
    140             int montakoKuvaa = LataaKuvat(); 
    141             montakoKorttia = montakoKuvaa * 2; 
     201            //montakoKorttia = montakoKuvaa * 2; 
    142202 
    143203            // Laitetaan ensin rivejä ja sarakkeita yhtä paljon 
     
    158218            LisaaVuoronaytto(); 
    159219            LisaaHighLighter(); 
     220            LataaAanet(); 
    160221 
    161222            // Laitetaan kenttä sopivan kokoiseksi että kortit täyttävät aina mahollisimman paljon ruutukapasiteetista 
     
    166227            PeliKayntiin(); 
    167228            AsetaNappaimet(); 
     229        } 
     230 
     231        private void LataaAanet() 
     232        { 
     233            pariLoytyiAani = LoadSoundEffect("blim"); 
     234            kortinKaantoAani = LoadSoundEffect("blop"); 
     235            liikkumisAani = LoadSoundEffect("brr"); 
     236            vuoroVaihtuuAani = LoadSoundEffect("kolmisointu"); 
    168237        } 
    169238 
     
    200269            Label p2teksti = new Label("Pelaaja 2 pisteet: "); 
    201270            Label pisteNaytto2 = new Label(); 
    202             Label p2VoitotTeksti = new Label("Pelaaja 1 voitot: "); 
     271            Label p2VoitotTeksti = new Label("Pelaaja 2 voitot: "); 
    203272            Label p2Voitot = new Label(pelaaja2.Pisteet.ToString()); 
    204273 
     
    260329                "Peli päättyi", 
    261330                "" + voittoteksti + "Aloita uusi peli painamalla OK."); 
    262             mb.OkButton.Clicked += OKPainettu;             
     331            mb.Accepted += OKPainettu; 
    263332            Add(mb); 
    264333        } 
     
    266335        public void OKPainettu() 
    267336        { 
    268             AloitaUusiPeli(korttisarja); 
     337            AloitaUusiPeli(); 
    269338        } 
    270339 
     
    309378            Keyboard.Listen(Key.Down, ButtonState.Pressed, KortinValinta, null, Suunta.Alas); 
    310379            Keyboard.Listen(Key.Space, ButtonState.Pressed, KaannaKortti, null); 
    311             Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, null); 
     380            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, null); 
    312381        } 
    313382 
     
    324393            Kortti.PuoliEsilla puoliesilla = kortit[korostettavaKortti.Rivi, korostettavaKortti.Sarake].KumpiPuoliEsilla(); 
    325394            korostettuKortti = korostettavaKortti; 
     395            liikkumisAani.Play(); 
    326396        } 
    327397 
     
    395465        public bool VoikoKorttiaKaantaa(Kortti kortti) 
    396466        { 
     467            bool onkoKaantymassa = kortti.OnkoLiikkeessa(); 
     468 
     469            // Jos kortti "on jo löydetty", niin sitä ei voi missään tapauksessa kääntää 
     470            bool onkoPoistettuPelista = kortit[korostettuKortti.Rivi, korostettuKortti.Sarake].PoistettuPelista; 
     471 
    397472            // Ei käännetä kahta kertaa samaa korttia 
    398473            if (kaannetyt.Count == 0 || kortit[korostettuKortti.Rivi, korostettuKortti.Sarake] != kaannetyt[0]) 
    399474            { 
    400                 // Jos kortti "on jo löydetty", niin sitä ei voi missään tapauksessa kääntää 
    401                 bool onkoPoistettuPelista = kortit[korostettuKortti.Rivi, korostettuKortti.Sarake].PoistettuPelista; 
    402  
    403                 if (!onkoPoistettuPelista) 
     475                if (!onkoPoistettuPelista && !onkoKaantymassa) 
    404476                { 
    405477                    return true; 
     
    415487                kortit[korostettuKortti.Rivi, korostettuKortti.Sarake].Kaanna(); 
    416488                kaannetyt.Add(kortit[korostettuKortti.Rivi, korostettuKortti.Sarake]); 
     489                kortinKaantoAani.Play(); 
    417490 
    418491                if (kaannetyt.Count == 2) // Tasan kaksi korttia käännetään yhdellä vuorolla 
     
    451524        public void PariLoytyi() 
    452525        { 
    453             MediaPlayer.Play("tada"); 
     526            pariLoytyiAani.Play(); 
    454527            kaannetyt.Clear(); 
    455528 
     
    486559        public void VuoroVaihtuu() 
    487560        { 
     561            vuoroVaihtuuAani.Play(); 
     562 
    488563            if (vuorossaOlevaPelaaja.Equals(pelaaja1)) 
    489564            { 
     
    491566                highlighter.Image = LoadImage("highlight2"); 
    492567                vuoronaytto.Text = "Pelaaja 2"; 
     568                VuoronVaihtumisEfekti("pelaaja2"); 
     569                //VuoronVaihtumisEfekti2("pelaaja2"); 
    493570                return; 
    494571            } 
     
    499576                highlighter.Image = LoadImage("highlight1"); 
    500577                vuoronaytto.Text = "Pelaaja 1"; 
     578                VuoronVaihtumisEfekti("pelaaja1"); 
     579                //VuoronVaihtumisEfekti2("pelaaja1"); 
     580 
    501581                return; 
    502582            } 
     583        } 
     584 
     585        public void VuoronVaihtumisEfekti(String kuvanNimi) 
     586        { 
     587            ExplosionSystem e = new ExplosionSystem(LoadImage(kuvanNimi), 1, false); 
     588            Add(e); 
     589            e.MinAcceleration = 0.0; 
     590            e.MaxAcceleration = 0.0; 
     591            e.MinLifetime = 1; 
     592            e.MaxLifetime = 1; 
     593            e.MinVelocity = 0.0; 
     594            e.MaxVelocity = 0.0; 
     595            e.MinRotationSpeed = 0.0; 
     596            e.MaxRotationSpeed = 0.0; 
     597            e.MinRotation = 0.0; 
     598            e.MaxRotation = 0.0; 
     599            e.AddEffect(0, 0, 1); 
     600        } 
     601 
     602        public void VuoronVaihtumisEfekti2(String kuvanNimi) 
     603        { 
     604            Image i = LoadImage(kuvanNimi); 
     605            VuoroVaihtuuEfekti efekti = new VuoroVaihtuuEfekti(i, 1); 
     606            Add(efekti); 
    503607        } 
    504608 
  • 2010/24/anlakane/Muistipeli/Muistipeli.csproj

    r1028 r1038  
    6969      <Private>False</Private> 
    7070    </Reference> 
     71    <Reference Include="System.Data" /> 
    7172    <Reference Include="System.Xml"> 
    7273      <Private>False</Private> 
     
    8687    <Compile Include="Properties\AssemblyInfo.cs" /> 
    8788    <Compile Include="Ohjelma.cs" /> 
     89    <Compile Include="VuoroVaihtuuEfekti.cs" /> 
    8890  </ItemGroup> 
    8991  <ItemGroup> 
Note: See TracChangeset for help on using the changeset viewer.