[ 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

469

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

786

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

889

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 Počítačové hry

3

698

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

2992

19.05.2010 22:47

vinancan

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

Hra

v Počítačové hry

2

579

24.06.2012 10:00

Korpy

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

hra

v Ostatné

10

901

20.05.2010 21:39

Forty-

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

HRA

v Počítačové hry

4

795

09.01.2010 0:15

Cirky

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

Podobná hra

v Počítačové hry

3

410

05.02.2014 21:13

Krakish

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

Letecka hra

v Počítačové hry

13

1533

24.04.2008 15:54

Tominator

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

HRA ROKU

v Počítačové hry

24

3517

06.05.2006 11:07

Jimmymen

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

HP [hra]

v Operačné systémy Unix a Linux

0

922

30.04.2007 19:31

Freelan

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

Vesmirna hra

v Počítačové hry

16

4408

13.01.2012 16:12

helpik

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

Super Hra

v Počítačové hry

9

925

14.01.2007 12:58

POM4R4NC

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

Voľná hra

v Počítačové hry

8

706

13.09.2011 18:58

unkown2552

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

Browse hra...

v Počítačové hry

4

534

26.05.2012 11:05

Trivi



© 2005 - 2025 PCforum, edited by JanoF