Mi a baj a programmal?
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>
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:
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
És még egy kis finomítás:
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!