アットウィキロゴ

オセロ

var x=new Array();
 
function game(){
 
var s,sx;
 
for(s=1;s<9;s++){
x[s]=new Array();
}
 
for(s=1;s<9;s++){
for(sx=1;sx<9;sx++){
x[s][sx]=0;
}
}
 
x[4][4]=1;
x[5][5]=1;
x[4][5]=2;
x[5][4]=2;
 
paint();
 
}
 
function paint(){
 
var sub=new svgpaint();
 
str="<svg width=\"400\" height=\"400\">";
for(s=1;s<9;s++){
for(sx=1;sx<9;sx++){
if(x[s][sx]==0)str=str+sub.circle(50*sx-25,50*s-25,25,"green");
if(x[s][sx]==1)str=str+sub.circle(50*sx-25,50*s-25,25,"black");
if(x[s][sx]==2)str=str+sub.circle(50*sx-25,50*s-25,25,"red");
}}
 
str=str+"</svg>";
 
$("#memo").html(str);
 
 
}
 
function shuffle(c,x1,y1){
 
var dx,dy,ch;
 
ch=0;
dx=1;
dy=1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=1;
dy=0;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=0;
dy=1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=-1;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=-1;
dy=0;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=0;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=-1;
dy=1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
dx=1;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)cal(c,x1,y1,dx,dy);
 
x[y1][x1]=c;
 
}
 
 
function point(c,x1,y1){
 
var dx,dy,ch;
 
ch=0;
dx=1;
dy=1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=1;
dy=0;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=0;
dy=1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=-1;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=-1;
dy=0;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=0;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=-1;
dy=1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
dx=1;
dy=-1;
if(play(c,x1,y1,dx,dy)>50)ch=100;
 
 
return ch;
 
}
 
function play(c,x1,y1,dx,dy){
 
var s,ch;
var card=new Array();
var x2,y2;
 
for(s=1;s<8;s++){
x2=x1+s*dx;
y2=y1+s*dy;
ch=0;
if(x2>8)ch=100;
if(x2<1)ch=100;
if(y2>8)ch=100;
if(y2<1)ch=100;
card[s]=0;
if(ch<50)card[s]=x[y2][x2];
}
 
var minc,h;
 
minc=0;
for(s=2;s<8;s++){
h=0;
if(card[s]==c)h=h+1;
if(minc==0)h=h+1;
if(h==2)minc=s;
}
 
var z,h;
z=0;
for(s=1;s<minc;s++){
if(card[s]==c)z=100;
if(card[s]==0)z=100;
}
 
var chx;
 
chx=0;
h=0;
if(z<50)h=h+1;
if(minc>0)h=h+1;
if(h==2)chx=100;
 
 
return chx;
 
}
 
 
function cal(c,x1,y1,dx,dy){
 
var s,minc,h,z;
 
minc=0;
for(s=2;s<8;s++){
x2=x1+s*dx;
y2=y1+s*dy;
ch=0;
if(x2>8)ch=100;
if(x2<1)ch=100;
if(y2>8)ch=100;
if(y2<1)ch=100;
z=0;
if(ch<50)z=x[y2][x2];
h=0;
if(z==c)h=h+1;
if(minc==0)h=h+1;
if(h==2)minc=s;
}
 
 
for(s=1;s<minc;s++){
x2=x1+s*dx;
y2=y1+s*dy;
x[y2][x2]=c;
}
 
}
 
function rev(){
 
var s,sx,tx;
var ex=new Array();
var ey=new Array();
var number_e;
 
tx=0;
for(s=1;s<9;s++){
for(sx=1;sx<9;sx++){
if(x[s][sx]==0)tx=tx+1;
if(x[s][sx]==0)ex[tx]=sx;
if(x[s][sx]==0)ey[tx]=s;
}
}
 
number_e=tx;
 
for(s=1;s<number_e+1;s++){
x1=ex[s];
y1=ey[s];
if(point(2,x1,y1)>50)x2=x1;
if(point(2,x1,y1)>50)y2=y1;
}
 
shuffle(2,x2,y2);
 
}
 
 
$(document).ready( function() {
        $("#memo").click(function(e){
 
var cx=e.clientX;
var cy=e.clientY;
 
x1=Math.floor(cx/50)+1;
y1=Math.floor(cy/50)+1;
 
if(point(1,x1,y1)>50){
shuffle(1,x1,y1);
rev();
}
 
paint();
 
});
 
});
 
最終更新:2015年04月13日 22:07