Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 09.01.2010 20:05

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
Príspevok NapísalOffline : 12.01.2010 11:55

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
Príspevok NapísalOffline : 21.01.2010 0:34

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)
Odpovedať na tému [ Príspevkov: 3 ] 


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

418

26.07.2007 18:28

Poki Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. BANG! kartova hra vs kockova hra :)

v Krčma

3

691

12.01.2016 7:26

Miso122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem zvuk skype/hra/mikrofon

v Zvuk

0

851

10.11.2011 19:01

Zycarious Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem neviem či hra alebo windows

v Počítačové hry

3

647

30.10.2006 15:12

adam1989 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem 5.1 repro hra ako 2.0

v Audio programy

12

2929

19.05.2010 22:47

vinancan Zobrazenie posledných príspevkov

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

v Ostatné

10

813

20.05.2010 21:39

Forty- Zobrazenie posledných príspevkov

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

v Počítačové hry

4

738

09.01.2010 0:15

Cirky Zobrazenie posledných príspevkov

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

v Počítačové hry

2

518

24.06.2012 10:00

Korpy Zobrazenie posledných príspevkov

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

v Počítačové hry

16

4290

13.01.2012 16:12

helpik Zobrazenie posledných príspevkov

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

v Počítačové hry

9

854

14.01.2007 12:58

POM4R4NC Zobrazenie posledných príspevkov

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

v Počítačové hry

8

643

13.09.2011 18:58

unkown2552 Zobrazenie posledných príspevkov

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

v Ostatné

25

625

08.07.2014 10:39

IntelSK Zobrazenie posledných príspevkov

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

v Počítačové hry

4

444

26.05.2012 11:05

Trivi Zobrazenie posledných príspevkov

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

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

v Počítačové hry

33

3117

28.07.2012 18:48

incredible Zobrazenie posledných príspevkov

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

v Počítačové hry

5

633

30.03.2008 15:43

murded Zobrazenie posledných príspevkov

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

v Počítačové hry

2

501

23.09.2013 6:25

Buc1k Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra