Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Othello/Reversi

Diskussion: Othello/Reversi im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige hallo leute, ich hänge mal wieder und kann mir nich erklärn was falsch ist, wäre nett wenn mir jmd ...

Antwort
Alt 26.02.06, 20:24   #1 (permalink)
 
Registriert seit: 02.02.06
eqw0uL Leistung: Facit NTK
eqw0uL eine Nachricht über ICQ schicken
Likes: 0
Angry Othello/Reversi

Anzeige

hallo leute, ich hänge mal wieder und kann mir nich erklärn was falsch ist, wäre nett wenn mir jmd helfen könnte :)

ich hab als hausaufgabe das spiel Reversi oder auch Othello genannt zu schreiben aufbekommen.

ich muss vom mouseover feld alle richtungen überprüfen, ob es möglich ist dem gegner steine abzunehmen und somit ob der spielzug möglich wäre.
die nord richtung wird bereits überprüft.. es funktioniert auch.
bei der nordwest richtung funktioniert es nicht obwohl ich nach dem gleichen schema vorgehe. ich kann es mir nciht erklären ... vllt sitz ich auch schon zulange vor dem rechner :)

hier also der src

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<html>
<head>
<title></title>
<meta name="author" content="admin">

<SCRIPT LANGUAGE="JavaScript">
<!--
var WHITE=64;
var BLACK=65;
var CLEAN=66;
var MARK=67;

var db=0;
var directions = new Array(8);

function over(y,x)
{
var n = (y*8)+x;
db = docheck(db,x,y,n);

if (db)
{
if (document.images[n].src == document.images[CLEAN].src)
document.images[n].src = "mark.jpg";
}
}

function out(y,x)
{
var n = (y*8)+x;
if (document.images[n].src == document.images[MARK].src)
{
document.images[n].src = "clean.jpg";
db=0;
}
}

function doclick(y,x)
{
var n = (y*8)+x;
if (document.images[n].src == document.images[MARK].src)
{
document.images[n].src = "white.jpg";
if(directions[0]>0)
{
var k=1;
while(document.images[((y-k)*8)+x].src == document.images[BLACK].src)
{
document.images[((y-k)*8)+x].src = "white.jpg";
k++;
}
}
if(directions[1]>0)
{
var k=1;
while(document.images[((y-k)*8)+(x-k)].src == document.images[BLACK].src)
{
document.images[((y-k)*8)+(x-k)].src = "white.jpg";
k++;
}
}
}
}

function docheck(db,x,y,p)
{
var vfield = new Array(8);
vfield[0] = new Array(8);
vfield[1] = new Array(8);
vfield[2] = new Array(8);
vfield[3] = new Array(8);
vfield[4] = new Array(8);
vfield[5] = new Array(8);
vfield[6] = new Array(8);
vfield[7] = new Array(8);

var n=0;

for(var i=0;i<8;i++)
{
for(var j=0;j<8;j++)
{
vfield[i][j] = document.images[n].src;
n++;
}
}

// var directions = new Array(8);
// var sp = (p/8) += "";

// NORD
if(vfield[x][y-1] !== undefined && vfield[x][y-1] == document.images[CLEAN].src)
{
directions[0]=0;
}
else
{

if(vfield[x][y-1] == document.images[BLACK].src)
{
for(var k=2;k<7;k++)
{
if(vfield[x][y-k] !== undefined && vfield[x][y-k] == document.images[WHITE].src)
{
directions[0]=1;
}
}
}
else
{
directions[0]=0;
}
}

// NORD WEST
if(vfield[x-1][y-1] !== undefined && vfield[x-1][y-1] == document.images[CLEAN].src)
{
directions[1]=0;
}
else
{
if(vfield[x-1][y-1] !== undefined && vfield[x-1][y-1] == document.images[BLACK].src)
{
for(var l=2;l<7;l++)
{
if(vfield[x-l][y-l] !== undefined && vfield[x-l][y-l] == document.images[WHITE].src)
{
directions[1]=1;
}
}
}
else
{
directions[1]=0;
}
}

if((directions[0]+directions[1])>0)
{
db = 1;
return db;
}
}
//-->
</SCRIPT>
</head>

<body id="booty" text="#000000" bgcolor="#CCCCCC" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<img src="clean.jpg" Id="f00" onMouseOver="over(0,0);" onMouseOut="out(0,0);" onClick="doclick(0,0);">
<img src="clean.jpg" Id="f01" onMouseOver="over(0,1);" onMouseOut="out(0,1);" onClick="doclick(0,1);">
<img src="clean.jpg" Id="f02" onMouseOver="over(0,2);" onMouseOut="out(0,2);" onClick="doclick(0,2);">
<img src="clean.jpg" Id="f03" onMouseOver="over(0,3);" onMouseOut="out(0,3);" onclick="doclick(0,3);">
<img src="clean.jpg" Id="f04" onMouseOver="over(0,4);" onMouseOut="out(0,4);" onclick="doclick(0,4);">
<img src="clean.jpg" Id="f05" onMouseOver="over(0,5);" onMouseOut="out(0,5);" onclick="doclick(0,5);">
<img src="clean.jpg" Id="f06" onMouseOver="over(0,6);" onMouseOut="out(0,6);" onclick="doclick(0,6);">
<img src="clean.jpg" Id="f07" onMouseOver="over(0,7);" onMouseOut="out(0,7);" onclick="doclick(0,7);">
<br>
<img src="clean.jpg" Id="f10" onMouseOver="over(1,0);" onMouseOut="out(1,0);" onclick="doclick(1,0);">
<img src="clean.jpg" Id="f11" onMouseOver="over(1,1);" onMouseOut="out(1,1);" onclick="doclick(1,1);">
<img src="clean.jpg" Id="f12" onMouseOver="over(1,2);" onMouseOut="out(1,2);" onclick="doclick(1,2);">
<img src="clean.jpg" Id="f13" onMouseOver="over(1,3);" onMouseOut="out(1,3);" onclick="doclick(1,3);">
<img src="clean.jpg" Id="f14" onMouseOver="over(1,4);" onMouseOut="out(1,4);" onclick="doclick(1,4);">
<img src="clean.jpg" Id="f15" onMouseOver="over(1,5);" onMouseOut="out(1,5);" onclick="doclick(1,5);">
<img src="clean.jpg" Id="f16" onMouseOver="over(1,6);" onMouseOut="out(1,6);" onclick="doclick(1,6);">
<img src="clean.jpg" Id="f17" onMouseOver="over(1,7);" onMouseOut="out(1,7);" onclick="doclick(1,7);">
<br>
<img src="clean.jpg" Id="f20" onMouseOver="over(2,0);" onMouseOut="out(2,0);" onclick="doclick(2,0);">
<img src="clean.jpg" Id="f21" onMouseOver="over(2,1);" onMouseOut="out(2,1);" onclick="doclick(2,1);">
<img src="clean.jpg" Id="f22" onMouseOver="over(2,2);" onMouseOut="out(2,2);" onclick="doclick(2,2);">
<img src="white.jpg" Id="f23" onMouseOver="over(2,3);" onMouseOut="out(2,3);" onclick="doclick(2,3);">
<img src="clean.jpg" Id="f24" onMouseOver="over(2,4);" onMouseOut="out(2,4);" onclick="doclick(2,4);">
<img src="clean.jpg" Id="f25" onMouseOver="over(2,5);" onMouseOut="out(2,5);" onclick="doclick(2,5);">
<img src="clean.jpg" Id="f26" onMouseOver="over(2,6);" onMouseOut="out(2,6);" onclick="doclick(2,6);">
<img src="clean.jpg" Id="f27" onMouseOver="over(2,7);" onMouseOut="out(2,7);" onclick="doclick(2,7);">
<br>
<img src="clean.jpg" Id="f30" onMouseOver="over(3,0);" onMouseOut="out(3,0);" onclick="doclick(3,0);">
<img src="clean.jpg" Id="f31" onMouseOver="over(3,1);" onMouseOut="out(3,1);" onclick="doclick(3,1);">
<img src="clean.jpg" Id="f32" onMouseOver="over(3,2);" onMouseOut="out(3,2);" onclick="doclick(3,2);">
<img src="white.jpg" Id="f33" onMouseOver="over(3,3);" onMouseOut="out(3,3);" onclick="doclick(3,3);">
<img src="black.jpg" Id="f34" onMouseOver="over(3,4);" onMouseOut="out(3,4);" onclick="doclick(3,4);">
<img src="clean.jpg" Id="f35" onMouseOver="over(3,5);" onMouseOut="out(3,5);" onclick="doclick(3,5);">
<img src="clean.jpg" Id="f36" onMouseOver="over(3,6);" onMouseOut="out(3,6);" onclick="doclick(3,6);">
<img src="clean.jpg" Id="f37" onMouseOver="over(3,7);" onMouseOut="out(3,7);" onclick="doclick(3,7);">
<br>
<img src="clean.jpg" Id="f40" onMouseOver="over(4,0);" onMouseOut="out(4,0);" onclick="doclick(4,0);">
<img src="clean.jpg" Id="f41" onMouseOver="over(4,1);" onMouseOut="out(4,1);" onclick="doclick(4,1);">
<img src="clean.jpg" Id="f42" onMouseOver="over(4,2);" onMouseOut="out(4,2);" onclick="doclick(4,2);">
<img src="black.jpg" Id="f43" onMouseOver="over(4,3);" onMouseOut="out(4,3);" onclick="doclick(4,3);">
<img src="white.jpg" Id="f44" onMouseOver="over(4,4);" onMouseOut="out(4,4);" onclick="doclick(4,4);">
<img src="clean.jpg" Id="f45" onMouseOver="over(4,5);" onMouseOut="out(4,5);" onclick="doclick(4,5);">
<img src="clean.jpg" Id="f46" onMouseOver="over(4,6);" onMouseOut="out(4,6);" onclick="doclick(4,6);">
<img src="clean.jpg" Id="f47" onMouseOver="over(4,7);" onMouseOut="out(4,7);" onclick="doclick(4,7);">
<br>
<img src="clean.jpg" Id="f50" onMouseOver="over(5,0);" onMouseOut="out(5,0);" onclick="doclick(5,0);">
<img src="clean.jpg" Id="f51" onMouseOver="over(5,1);" onMouseOut="out(5,1);" onclick="doclick(5,1);">
<img src="clean.jpg" Id="f52" onMouseOver="over(5,2);" onMouseOut="out(5,2);" onclick="doclick(5,2);">
<img src="clean.jpg" Id="f53" onMouseOver="over(5,3);" onMouseOut="out(5,3);" onclick="doclick(5,3);">
<img src="clean.jpg" Id="f54" onMouseOver="over(5,4);" onMouseOut="out(5,4);" onclick="doclick(5,4);">
<img src="clean.jpg" Id="f55" onMouseOver="over(5,5);" onMouseOut="out(5,5);" onclick="doclick(5,5);">
<img src="clean.jpg" Id="f56" onMouseOver="over(5,6);" onMouseOut="out(5,6);" onclick="doclick(5,6);">
<img src="clean.jpg" Id="f57" onMouseOver="over(5,7);" onMouseOut="out(5,7);" onclick="doclick(5,7);">
<br>
<img src="clean.jpg" Id="f60" onMouseOver="over(6,0);" onMouseOut="out(6,0);" onclick="doclick(6,0);">
<img src="clean.jpg" Id="f61" onMouseOver="over(6,1);" onMouseOut="out(6,1);" onclick="doclick(6,1);">
<img src="clean.jpg" Id="f62" onMouseOver="over(6,2);" onMouseOut="out(6,2);" onclick="doclick(6,2);">
<img src="clean.jpg" Id="f63" onMouseOver="over(6,3);" onMouseOut="out(6,3);" onclick="doclick(6,3);">
<img src="clean.jpg" Id="f64" onMouseOver="over(6,4);" onMouseOut="out(6,4);" onclick="doclick(6,4);">
<img src="clean.jpg" Id="f65" onMouseOver="over(6,5);" onMouseOut="out(6,5);" onclick="doclick(6,5);">
<img src="clean.jpg" Id="f66" onMouseOver="over(6,6);" onMouseOut="out(6,6);" onclick="doclick(6,6);">
<img src="clean.jpg" Id="f67" onMouseOver="over(6,7);" onMouseOut="out(6,7);" onclick="doclick(6,7);">
<br>
<img src="clean.jpg" Id="f70" onMouseOver="over(7,0);" onMouseOut="out(7,0);" onclick="doclick(7,0);">
<img src="clean.jpg" Id="f71" onMouseOver="over(7,1);" onMouseOut="out(7,1);" onclick="doclick(7,1);">
<img src="clean.jpg" Id="f72" onMouseOver="over(7,2);" onMouseOut="out(7,2);" onclick="doclick(7,2);">
<img src="clean.jpg" Id="f73" onMouseOver="over(7,3);" onMouseOut="out(7,3);" onclick="doclick(7,3);">
<img src="clean.jpg" Id="f74" onMouseOver="over(7,4);" onMouseOut="out(7,4);" onclick="doclick(7,4);">
<img src="clean.jpg" Id="f75" onMouseOver="over(7,5);" onMouseOut="out(7,5);" onclick="doclick(7,5);">
<img src="clean.jpg" Id="f76" onMouseOver="over(7,6);" onMouseOut="out(7,6);" onclick="doclick(7,6);">
<img src="clean.jpg" Id="f77" onMouseOver="over(7,7);" onMouseOut="out(7,7);" onclick="doclick(7,7);">
<br>
<br>
<br>
<img src="white.jpg" Id="white">
<img src="black.jpg" Id="black">
<img src="clean.jpg" Id="clean">
<img src="mark.jpg" Id="mark">
<br><br>
<a href="http://nopaste.php-q.net/193127">JS Source(click me)</a>
<br><a href="http://test.chancers-berlin.de/test/index2.html">Optik Version(click me)</a>
</body>
</html>
danke im vorraus, das ding hier zerstört langsam meine gehirnwindungen :>

ich seh grad die tabs wurden nicht übernommen hier nochmal schöner : sRc
eqw0uL ist offline   Mit Zitat antworten
Alt 26.02.06, 21:00   #2 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Achja, Othello... hab ich auch mal in JS umgesetzt *g

Dein Algorithmus hat aber auch ein logisches Problem. Du schaust, ob das benachbarte Feld dem Gegenspieler gehört und in der Reihe dahinter irgendwo ein eigenes Feld ist... allerdings müsstest du bereits beim ersten Leerfeld dahinter abbrechen.

Und wieso verpasst du den Feldern nicht fortlaufende IDs? Die Rechnung y*8+x aus Zeile 19 haut so nämlich nicht hin, wenn du nur von 1-7, 10-17 usw. nummerierst.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 26.02.06, 22:06   #3 (permalink)
Themenstarter
 
Registriert seit: 02.02.06
eqw0uL Leistung: Facit NTK
eqw0uL eine Nachricht über ICQ schicken
Likes: 0
Standard

danke dir das mit dem logikfehler stimmt soweit, hab das eben geändert:

Code:
                                                 // NORD WEST
                                                 if(vfield[x-1][y-1] == "NULL" || vfield[x-1][y-1] == document.images[CLEAN].src)
                                                 {
                                                 	directions[1]=0;
                                                 }
                                                 	else
                                                         {
                                                         	if(vfield[x-1][y-1] != "NULL" && vfield[x-1][y-1] == document.images[BLACK].src)
                                                                 {
                                                                 	var m=2;
                                                                         while(vfield[x-m][y-m] != "NULL" && vfield[x-m][y-m] != document.images[CLEAN].src)
                                                                         {
                                                                 		if(vfield[x-m][y-m] != "NULL" && vfield[x-m][y-m] == document.images[WHITE].src)
                                                                         	{
                                                                                 	directions[1]=1;
                                                                                 }
                                                                                 m++;
                                                                         }
                                                                 }
                                                                 else
                                                                 {
                                                                 	directions[1]=0;
                                                                 }
                                                         }
n = y*8+x funktioniert hier weil ich per document.images[n] auf 64 IMGs zugreifen kann. bei mouseover übergeben die bilder ihre eigenen koordinaten
Code:
<img src="clean.jpg" Id="f00" onMouseOver="over(0,0);".....
die id hat garnix zu sagen ;>

leider funktiniert das nochnich. außerdem sind züge möglich die eigendlich illegal sind.
ich prüfe erst ob das nächste feld in der jeweiligen richtung clean oder NULL (nicht existent) ist. wenn nicht, dann wird überprüft ob es schwarz ist. wenn ja, wird nach einem weißen feld nach dem schwarzen gesucht. wenn eins gefunden wurde(und kein feld dazwischen unbesetzt oder NULL ist) ist die richtung möglich und der zug legal ... ichsehe kein problem, hab ich nen denkfehler ? oder ist was an der struktur nicht in ordnung ? .. das blöde ist nur wenn ich das morgen meinem IT lehrer zeige kann mir der höchstwarscheinlich nichma sagen wo der fehler ist-.-

danke nochmal für deine hilfe )
eqw0uL ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Othello/Reversi
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61