» »

Puzzle 15 koda

Puzzle 15 koda

Serial ::

Zdravo.
Pri predmetu programiranje mam za nardit Igrico Puzzle 15 v java kodi.
Igra zgleda tako http://www.javaonthebrain.com/java/puzz...

Sicer zdej gremo k mojemu problemu.. na internetu sem najdel dokaj lepo kodo sam so določeni deli ki jih ne razumem v tej kodi in bi rabil malo pomoči..V komentarjih sem napisal kje in kaj ne razumem :(

import java.awt.*;
import java.awt.event.*;

public class Puzzle extends Frame{

Button[] buton=new Button[16];
String[] stevilopuzla={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"};
boolean[] preveri={false,false,false,false,false,false,false,false,false,false,false,false,false,false,false};

// čemu služijo tej false,sklepam da so zato tle da lahko med seboj v igri gumbe menjavamo sam ne razumem kako to deluje. :/


public Puzzle(){

setLayout(new GridLayout(4,4));

buton[i]=new Button();
add(buton[i]);}

/*******random label********/

labelVer:
for(;;){
int k=(int)(Math.random()*15);
if(preveri[k]){
continue labelVer;
}
else{
buton[i].setLabel(stevilopuzla[k]);
preveri[k]=true;
break;
}
}
}
/***************************/

//tle se začne uno kar me najbolj muči
buton[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){

if((ae.getSource()).equals(buton[0])){
degistir(0,1); //kaj pomenijo te številke?
degistir(0,4);}

//prvo sem mislil da so kordinate kje se nahajajo gumbi v tej naši "mreži" kasneje sem opazil da zo ni to..te številke služijo temu da s katerimi sosednjimi gumbi lahko mi menjujejo gumbe med seboj....ampak bi rabil da mi kdo to razloži kako to deluje, hvala :)

if((ae.getSource()).equals(buton[1])){
degistir(1,0);
degistir(1,5);
degistir(1,2);
}
if((ae.getSource()).equals(buton[2])){
degistir(2,1);
degistir(2,6);
degistir(2,3);
}
if((ae.getSource()).equals(buton[3])){
degistir(3,2);
degistir(3,7);
}
if((ae.getSource()).equals(buton[4])){
degistir(4,0);
degistir(4,5);
degistir(4,8);
}
if((ae.getSource()).equals(buton[5])){
degistir(5,1);
degistir(5,4);
degistir(5,6);
degistir(5,9);
}
if((ae.getSource()).equals(buton[6])){
degistir(6,2);
degistir(6,5);
degistir(6,7);
degistir(6,10);
}
if((ae.getSource()).equals(buton[7])){
degistir(7,3);
degistir(7,11);
degistir(7,6);
}
if((ae.getSource()).equals(buton[8])){
degistir(8,4);
degistir(8,12);
degistir(8,9);
}
if((ae.getSource()).equals(buton[9])){
degistir(9,8);
degistir(9,10);
degistir(9,5);
degistir(9,13);
}
if((ae.getSource()).equals(buton[10])){
degistir(10,9);
degistir(10,11);
degistir(10,6);
degistir(10,14);
}
if((ae.getSource()).equals(buton[11])){
degistir(11,15);
degistir(11,10);
degistir(11,7);
}
if((ae.getSource()).equals(buton[12])){
degistir(12,8);
degistir(12,13);
}
if((ae.getSource()).equals(buton[13])){
degistir(13,12);
degistir(13,14);
degistir(13,9);
}
if((ae.getSource()).equals(buton[14])){
degistir(14,13);
degistir(14,10);
degistir(14,15);
}
if((ae.getSource()).equals(buton[15])){
degistir(15,14);
degistir(15,11);
}
}
});
}

addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){ // za zapret okno
dispose();
System.exit(0);//do tle velja
}
});
setSize(400,400);
setVisible(true);
}

public static void main(String args[]){
Puzzle p=new Puzzle();}


public void degistir(int x, int y){ // tega tle na koncu tudi ne razumem kaj preveč
if((buton[y].getLabel()).equals(""))
{buton[y].setLabel(buton[x].getLabel());
buton[x].setLabel("");}

}
}


to je to :)

Lep pozdrav

Serial ::

manjkajo tri for zanke ker mi je težilo da niso zaklučene kode in sem jih dal vn.. če komu rabijo da bi mi pomagal naj pove :)

Serial ::

no razumev sem kaj pomenijo tiste številke in kako delujejo...

tisti del kode s številkami se nanaša potem spodaj na to

public void degistir(int x, int y){
if((gumbek[y].getLabel()).equals(""))
{gumbek[y].setLabel(gumbek[x].getLabel());
gumbek[x].setLabel("");}


bi mi lahko kdo povedal kaj to dela (bolj kmečko razožitev bi rabil) ? :)

blaz_ ::

če te zanima za tole kodo?

public void degistir(int x, int y){
if((gumbek[y].getLabel()).equals(""))
{gumbek[y].setLabel(gumbek[x].getLabel());
gumbek[x].setLabel("");}


potem tale primerja vrednost label gumba na poziciji y, ter gumba na poziciji x
če je labela na poziciji y enaka "" (se pravi prazna - s .equals se primerja za enakost stringov)
potem je tam prostor da se premakne ploščico (to naredi s gumbek[y].setLabel, ta postane gumbek[x].label)
kar je potrebno narediti še, je da se tisti kvadratek, kjer je bila prej ploščica označi, kot da je prazen
to naredi s gumbek[x].setLabel("");


podobno je pri tej kodi:
if((ae.getSource()).equals(buton[0])){
degistir(0,1); //kaj pomenijo te številke?
degistir(0,4);
}

vzame za preverjanje en gumb (v tem primeru za prvo ploščico)
ter preveri če je ta ploščica pritisnjena (verjetno je zato tam razred Button, nanj pa actionListener), če je pritisnjena, se pač premakne to ploščico, ampak ker je samo eno prazen polje, bo degistir(x,y), samo pri tistem polju dejansko premaknil ploščico

Lp
Ko tehnologija odpove, uporabi macolo.

Blinder ::

Na keri soli mate to za naredit?
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 1080 Pismo smo stari v bozjo mater. Recesija generacija

Serial ::

Hvala Blaz, se mi je zdelo neki takega sam sem mislu da da program gumbom pač koordinate (naprimer gumb 1 (x=2,y=3) in da se nahaja na tem mestu v naši "mreži") in zato mi ni blo jasno zakaj primerja x in y posamično..

Šola pa je famnit (rač & informatika ).

lp


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java]Problem z vektorjem

Oddelek: Programiranje
91271 (1140) KernelPanic
»

java, Swing in vmesnik ActionListener

Oddelek: Programiranje
5625 (562) marjan_h
»

4 v vrsto [java pomoč]

Oddelek: Programiranje
81381 (1208) Spura
»

[Java] Zagon appleta v HTML

Oddelek: Programiranje
161443 (1265) Bela01
»

[NALOGA][Java] Težave pri pisanju slikarja

Oddelek: Programiranje
202149 (1791) l0g1t3ch

Več podobnih tem