Zdravím. Som začiatočník a narazil som na chybu pri pokuse o tvorbu programu Dáma (hra dáma).
Týmto vás prosím o pomoc.
Problém: Chcem do hlavneho programu vykreslit kamen z triedy Sachovnica, ale na 44. riadku (posledny for cyklus v hlavnom programe. je tam: "aSachovnica.kamenHnedy(); ") mi to vypíše:
java.lang.NullPointerException
at Dama.<init>(Dama.java:44)
neviete o čo tomu ide?
Hlavný program:
Kód:
/**
* Write a description of class Dáma here.
*
* @author (M!ro)
* @version (1.0)
*/
public class Dama
{
private int aSachovnicaX;
private int aSachovnicaY;
private Sachovnica aSachovnica;
private String aPrvyHrac;
private String aDruhyHrac;
int[][] poleHodnot;
public Dama(String menoPrveho, String menoDruheho)
{
aSachovnicaX = 8;
aSachovnicaY = 8;
poleHodnot = new int[8][8];
for (int i = 0; i < aSachovnicaX - 1; i++) {
for (int j = 0; j < aSachovnicaY - 1; j++){
poleHodnot[i][j] = 0;
}
}
for (int i = 0; i < aSachovnicaX - 1; i++) {
for (int j = 0; j < 2; j++) {
if (i % 2 != j % 2) {
poleHodnot[i][j] = 1;
}
}
}
for (int i = 0; i < aSachovnicaX - 1; i++) {
for (int j = aSachovnicaY - 2; j < aSachovnicaY - 1; j++) {
if (i % 2 != j % 2) {
poleHodnot[i][j] = 2;
}
}
}
for (int i = 0; i < aSachovnicaX - 1; i++) {
for (int j = 0; j < aSachovnicaY - 1; j++) {
if (poleHodnot[i][j] == 1) {
aSachovnica.kamenHnedy();
} else {
if (poleHodnot[i][j] == 2) {
aSachovnica.kamenBiely();
}
}
}
}
}
}
Trieda Sachovnica:
Kód:
/**
* Write a description of class Sachovnica here.
*
* @author (M!ro)
* @version (2.0)
*/
public class Sachovnica
{
private int aSirka;
private int aVyska;
private Kruh aKamen;
/**
* Vytvorí šachovnicu pre hru Dama.
*/
public Sachovnica(int sirka, int vyska)
{
aSirka = sirka;
aVyska = vyska;
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 kamenHnedy()
{
aKamen = new Kruh();
aKamen.zmenPriemer(50);
aKamen.zmenFarbu("brown");
aKamen.posunZvisle(-10);
aKamen.posunVodorovne(-10);
aKamen.posunVodorovne(60);
aKamen.zobraz();
}
public void kamenBiely()
{
aKamen = new Kruh();
aKamen.zmenPriemer(50);
aKamen.zmenFarbu("white");
aKamen.posunZvisle((aVyska - 1)*60-10);
aKamen.posunVodorovne(-10);
aKamen.posunVodorovne(60);
aKamen.zobraz();
}
}
Vopred ďakujem za každý pokus o pomoc
