source: 2010/24/anlakane/Muistipeli/Kortti.cs @ 921

Revision 921, 3.4 KB checked in by anlakane, 10 years ago (diff)

Kortteja laitetaan nyt 2-ulotteiseen taulukkoon. Liikkuminen korttien välillä toimii. Kortit eivät käänny eikä pelissä muutenkaan ole vielä mitään järkeä.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Jypeli;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8namespace Muistipeli
9{
10    public class Kortti : GameObject
11    {
12        bool onkoKaantynyt;
13        protected Vector alkuperainenKoko;
14        public enum PuoliEsilla { Kuva, Taka }
15        protected enum Liikkeentila { Pysahtynyt, Pienentyy, Suurentuu }
16        Liikkeentila liikkeenTila;
17        PuoliEsilla puoliEsilla;
18        private bool kaantyminenAlkanut = false;
19
20        public Jypeli.Color kuvapuoliVari;
21        public Jypeli.Color takaVari;
22        public bool onkoPoistettuPelista;
23
24        public Kortti(double width, double height, bool kuvapuoliEsilla, Jypeli.Color kuvapuoliVari, Jypeli.Color takaVari)
25            : base(width, height, Shapes.Rectangle)
26        {
27            this.kuvapuoliVari = kuvapuoliVari;
28            this.takaVari = takaVari;
29            this.onkoPoistettuPelista = false;
30
31            if (kuvapuoliEsilla)
32            {
33                this.puoliEsilla = PuoliEsilla.Kuva;
34                this.Color = kuvapuoliVari;
35            }
36            else
37            {
38                this.puoliEsilla = PuoliEsilla.Taka;
39                this.Color = takaVari;
40            }
41
42            IsUpdated = true;
43            this.alkuperainenKoko = new Vector(width, height);
44        }
45
46        public void Kaanna()
47        {
48            kaantyminenAlkanut = true;
49            liikkeenTila = Liikkeentila.Pienentyy;
50        }
51
52        public PuoliEsilla KumpiPuoliEsilla()
53        {
54            return this.puoliEsilla;
55        }
56
57        void AsetaPuoli(PuoliEsilla puoli)
58        {
59            puoliEsilla = puoli;
60            switch (puoli)
61            {
62                case PuoliEsilla.Kuva:
63                    this.Color = kuvapuoliVari;
64                    break;
65                case PuoliEsilla.Taka:
66                    this.Color = takaVari;
67                    break;
68            }
69        }
70
71        /// <summary>
72        /// Allows the game component to update itself.
73        /// </summary>
74        /// <param name="gameTime">Provides a snapshot of timing values.</param>
75        public override void Update(Time time)
76        {
77            if (liikkeenTila == Liikkeentila.Pienentyy)
78            {
79                if (this.Width > 3)
80                {
81                    this.Size = new Vector(this.Width - 3, this.Height);
82                }
83                if (this.Width <= 3)
84                {
85
86                    if (puoliEsilla == PuoliEsilla.Kuva)
87                    {
88                        AsetaPuoli(PuoliEsilla.Taka);
89                    }
90                    else
91                    {
92                        AsetaPuoli(PuoliEsilla.Kuva);
93                    }
94                    liikkeenTila = Liikkeentila.Suurentuu;
95                }
96            }
97
98            if (liikkeenTila == Liikkeentila.Suurentuu)
99            {
100                if (this.Width < this.alkuperainenKoko.X)
101                {
102                    this.Size = new Vector(this.Width + 3, this.Height);
103                }
104                if (this.Width >= this.alkuperainenKoko.X)
105                {
106                    liikkeenTila = Liikkeentila.Pysahtynyt;
107                }
108
109            }
110
111
112            // TODO: Add your update code here
113            base.Update(time);
114        }
115    }
116}
Note: See TracBrowser for help on using the repository browser.