Changeset 1479 for 2010


Ignore:
Timestamp:
2010-07-30 16:50:55 (9 years ago)
Author:
hniemi
Message:

Palikan kääntö lisätty, pistenäytön teko aloitettu.

Location:
2010/23/hniemi/JyTris/JyTris
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • 2010/23/hniemi/JyTris/JyTris/ITetrispalikka.cs

    r1478 r1479  
    99namespace JyTris 
    1010{ 
     11    /// <summary> 
     12    /// Käyttöliittymä Tetrispalikoille 
     13    ///  
     14    /// Kaikkien tetrispalikoiden on osattava seuraavat asiat. 
     15    /// </summary> 
    1116    interface ITetrispalikka 
    1217    { 
     18        /// <summary> 
     19        /// Liikuttaa kaikkia palikkoja annetun vektorin verran 
     20        /// </summary> 
     21        /// <param name="liike">X ja Y oltava kokonaislukuja</param> 
    1322        void Liikuta(Vector liike); 
     23        /// <summary> 
     24        /// Antaa palikan käyttämän värin 
     25        /// </summary> 
     26        /// <returns>Palikan väri</returns> 
     27        Color Vari(); 
     28        /// <summary> 
     29        /// Lista palikoiden sijainneista 
     30        ///  
     31        /// Listan vektorien X ja Y arvot ovat kokonaislukuja 
     32        /// </summary> 
     33        /// <returns>Lista palikkojen sijainneista</returns> 
     34        Vector[] Sijainti(); 
    1435 
    15         Color Vari(); 
    16         Vector[] Sijainti(); 
     36        /// <summary> 
     37        /// Lista palikan sijainnista, jos sitä käännetään 
     38        ///  
     39        /// Listan vektorien X ja Y arvot ovat kokonaislukuja 
     40        /// </summary> 
     41        /// <returns>Lista palikoiden sijainneista käännettynä</returns> 
     42        Vector[] TulevaKaanto(); 
     43 
     44        /// <summary> 
     45        /// Kääntää palikkaa 
     46        /// </summary> 
     47        /// <returns>Palikan seuraavan asennon indeksi</returns> 
     48        int Kaanna(); 
    1749 
    1850    } 
  • 2010/23/hniemi/JyTris/JyTris/Peli.cs

    r1478 r1479  
    11using System; 
    22using Jypeli; 
    3 using Jypeli.ScreenObjects; 
     3using Jypeli.Widgets; 
    44using Jypeli.Assets; 
    55 
    66namespace JyTris 
    77{ 
     8 
     9    /// <summary> 
     10    /// JyTris 
     11    ///  
     12    /// Peli on tetrisklooni, joka on tarkoituksena toteuttaa JyPelillä 
     13    /// mahdollisimman yksinkertaisesti. 
     14    ///  
     15    /// Seuraavana tulossa: 
     16    /// - Lisääntyvät pisteet 
     17    /// - Loput palikat 
     18    /// </summary> 
    819    public class Peli : Game 
    920    { 
     
    1829        double vaikeusaste = 0.2; 
    1930 
     31        IntMeter pisteet = new IntMeter(0); 
     32        Label pistenaytto; 
     33 
    2034        protected override void Begin() 
    2135        { 
    2236            LuoPelikentta(); 
     37            //LuoHud(); 
    2338            AsetaNappaimet(); 
    2439            KaynnistaPeli(); 
    25             //pelikentta[9][5].Color = Color.Turquoise; 
    26         } 
    27  
     40        } 
     41 
     42        /// <summary> 
     43        /// Käynnistää pelin 
     44        ///  
     45        /// Luo ensimmäisen palikan ja tekee ajastimen. 
     46        /// </summary> 
    2847        void KaynnistaPeli() 
    2948        { 
     
    3655        } 
    3756 
     57        /// <summary> 
     58        /// Tuhoaa täydet rivit kentältä 
     59        /// </summary> 
    3860        void TuhoaTaydet() 
    3961        { 
     
    5577        } 
    5678 
     79        /// <summary> 
     80        /// Tuhoaa kaikki palikat kentältä. 
     81        /// </summary> 
    5782        void TuhoaKaikki() 
    5883        { 
     
    6792        } 
    6893 
     94        /// <summary> 
     95        /// Tuhoaa indeksiä vastaavan rivin ja tiputtaa sen päällä olevia rivejä. 
     96        /// </summary> 
     97        /// <param name="rivinIndeksi">Tiputettavan rivin indeksi</param> 
    6998        void TuhoaRivi(int rivinIndeksi) 
    7099        { 
     
    85114        } 
    86115 
     116        void LuoHud() 
     117        { 
     118            pistenaytto = new Label(80, 20); 
     119            pistenaytto.BindTo(pisteet); 
     120            Add(pistenaytto); 
     121 
     122            //pistenaytto.Position.X = Screen.RightSafe - 40; 
     123        } 
     124 
     125        /// <summary> 
     126        /// Luo pelikentän ylhäällä määrätyistä vakioista 
     127        /// </summary> 
    87128        void LuoPelikentta() 
    88129        { 
    89130            //Tässä säädetään pelialueen koko, jotta seinät tulevat oikeille kohdille 
    90             Level.Width = leveys * palikkojenSivu + leveys; 
    91             Level.Height = korkeus * palikkojenSivu + korkeus; 
     131            Level.Width = leveys * palikkojenSivu;// + leveys; 
     132            Level.Height = korkeus * palikkojenSivu;// + korkeus; 
    92133            Level.CreateBorders(true); 
    93134 
     
    109150                    pelikentta[i][j] = new GameObject(palikkojenSivu, palikkojenSivu, Shapes.Rectangle); 
    110151                    pelikentta[i][j].Color = Color.TransparentWhite; 
    111                     pelikentta[i][j].X = Level.Left + (palikkojenSivu / 2) + j * (palikkojenSivu + 1); 
    112                     pelikentta[i][j].Y = Level.Top - (palikkojenSivu / 2) - i * (palikkojenSivu + 1); 
     152                    pelikentta[i][j].X = Level.Left + (palikkojenSivu / 2) + j * (palikkojenSivu); 
     153                    pelikentta[i][j].Y = Level.Top - (palikkojenSivu / 2) - i * (palikkojenSivu); 
    113154                    Add(pelikentta[i][j]); 
    114155                } 
     
    116157        } 
    117158 
     159        /// <summary> 
     160        /// Asettaa näppäimet. 
     161        /// </summary> 
    118162        void AsetaNappaimet() 
    119163        { 
     
    124168            Keyboard.Listen(Key.Left, ButtonState.Pressed, Liikuta, "Liikuttaa palikkaa vasemmalle", vasemmalle); 
    125169            Keyboard.Listen(Key.Right, ButtonState.Pressed, Liikuta, "Liikuttaa palikkaa oikealle", oikealle); 
    126             Keyboard.Listen(Key.Down, ButtonState.Pressed, Laske, "Liikuttaa palikkaa alas", tiputusajastin); 
     170            Keyboard.Listen(Key.Down, ButtonState.Down, Laske, "Liikuttaa palikkaa alas", tiputusajastin); 
     171            Keyboard.Listen(Key.Up, ButtonState.Pressed, Kaanna, "Kääntää palikkaa"); 
    127172            Keyboard.Listen(Key.Space, ButtonState.Pressed, Tiputa, "Tiputtaa palikan"); 
    128173        } 
    129174 
     175        /// <summary> 
     176        /// Liikuttaa palikkaa halutun verran. 
     177        /// </summary> 
     178        /// <param name="suunta">X ja Y oltava kokonaislukuja.</param> 
    130179        void Liikuta(Vector suunta) 
    131180        { 
     
    140189        } 
    141190 
     191        /// <summary> 
     192        /// Kääntää palikkaa 
     193        /// </summary> 
     194        void Kaanna() 
     195        { 
     196            PaivitaPalikka(aktiivinenPalikka, Color.TransparentWhite); 
     197 
     198            //Tämä kohta tarkistaa, voiko palikkaa kääntää 
     199            //Jos ei voi, niin poistutaan. 
     200            Vector[] tulevaSijainti = aktiivinenPalikka.TulevaKaanto(); 
     201            for (int i = 0; i < tulevaSijainti.Length; i++) 
     202            { 
     203                if (!OnkoTyhja(tulevaSijainti[i]))  
     204                { 
     205                    PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 
     206                    return; 
     207                }  
     208            } 
     209 
     210            aktiivinenPalikka.Kaanna(); 
     211            PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 
     212        } 
     213 
     214        /// <summary> 
     215        /// Laskee palikkaa yhdellä. Jos palikkaa ei voi laskea, 
     216        /// lähettää uuden palikan. 
     217        /// </summary> 
     218        /// <param name="timer">Ei käytössä</param> 
    142219        void Laske(Timer timer) 
    143220        { 
     
    147224            { 
    148225                PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 
     226                TuhoaTaydet(); 
    149227                LuoPalikka(); 
    150228                return; 
     
    152230            aktiivinenPalikka.Liikuta(new Vector(0, 1)); 
    153231            PaivitaPalikka(aktiivinenPalikka, aktiivinenPalikka.Vari()); 
    154         } 
    155  
     232 
     233        } 
     234 
     235        /// <summary> 
     236        /// Tiputtaa palikkan kokonaan alas. 
     237        /// </summary> 
    156238        void Tiputa() 
    157239        { 
    158  
     240            ITetrispalikka palikka = aktiivinenPalikka; 
     241            while (aktiivinenPalikka == palikka) Laske(tiputusajastin); 
    159242        } 
    160243 
     
    180263        } 
    181264 
     265        /// <summary> 
     266        /// Tarkistaa, onko annetut paikka tyhjä 
     267        ///  
     268        /// Paikka on tyhjä, jos sen väri on Color.TransparentWhite 
     269        /// </summary> 
     270        /// <param name="paikka">X ja Y oltava kokonaislukuja</param> 
     271        /// <returns>true, jos paikka on tyhjä</returns> 
    182272        bool OnkoTyhja(Vector paikka) 
    183273        { 
     
    189279        } 
    190280 
     281        /// <summary> 
     282        /// Värittää paikkaa vastaavat laatikot annetulla värillä 
     283        /// </summary> 
     284        /// <param name="palikka">Tämän sijainti väritetään</param> 
     285        /// <param name="vari">Väri, jolla väritetään</param> 
    191286        void PaivitaPalikka(ITetrispalikka palikka, Color vari) 
    192287        { 
     
    199294        } 
    200295 
     296        /// <summary> 
     297        /// Luo palikan keskelle ylälaitaa 
     298        ///  
     299        /// Tulee antamaan satunnaisen palikan 
     300        /// </summary> 
    201301        void LuoPalikka() 
    202302        { 
  • 2010/23/hniemi/JyTris/JyTris/Pitka.cs

    r1478 r1479  
    1414        Vector[][] siirrot; 
    1515 
     16        private int seuraavaAsento = 0; 
     17 
     18        /// <summary> 
     19        /// Luo I-palikan  
     20        ///  
     21        /// Pelikentän oltava vähintään 4 korkea ja 4 leveä, 
     22        /// jotta palikkaa voidaan käyttää 
     23        /// </summary> 
     24        /// <param name="keskikohta">Palikan X-koordinaatti</param> 
    1625        public Pitka(int keskikohta) 
    1726        {  
     27            //Tämä silmukkaa tekee uudet palikat ja laittaa ne järjestykseen 
    1828            sijainnit = new Vector[4]; 
    1929            for (int i = 0; i < sijainnit.Length; i++) 
     
    2636            sijainnit[2].Y = 3; 
    2737             
     38            //Tämä luo siirrot, jotta palikkaa voidaan kääntää 
    2839            siirrot = new Vector[2][]; 
    2940            siirrot[0] = new Vector[4]; 
     
    6374        } 
    6475 
     76        public int Kaanna() 
     77        { 
     78            for (int i = 0; i < sijainnit.Length; i++) 
     79            { 
     80                sijainnit[i] += siirrot[seuraavaAsento][i]; 
     81            } 
     82 
     83            seuraavaAsento++; 
     84            if (seuraavaAsento > siirrot.Length-1) seuraavaAsento = 0; 
     85 
     86            return seuraavaAsento; 
     87        } 
     88 
     89        public Vector[] TulevaKaanto() 
     90        { 
     91            Vector[] tulevaSijainti = new Vector[4]; 
     92            for (int i = 0; i < tulevaSijainti.Length; i++) 
     93            { 
     94                tulevaSijainti[i] = sijainnit[i] + siirrot[seuraavaAsento][i]; 
     95            } 
     96            return tulevaSijainti; 
     97        } 
     98 
    6599        public Color Vari() 
    66100        { 
Note: See TracChangeset for help on using the changeset viewer.