Learning : Xand0 School project

Post your scripts here.

<b>Note:</b>The scripts must be your own, and please read the "Important: Read before you post" thread inside this category before participating here.
Locked
EnacheVladian
Posts: 87
Joined: Wed Mar 22, 2006 4:54 pm

Learning : Xand0 School project

Post by EnacheVladian »

i made it 100% :D

http://www.enachevladian.thesmokylounge ... ian233.htm

full source

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>X si 0 : EnacheVladian gr.233</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
var map = new Array (0,0,0,0,0,0,0,0,0);
// 0 avaible ; 1 = X ; 0 = -1
var om = 0;
// 0 nu a ales inca ; 1 = X ; -1 = 0
var victorie = 0;
// 0 neterminat ; -1 victorie 0 ; 1 victorie pentru X ; 2 remiza

var tmp='';
var src='';
var computerpick, forcedpick;

function initializare(humanside)
{
//0 : nu a ales side ; 1 : humanX ; -1 : human0
om=humanside;
//intoarce pozele, rescrie harta
for (i=0 ; i<=8 ; i++)
{
****.images.src='free.jpg';
map=0;
}
if (humanside==-1)
{
//omul joaca cu 0, comp muta primul cu X
makeComputerMove(1);
}

}

function Victory()
{
// 0 neterminat ; -1 victorie 0 ; 1 victorie pentru X ; 2 remiza
// map[] este 1 daca X ; -1 daca 0 ; 0 daca neocupat
var linia1=0,linia2=0,linia3=0,coloana1=0,coloana2=0,coloana3=0,diagonala1=0,diagonala2=0;
linia1=map[0]+map[1]+map[2];
linia2=map[3]+map[4]+map[5];
linia3=map[6]+map[7]+map[8];
coloana1=map[0]+map[3]+map[6];
coloana2=map[1]+map[4]+map[7];
coloana3=map[2]+map[5]+map[8];
diagonala1=map[0]+map[4]+map[8];
diagonala2=map[6]+map[4]+map[2];
switch(linia1)
{
case 3 : return 1;
case -3 : return -1;
}
switch(linia2)
{
case 3 : return 1;
case -3 : return -1;
}
switch(linia3)
{
case 3 : return 1;
case -3 : return -1;
}
switch(coloana1)
{
case 3 : return 1;
case -3 : return -1;
}
switch(coloana2)
{
case 3 : return 1;
case -3 : return -1;
}
switch(coloana3)
{
case 3 : return 1;
case -3 : return -1;
}
switch(diagonala1)
{
case 3 : return 1;
case -3 : return -1;
}
switch(diagonala2)
{
case 3 : return 1;
case -3 : return -1;
}
// daca este victorie deja a iesit din functie, in continuare doar cazurile remiza si neterminat
// 0 neterminat ; -1 victorie 0 ; 1 victorie pentru X ; 2 remiza
// map[] este 1 daca X ; -1 daca 0 ; 0 daca neocupat
tmp=0;
for (t=0 ; t<=8 ; t++)
{
if (map[t]!=0) tmp+=1;
}
if (tmp==9) return 2;
return 0;
}

function makeComputerMove(computerside)
{
//1. Verifica daca exista mutare castigatoare
computerpick=-1;
forcedpick=-1;
for (g=0 ; g<=8 ; g++)
{
//cauta patratel liber si verifica
if (map[g]==0)
{
map[g]=computerside;
if (Victory()==computerside)
{
if (computerside==1) src='x.jpg';
else src='0.jpg';
****.images[g].src=src;
return;
}
else
{
map[g]=0;
}
}
}
//2. Daca nu exista atunci executa o mutare
//cauta sa impiedice victoria iminenta a adversarului
var linia1=0,linia2=0,linia3=0,coloana1=0,coloana2=0,coloana3=0,diagonala1=0,diagonala2=0;
linia1=map[0]+map[1]+map[2];
linia2=map[3]+map[4]+map[5];
linia3=map[6]+map[7]+map[8];
coloana1=map[0]+map[3]+map[6];
coloana2=map[1]+map[4]+map[7];
coloana3=map[2]+map[5]+map[8];
diagonala1=map[0]+map[4]+map[8];
diagonala2=map[6]+map[4]+map[2];

if (linia1==-2*computerside)
{
if (map[0]==0) computerpick=0;
if (map[1]==0) computerpick=1;
if (map[2]==0) computerpick=2;
}
if (linia2==-2*computerside)
{
if (map[3]==0) computerpick=3;
if (map[4]==0) computerpick=4;
if (map[5]==0) computerpick=5;
}
if (linia3==-2*computerside)
{
if (map[6]==0) computerpick=6;
if (map[7]==0) computerpick=7;
if (map[8]==0) computerpick=8;
}
if (coloana1==-2*computerside)
{
if (map[0]==0) computerpick=0;
if (map[3]==0) computerpick=3;
if (map[6]==0) computerpick=6;
}
if (coloana2==-2*computerside)
{
if (map[1]==0) computerpick=1;
if (map[4]==0) computerpick=4;
if (map[7]==0) computerpick=7;
}
if (coloana3==-2*computerside)
{
if (map[2]==0) computerpick=2;
if (map[5]==0) computerpick=5;
if (map[8]==0) computerpick=8;
}
if (diagonala1==-2*computerside)
{
if (map[0]==0) computerpick=0;
if (map[4]==0) computerpick=4;
if (map[8]==0) computerpick=8;
}
if (diagonala2==-2*computerside)
{
if (map[6]==0) computerpick=6;
if (map[4]==0) computerpick=4;
if (map[2]==0) computerpick=2;
}
if (computerpick!=-1) {forcedpick=computerpick};
//nu exista iminenta de castig adversar, alege free
if (map[4]==0) {computerpick=4}
else
{
if (map[4]==computerside)
{
if ((linia2==computerside)&&(map[3]==0)) computerpick=3;
if ((linia2==computerside)&&(map[5]==0)) computerpick=5;
if ((coloana2==computerside)&&(map[1]==0)) computerpick=1;
if ((coloana2==computerside)&&(map[7]==0)) computerpick=7;
if ((map[0]==0)&&(computerpick==-1)) computerpick=0;
if ((map[8]==0)&&(computerpick==-1)) computerpick=8;
}
else
{
if (map[0]==0) {computerpick=0}
else
{
if (map[8]==0) {computerpick=8}
else
{
if (map[6]==0) {computerpick=6}
}
}
}
}
if (forcedpick!=-1) {computerpick=forcedpick};
if (computerpick==-1)
{
for (z=0 ; z<=8 ; z++)
{
if (map[z]==0) computerpick=z;
}
}
map[computerpick]=computerside;
if (computerside==1) {src='x.jpg'}
else {src='0.jpg'};
****.images[computerpick].src=src;
//scopul functiei : computerul markeaza cu 1 sau -1 (computerside) un patratel
}

function ****(linia,coloana)
{
//verifica disponibilitatea
if (map[linia*3+coloana]!=0)
{
alert('Patratel deja ocupat, mai incearca !');
}
else //continuam ...
{
if (om==0) alert('Nu ai ales cu ce joci, alege X sau 0 !')
else
{
//scrie in map
map[linia*3+coloana]=om;
//flip image
if (om==1) src='x.jpg';
else src='0.jpg';
****.images[linia*3+coloana].src=src;
//verifica daca omul nu a castigat ...
// 0 neterminat ; -1 victorie 0 ; 1 victorie pentru X ; 2 remiza
victorie=Victory();
if (victorie==1)
{
alert('X a castigat!');
initializare(0);
}
if (victorie==-1)
{
alert('0 a castigat!');
initializare(0);
}
if (victorie==2)
{
//remiza, initializeaza
alert('Remiza ! omg ce surpriza !');
initializare(0);
}
if (victorie==0)
{
//executa miscarea computerului !
makeComputerMove(-om);
victorie=Victory();
//apoi check victory
if (victorie==1)
{
alert('X a castigat!');
initializare(0);
}
if (victorie==-1)
{
alert('0 a castigat!');
initializare(0);
}
if (victorie==2)
{
//remiza, initializeaza
alert('Remiza ! omg ce surpriza !');
initializare(0);
}

}
}
}
}
</script>

</head>

<body onLoad="initializare(0)">

<table width="600" border="0" align="center" cellpadding="2" cellspacing="2" bordercolor="#0000FF" bgcolor="#669900">

<tr>
<td width="592" height="354"><table width="75%" border="1" align="center" cellpadding="2" cellspacing="2" bordercolor="#0000FF" bgcolor="#00FF66">

<tr>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>
</tr>
<tr>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>

</tr>
<tr>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>
<td><div align="center">[img]free.jpg[/img]</div></td>
</tr>
</table></td>
</tr>
</table>

<table width="600" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#00FF66">

<tr>
<td width="600" height="50" valign="top"><form name="form1" method="post" action="">
<input type="button" name="StartHumanX" value="Start Human X" ****="initializare(1)">
<input type="button" name="StartHuman0" value="Start Human 0" ****="initializare(-1)">


</form></td>
</tr>
</table>

</body>
</html>


Locked