Zdravím,
Som začiatočník. Prvý semester na výške a musím odovzdať semestrálnu prácu.
Mala by to byť hra dáma. šachovnicu mám spravenú ako dvojrozmerné pole... vykreslovanie štvorcov.
Chcel by som Vás poprosiť o radu, akým spôsobom mám spraviť figurky? mam ich tiež dať do nejakeho pola? jedno pole pre biele jedno pre cierne? ako to riesit s tahmi?
Budem rád za kazdú radu. Vopred vdaka.
Fórum › Java
Hra Dáma
Na datovou reprezentaci hry Dáma ti stačí jedno dvojrozměrné pole. Hodnotou v jednotlivých buňkách rozlišíš, jestli je políčko prázdné nebo jestli je tam bílá/černá figurka (např. hodnoty 0, 1, 2).
Barvu políček rozlišíš podle pozice - například součet pozice řádek + sloupec je kladný pak bude pole bílé jinak černé.
Pohyby jsou potom možné pouze po diagonálách, a to na pozice, kde není žádná jiná figurka.
Ahoj. Nedávno jsem dělal stejné téma jako semestrálku. Neni to nic moc, protože je to v podstatě můj první větší program v Javě.
Chybí tam povinné tahy (povinnost skákat) a taky tam je špatně udělaný tah dámy (udělal jsem to tak, že dámou můžeš skočit kamkoliv za přeskakovaný kámen. Správně by jsi měl hned za něj). A taky tam nemam dobře udělaný načítání obrázků, protože sem nevěděl, jak je načítat, když jsou uvnitř toho jar balíčku, takže se to musí spouštět z Netbeans, aby byli vidět obrázky.
Jak říkám nic moc, ale snad ti to pomůže.
http://public.dominik-mostek.cz/D%c3%a1ma%20v.2.tar.gz
To liborb : myslis, ze pokial ma pole rovnake suradnice ako biely kamen, bude hodnota 1, ak ma rovnake suradnice ako hnedy kamen, bude hodnota 2? podla tych suradnic to nejak porovnavat?
To d.mostek : prepáč, ale nejde mi to otvoriť... vlastne skor asi neviem ako...
Obom vám ďakujem za pomoc
To emigrate : Tady je to v ZIPu. V netbeans to otevři jako project. http://public.dominik-mostek.cz/dama.zip
Pokúšam sa to spraviť s tou hodnotou. Ale nejak som to zacyklil. Nevytvorí to inštanciu.
Pripájam celý "program". Ak by ste si niekto našli čas...
Triedy Sachovnica a Dáma su mnou vytvorene. Ostatne robil učitel.
Pokúšam sa to spraviť s tou hodnotou. Ale nejak som to zacyklil. Nevytvorí to inštanciu.
Pripájam celý "program". Ak by ste si niekto našli čas...
Triedy Sachovnica a Dáma su mnou vytvorene. Ostatne robil učitel.
http://www.edisk.sk/stahni/19334/Dama.rar_228.32KB.html
...uz zase otravujem
Problém: Chcem do hlavneho programu vykreslit kamen z triedy Sachovnica, ale na 44. riadku mi to vypíše:
java.lang.NullPointerException
at Dama.<init>(Dama.java:44)
neviete o čo tomu ide?
Hlavny program:
/**
* 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();
}
}
}
}
}
}
Sachovnica:
/**
* 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();
}
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Hra dáma, potřebuji poradit s polem, zadávání tahů — založil Buddy
AI u hry Dáma — založil Mutagen
Moderátoři diskuze