[ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.01.10
Prihlásený: 13.03.12
Príspevky: 8
Témy: 5 | 5
NapísalOffline : 09.01.2010 20:05 | Hra Dáma problem

Mám vytvorene dve polia kamenov... su typu Kruh. kruh je trieda, ktoru naprogramoval ucitel.
v tych posunoch v sachovnici som sa snazil o to, aby sa suradnice preniesli s kamenom... kamenmi v hre sa hybe tak, ze sa zadaju parametre, kde sa nachadza... momentalne sa tym istym kamenom da pohnut len s pouzitim povodnych suradnic...
Neviem, ako vynulovat povodnu poziciu ani ako ju prepisat...
Za kazdu pomoc budem vdacny.


Sachovnica:

Kód:
/**
 * Sachovnica.
 *
 * @author (M!ro)
 * @version (2.0)
 */
public class Sachovnica
{
    private int aSirka;
    private int aVyska;
    private Kruh aKamen;
    Kruh [][] kameneHnede;
    Kruh [][] kameneBiele;
   
    /**
     * Vytvorí šachovnicu pre hru Dama.
     * Zadajte vysku a sirku podla poctu poli.
     * Vytvori 2 polia kamenov.
     */
    public Sachovnica(int paSirka, int paVyska)
    {
        aSirka = paSirka;
        aVyska = paVyska;
        aKamen = new Kruh();
       
        kameneHnede = new Kruh[8][8];
        for (int i = 0; i < paSirka; i++) {
            for (int j = 0; j < paVyska; j++){
                kameneHnede[i][j] = new Kruh();
                kameneHnede[i][j].zmenPriemer(40);
                kameneHnede[i][j].zmenFarbu("brown");
            }
        }
       
        kameneBiele = new Kruh[8][8];
        for(int i = 0; i < paSirka; i++){
            for (int j = 0; j < paVyska; j++) {
                kameneBiele[i][j] = new Kruh();
                kameneBiele[i][j].zmenPriemer(40);
                kameneBiele[i][j].zmenFarbu("white");
            }
        }
       
        Obdlznik obrys;
        obrys = new Obdlznik();
        obrys.zmenFarbu("black");
        obrys.zmenStrany( (aSirka*60+20) , (aVyska*60+20) );
        obrys.zobraz();
        obrys = new Obdlznik();
        obrys.zmenFarbu("white");
        obrys.posunVodorovne(5);
        obrys.posunZvisle(5);
        obrys.zmenStrany( (aSirka*60+10) , (aVyska*60+10) );
        obrys.zobraz();
        obrys = new Obdlznik();
        obrys.zmenFarbu("black");
        obrys.posunVodorovne(9);
        obrys.posunZvisle(9);
        obrys.zmenStrany( (aSirka*60+2) , (aVyska*60+2) );
        obrys.zobraz();
        for(int i = 0; i < aSirka; i++) {
            for (int j = 0; j < aVyska; j++) {
                Stvorec stvorcek = new Stvorec();
                stvorcek.posunVodorovne(60*i);
                stvorcek.posunZvisle(60*j);
                if(j%2 != i%2){
                    stvorcek.zmenFarbu("black");
                    } else {
                        stvorcek.zmenFarbu("white");
                    }
                stvorcek.zobraz();
            }
        }
    }
   
    public void zobrazHnede(int paX, int paY)
    {
        kameneHnede[paX][paY].posunVodorovne(60*paX);
        kameneHnede[paX][paY].posunZvisle(60*paY);
        kameneHnede[paX][paY].zobraz();
    }
   
    public void zobrazBiele(int paX, int paY)
    {
        kameneBiele[paX][paY].posunVodorovne(60*paX);
        kameneBiele[paX][paY].posunZvisle(60*paY);
        kameneBiele[paX][paY].zobraz();
    }
   
    public void posunHnedeVpravo(int paX, int paY)
    {
        if ((paX + 1) < aSirka) {
            kameneHnede[paX][paY].pomalyPosunVodorovne(60);
            kameneHnede[paX+1][paY] = kameneHnede[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
   
    public void posunHnedeVlavo(int paX, int paY)
    {
        if ((paX - 1) >= 0) {
            kameneHnede[paX][paY].pomalyPosunVodorovne(-60);
            kameneHnede[paX-1][paY] = kameneHnede[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
   
    public void posunBieleVpravo(int paX, int paY)
    {
        if ((paX + 1) < aSirka) {
            kameneBiele[paX][paY].pomalyPosunVodorovne(60);
            kameneBiele[paX+1][paY] = kameneBiele[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
   
    public void posunBieleVlavo(int paX, int paY)
    {
        if ((paX - 1) >= 0) {
            kameneBiele[paX][paY].pomalyPosunVodorovne(-60);
            kameneBiele[paX-1][paY] = kameneBiele[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
   
    public void posunHnedeDolu(int paX, int paY)
    {
        if ((paY + 1) < aVyska) {
            kameneHnede[paX][paY].pomalyPosunZvisle(60);
            kameneHnede[paX][paY+1] = kameneHnede[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
   
    public void posunBieleHore(int paX, int paY)
    {
        if ((paY - 1) >= 0) {
            kameneBiele[paX][paY].pomalyPosunZvisle(-60);
            kameneBiele[paX][paY-1] = kameneBiele[paX][paY];
        } else {
            System.out.println("Nespravny Tah!");
        }
    }
}



Hlavny program:

Kód:
/**
 * Dama.
 * Hra pre 2 hracov..
 *
 * @author (M!ro)
 * @version (1.0)
 */
public class Dama2
{
    private int aSachovnicaX;
    private int aSachovnicaY;
    private Sachovnica aSachovnica;
    private String aPrvyHrac;
    private String aDruhyHrac;
    private String aTahajuci;
    int[][] poleHodnot;
   
    /**
     * Konstruktor vytvori hru dama.
     * Zadajte, prosim, mena dvoch hracov.
     * Mena hracov nemozu byt rovnake.
     * Mena hracov zadavajte v uvodzovkach.
     */
    public Dama2(String paMenoPrveho, String paMenoDruheho)
    {
        aSachovnicaX = 8;
        aSachovnicaY = 8;
        aSachovnica = new Sachovnica(aSachovnicaX, aSachovnicaY);
        poleHodnot = new int[8][8];
       
        aPrvyHrac = paMenoPrveho;
        aDruhyHrac = paMenoDruheho;
        aTahajuci = aPrvyHrac;
        System.out.println("Na tahu je hrac "+aTahajuci+" s Bielymi figurkami");
       
        if (aPrvyHrac != aDruhyHrac) {
            this.poleHodnot();
            this.Kamene();
        } else {
            System.out.println("Mena hracov su rovnake. Zmente, prosim, meno aspom jednohe hraca");
        }
    }
   
    /**
     * Naplni poleHodnot hodnotami 0,1,2.
     */
    private void poleHodnot()
    {
        for (int i = 0; i < aSachovnicaX; i++) {
            for (int j = 0; j < aSachovnicaY; j++){
                poleHodnot[i][j] = 0;
            }
        }
        for (int i = 0; i < aSachovnicaX; i++) {
            for (int j = 0; j < 2; j++) {
                if (i % 2 != j % 2) {
                    poleHodnot[i][j] = 1;
                }
            }
        }
        for (int i = 0; i < aSachovnicaX; i++) {
            for (int j = aSachovnicaY - 2; j < aSachovnicaY; j++) {
                if (i % 2 != j % 2) {
                    poleHodnot[i][j] = 2;
                }
            }
       }
    }
   
    /**
     * Pomocou pola hodnot naplni sachovnicu kamenmi.
     * Pole s hodnotou 1 naplni hnedym kamenom.
     * Pole s hodnotou 2 naplni bielym kamenom.
     * Pole s hodnotou 0 ostava prazdne.
     */
    private void Kamene()
    {
        for (int i = 0; i < aSachovnicaX; i++) {
            for (int j = 0; j < aSachovnicaY; j++) {
                if (poleHodnot[i][j] == 1) {
                    aSachovnica.zobrazHnede(i,j);
                } else {
                    if (poleHodnot[i][j] == 2) {
                        aSachovnica.zobrazBiele(i,j);
                    }
                }
            }
        }
    }
   
    /**
     * Zadajte suradnice kamena, ktorym chcete pohnut.
     * Kamen sa neda posunut za hranice sachovnice.
     * Metoda overi, ci je na koncovom poli prekázka.
     * Rozozna prekazku a zareaguje podla pravidiel damy.
     */
    public void tahVpravo(int paX, int paY)
    {
        if (aTahajuci.equals(aPrvyHrac)) {
            if (poleHodnot[paX+1][paY-1] == 2) {
                System.out.println("Nesprávny Tah!");
            } else {
                if (poleHodnot[paX+1][paY-1] == 1) {
                    aSachovnica.posunBieleVpravo(paX, paY);
                    aSachovnica.posunBieleVpravo(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX+1][paY-1] = 0;
                    poleHodnot[paX+2][paY-2] = 2;
                } else {
                    aSachovnica.posunBieleVpravo(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX+1][paY-1] = 2;
                }
            }
        } else {
            if (poleHodnot[paX+1][paY+1] == 1) {
                System.out.println("Nesprávny Tah!");
            } else {
                if (poleHodnot[paX+1][paY+1] == 2) {
                    aSachovnica.posunHnedeVpravo(paX, paY);;
                    aSachovnica.posunHnedeVpravo(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX+1][paY+1] = 0;
                    poleHodnot[paX+2][paY+2] = 2;
                } else {
                    aSachovnica.posunHnedeVpravo(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX+1][paY+1] = 1;
               }
            }
        }
        this.overVyhru();
    }
   
    /**
     * Zadajte suradnice kamena, ktorym chcete pohnut.
     * Kamen sa neda posunut za hranice sachovnice.
     * Metoda overi, ci je na koncovom poli prekázka.
     * Rozozna prekazku a zareaguje podla pravidiel damy.
     */
    public void tahVlavo(int paX, int paY)
    {
        if (aTahajuci.equals(aPrvyHrac)) {
            if (poleHodnot[paX-1][paY-1] == 2) {
                System.out.println("Nesprávny Tah!");
            } else {
                if (poleHodnot[paX-1][paY-1] == 1) {
                    aSachovnica.posunBieleVlavo(paX, paY);
                    aSachovnica.posunBieleVlavo(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX-1][paY-1] = 0;
                    poleHodnot[paX-2][paY-2] = 2;
                } else {
                    aSachovnica.posunBieleVlavo(paX, paY);
                    aSachovnica.posunBieleHore(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX-1][paY-1] = 2;
                    }
                }   
        } else {
             if (poleHodnot[paX-1][paY+1] == 1) {
                System.out.println("Nesprávny Tah!");
            } else {
                if (poleHodnot[paX-1][paY+1] == 2) {
                    aSachovnica.posunHnedeVlavo(paX, paY);;
                    aSachovnica.posunHnedeVlavo(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX-1][paY+1] = 0;
                    poleHodnot[paX-2][paY+2] = 1;
                } else {
                    aSachovnica.posunHnedeVlavo(paX, paY);
                    aSachovnica.posunHnedeDolu(paX, paY);
                    poleHodnot[paX][paY] = 0;
                    poleHodnot[paX-1][paY+1] = 1;
                }
            }   
        }
        this.overVyhru();
    }
   
    private void overVyhru()
    {
        if (aTahajuci.equals(aDruhyHrac)) {
            aTahajuci = aPrvyHrac;
        } else {
            aTahajuci = aDruhyHrac;
        }
        System.out.println("Na tahu je "+aTahajuci);
    }
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.03.08
Prihlásený: 07.02.10
Príspevky: 72
Témy: 9 | 9
NapísalOffline : 12.01.2010 11:55 | Hra Dáma problem

Zdravim,
Neviem ci je to celkom spravne analyzovane...
Skus to urobit tak, ze zavedies abstraktnu triedu figurka a od nej nadedis triedy pesiak a dama (implementuju si metody napriklad chod, skac atd..). Kazda bude mat atribut ci je biela alebo cierna, kde stoji atd..

Potom bude sachovnicu reprezentovat pole figurok, teda vyuzijes polymorfizmus. Tam kde nebude figurka bude NULL, tam kde bude sa vytvori pomocou svojho konstruktora. Sachovnica sa vykresli (ako zalezi na teba) . Pri pohybe sa figurka premiestni na inu cast matice a tam kde stala bude NULL.
Ja som raz ako zadanie programoval takyto jednoduchy sach, kde som tiez vyuzil polymorfizmus..myslim ze to je ta spravna cesta.

http://www.danciwo.net/programView.aspx?prog_id=53&lang_id=1&cat_id=4


_________________
I am sorry, did I break your concentration?
Offline

Užívateľ
Užívateľ
Hra Dáma problem

Registrovaný: 04.04.08
Prihlásený: 19.05.15
Príspevky: 424
Témy: 75 | 75
NapísalOffline : 21.01.2010 0:34 | Hra Dáma problem

kedze uviedol aj zdrojovy kod, kde vidiet ze do OOP sa akurat dostava, tak ist na neho s abstraktnou triedou, polymorfizmom, je podla mna vela...

co presne chces vynulovat...prepisujes premennu a ti neprepisu povodnu hodnotu novou? alebo ako?


_________________
Notebook: Fujitsu Siemens AMILO Xi2550, 17" WUXGA (1920x1200), Intel Core2Duo T9300 (2,5 GHz), 3GB DDR2 667 MHz, 2x320 GB HDD (RAID 0), ATI Radeon HD2700 (256MB GDDR3)
 [ Príspevkov: 3 ] 


Hra Dáma problem



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Dáma vyriešená – program je neporaziteľný

v Novinky

1

497

26.07.2007 18:28

Poki

V tomto fóre nie sú ďalšie neprečítané témy.

BANG! kartova hra vs kockova hra :)

v Krčma

3

844

12.01.2016 7:26

Miso122

V tomto fóre nie sú ďalšie neprečítané témy.

problem zvuk skype/hra/mikrofon

v Zvuk

0

930

10.11.2011 19:01

Zycarious

V tomto fóre nie sú ďalšie neprečítané témy.

Problem neviem či hra alebo windows

v Hry a herné konzoly

3

732

30.10.2006 15:12

adam1989

V tomto fóre nie sú ďalšie neprečítané témy.

problem 5.1 repro hra ako 2.0

v Audio programy

12

3064

19.05.2010 22:47

vinancan

V tomto fóre nie sú ďalšie neprečítané témy.

Hra

v Hry a herné konzoly

2

625

24.06.2012 10:00

Korpy

V tomto fóre nie sú ďalšie neprečítané témy.

hra

v Ostatné

10

955

20.05.2010 21:39

Forty-

V tomto fóre nie sú ďalšie neprečítané témy.

HRA

v Hry a herné konzoly

4

833

09.01.2010 0:15

Cirky

V tomto fóre nie sú ďalšie neprečítané témy.

Zavodna hra

v Hry a herné konzoly

5

720

30.03.2008 15:43

murded

V tomto fóre nie sú ďalšie neprečítané témy.

Vesmirna hra

v Hry a herné konzoly

16

4484

13.01.2012 16:12

helpik

V tomto fóre nie sú ďalšie neprečítané témy.

FPS hra

v Hry a herné konzoly

9

2103

23.01.2009 19:01

radoDM

V tomto fóre nie sú ďalšie neprečítané témy.

Teamova hra

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Diskusia

54

3298

08.08.2010 0:35

Dzimbo

V tomto fóre nie sú ďalšie neprečítané témy.

podobna hra

v Hry a herné konzoly

4

824

18.10.2008 20:38

mano8

V tomto fóre nie sú ďalšie neprečítané témy.

textova hra

[ Choď na stránku:Choď na stránku: 1, 2, 3 ]

v Ostatné

63

3564

15.11.2008 16:51

tomxi

V tomto fóre nie sú ďalšie neprečítané témy.

Browse hra...

v Hry a herné konzoly

4

587

26.05.2012 11:05

Trivi

V tomto fóre nie sú ďalšie neprečítané témy.

Online hra

v Ostatné

25

798

08.07.2014 10:39

IntelSK



© 2005 - 2026 PCforum, edited by JanoF