Dobrý den, tvořím jednoduchou hru ,,Patnáctka" (kdo neznáte, prosím vygooglete si to :) )
Už ji mám téměř celou hotovu ale mám problém s posouváním kamenů. Když chci ,,prázdné místo"
posouvat dolů, či vpravo funguje. Posuv zpět nahoru a vlevo bohužel ne. A to jsem kod pro posouvání psal jen jednou a pak zkopíroval a řádně upravil pro každý směr.
Mám založenený list s čísly jdoucími po sobě( od 1 do 15, 16. je prázdný znak) a dvourozměrné pole 4x4 JButtonů, kterým náhodně přiřadím hodnoty z listu čísel.
public void actionPerformed(ActionEvent e) {
String cislo = e.getActionCommand();
if(cislo != ""){
for(int y = 0; y < tlacitka.length; y++){
for(int x = 0; x < tlacitka[y].length; x++){
if( tlacitka[y][x].getText().equals(cislo))
{
if(x-1 >= 0) // posun prázdna vpravo
if(tlacitka[y][x-1].getText().equals("")){ tlacitka[y][x-1].setText(tlacitka[y][x].getText()); tlacitka[y][x].setText("");}
if(y-1 >= 0) // posun prázdna dolu
if(tlacitka[y-1][x].getText().equals("")){ tlacitka[y-1][x].setText(tlacitka[y][x].getText()); tlacitka[y][x].setText("");}
if(x+1 < tlacitka.length) // posun prázdna vlevo
if(tlacitka[y][x+1].getText().equals("")){ tlacitka[y][x+1].setText(tlacitka[y][x].getText()); tlacitka[y][x].setText("");
tlacitka[0][0].setText("IF proveden");}
if(y+1 < tlacitka.length) // posun prázdna nahoru
if(tlacitka[y+1][x].getText().equals("")){ tlacitka[y+1][x].setText(tlacitka[y][x].getText()); tlacitka[y][x].setText("");}
}
}
}
}
}
Předcházející kód obsahuje podmínku, jestli nemá právě nakliklé tlačítko znak "", tak se začnou projíždět všechny JButtony v poli, a když se nějaký prvek (číslo) shoduje s číslem právě kliknutého tlačítka
se zjišťuje jestli s tímto tlačítkem sousedí tlačítko s prázdným znakem ("") pro případný posuv. Jestli ano,
znak ze stisklého tlačítka se přesune tam, kde bylo prázdné a do znaku stisklého tlačítka se vloží prázdný znak ("").
Posun prázdna vlevo a nahoru mi ale nefunguje a nemohu přijít na to proč. Pro kontrolu jsem ještě vložil do IFu pro posun vlevo kontrolu, že po provedení tohoto IFu se do textu tlačítka na pozici [0,0] zapíše text IF proveden, jako důkaz že pogram skutečně do tohoto IFu ,,vlezl". Když chci ,,prázdno" posunout vlevo, tak se skutečně na tačítko [0,0] text, "IF proveden" napíše, příkaz pro prohození čísla stisklého tlačítka a prázdného znaku ale zůstane ignorován.
Já se ptám proč. Děkuji