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);
}
}