Kezdőoldal » Számítástechnika » Programozás » Mi a baj a programmal?

Mi a baj a programmal?

Figyelt kérdés

Javascripttel csinálok aknakaresőt, csak valamiért nem folytatja az elvárható módon a rekurziót. Mi lehet a baj vele?


Így néz ki:



<meta charset=utf-8>

<style>

td {

text-align:center ;

}

</style>

<table border=1 id='x'></table>

<span id='y'></span>

<script>

var na=90 ;

var T=new Array(22) ;

for (j=0; j<22; j++) {

T[j]=new Array(32) ;

for (i=0;i<30;i++) T[j][i]=-1 ;

}

n=0 ;

while (n<=na) {

x=Math.floor((Math.random()*30));

y=Math.floor((Math.random()*20));

if (T[y][x]==-1) {

T[y][x]=-2 ;

n++ ;

}

}

for (i=0;i<32;i++) T[0][i]=-5 ;

for (i=0;i<32;i++) T[1][i]=-5 ;

for (i=0;i<32;i++) T[21][i]=-5 ;

for (i=0;i<32;i++) T[20][i]=-5 ;

for (i=0;i<22;i++) T[i][0]=-5 ;

for (i=0;i<22;i++) T[i][1]=-5 ;

for (i=0;i<22;i++) T[i][31]=-5 ;

for (i=0;i<22;i++) T[i][30]=-5 ;

for (j=1; j<20; j++) {

for (i=1;i<30;i++) {

if (T[j][i]==-1) {

asz=0 ;

for (k=-1;k<2;k++)

for (l=-1;l<2;l++)

if (T[j+l][i+k]==-2)

asz++ ;

T[j][i]=asz ;

};

}

}

function f(i,j) {

x=0 ;

document.getElementById('z'+i+"-"+j).innerHTML=T[j][i] ;

if (T[j][i]==0) for (k=-1;k<2;k++) for (l=-1;l<2;l++)

if (document.getElementById('z'+(i+k)+"-"+(j+l)).innerHTML==' ') {

document.getElementById('z'+(i+k)+"-"+(j+l)).innerHTML=T[j+l][i+k] ;

f(i+k,j+l) ;

}


}

s="" ;

for (i=1;i<20;i++) {

s+="<tr>" ;

for (j=1;j<30;j++)

s+="<td width=20px; id='z"+i+"-"+j+"' onclick=f("+i+","+j+")> </td>" ;

s+="</tr>" ;

}

document.getElementById('x').innerHTML=s ;


</script>



2013. okt. 26. 10:33
 1/3 anonim ***** válasza:

Tessék szépen belerakni HTML-struktúrába - a stíluslapot a fejlécbe (<head>), a kliens oldali Javascript-kódot a "test" aljába (</body> tag elé) - és akkor legalább működést fog mutatni:

[link]


Amit még finomítottam rajta:

- indentálás - javítja a kód olvashatóságát

- kommentek - későbbi módosításoknál jól jöhet

- egymás után következő ugyanolyan for ciklusok egyesítése - gyorsabb kód

- aposztrófok - szimplák a JS-nek, duplák a HTML-nek

2013. okt. 26. 13:08
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

És még egy kis finomítás:

[link]

ha már a nem törő szóközt (non-breaking space) keressük, akkor a játéktér kiírásakor tegyük azt, a szimpla szóköz helyett.

2013. okt. 26. 16:55
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
nekem is ugyanígy nézett ki. csak mikor bemásoltam, akkor vettem észre egy visszamásolás után, hogy nem működik. nem tudom miért, az eredeti ugyanígy futott, ahogy a tied. a rekurzió részleges lefutásán értettem azt, hogy a ciklus valamiért megáll, pedig tovább kéne futnia. nem lenne szabad nullák mellett üres négyzeteknek lennie.
2013. okt. 26. 21:05

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!