2009年2月25日水曜日

IRCでリバーシっぽいもの。

limeChatでリバーシするjavascriptこしらえました。

javascriptをいじるのは初体験でしたが、ハマってしまいそうです^^


以下 リーバシする スプリクト^^(わざとですよ)

var turn=0;//0黒 1 白 ターン
var data = new Array(8*8);
var data2 = new Array(8*8);
var channel_g;
var end=0;

function event::onChannelText(prefix, channel, text){
channel_g=channel;
if(text.match(/^#/i)){

cmd=""+text.match(/[a-z]+$/i);
var ddd=text.match(/(\d)/g);

if(ddd!=null){

x=ddd[0];
y=ddd[1];
if(end==1){
send(channel,"<color navy,silver><ゲームを再開してください>");
return(0);
}
if(x>8||x==0||y>8||y==0){
send(channel,"<color navy,silver><不正な入力です>");
}else{
if(putable(x-1,y-1)==0){
send(channel,"<color navy,silver><そこには打てません>");

}else{
copyArr12();
put(x-1,y-1);
turnChange()
if(numberOfPutable()==0){
turnChange()
if(numberOfPutable()==0){

if(black_n()>white_n()){
send(channel,"<color navy,silver><黒の勝ち>");
}
if(black_n()<white_n()){
send(channel,"<color navy,silver><白の勝ち>");
}
if(black_n()==white_n()){
send(channel,"<color navy,silver><引き分け>");
}
draw();
end=1;
return(0);
}else{
send(channel,"<color navy,silver><打つ手がないのでパス>");
}
}
draw();

}
}
}

if(cmd!=null){
if(cmd.search(/^new$/i)!=-1){
send(channel,"<color navy,silver><ゲームを開始します>");
newGame();
draw();
end=0;
}
if(cmd.search(/^matta$/i)!=-1){
if(matta_ok==1){
send(channel,"<color navy,silver><\"待った\"しました>");
copyArr21();
turnChange()
draw();
end=0;
matta_ok=0;
}else{
send(channel,"<color navy,silver><\"待った\"できません>");
}
}
}
}
}

function newGame(){
turn=0;
for(ix=0;ix<8;ix++){
for(iy=0;iy<8;iy++){
data[(ix)*8+(iy)] = 0;
}
}
data[(3)*8+(3)]=1; //1黒?
data[(4)*8+(4)]=1; //2白
data[(4)*8+(3)]=2;
data[(3)*8+(4)]=2;
}
function draw(){
send(channel_g,"<color white,white>,/<color gray,white>1<color white,white>,,<color gray,white>2<color white,white>,,<color gray,white>3<color white,white>,,<color gray,white>4<color white,white>,,<color gray,white>5<color white,white>,,<color gray,white>6<color white,white>,,<color gray,white>7<color white,white>,,<color gray,white>8");
for(iy=0;iy<8;iy++){
str="";
str+="<color gray,white>"+(iy+1);
for(ix=0;ix<8;ix++){

if(data[(ix)*8+(iy)]==0){
if(putable(ix,iy)==0){
str+=""+"<color green,green>.<color black,green>・<color green,green>.";
}else{
str+=""+"<color green,green>.<color red,green>・<color green,green>."
}
}
if(data[(ix)*8+(iy)]==1){
str+=""+"<color black,green>●";
}
if(data[(ix)*8+(iy)]==2){
str+=""+"<color white,green>●";
}
}
if(iy==5){
str+="<color> balck "+black_n();
}
if(iy==6){
str+="<color> white "+white_n();
}
if(iy==7){
if(turn==0){
str+="<color> 黒の番です";
}else{
str+="<color> 白の番です";
}
}
send(channel_g,str);
}
}

function black_n(){
amount=0;
for(i=0;i<64;i++){
if(data[i]==1){
amount++;
}
}
return(amount);
}

function white_n(){
amount=0;
for(i=0;i<64;i++){
if(data[i]==2){
amount++;
}
}
return(amount);
}

function putable(x,y){
rr=0;
if(data[(x)*8+(y)]==0){
if(turn==0){
a1=2;
a2=1;
}else{
a1=1;
a2=2;
}
if(x!=0&&y!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y-m)]==a1){
a=1;
}
if(data[(x-m)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y-m)]==0){
break;
}
if(x-m==0||y-m==0){
break;
}
m++;

}
}

if(y!=0){
m=1;
a=0;
while(1){
if(data[(x)*8+(y-m)]==a1){
a=1;
}
if(data[(x)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x)*8+(y-m)]==0){
break;
}
if(y-m==0){
break;
}
m++;

}
}

if(x!=7&&y!=0){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y-m)]==a1){
a=1;
}
if(data[(x+m)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y-m)]==0){
break;
}
if(x+m==7||y-m==0){
break;
}
m++;

}
}

if(x!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y)]==a1){
a=1;
}
if(data[(x+m)*8+(y)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y)]==0){
break;
}
if(x+m==7){
break;
}
m++;

}
}

if(x!=7&&y!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y+m)]==a1){
a=1;
}
if(data[(x+m)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y+m)]==0){
break;
}
if(x+m==7||y+m==7){
break;
}
m++;

}
}

if(y!=7){
m=1;
a=0;
while(1){
if(data[(x)*8+(y+m)]==a1){
a=1;
}
if(data[(x)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x)*8+(y+m)]==0){
break;
}
if(y+m==7){
break;
}
m++;

}
}
if(x!=0&&y!=7){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y+m)]==a1){
a=1;
}
if(data[(x-m)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y+m)]==0){
break;
}
if(x-m==0||y+m==7){
break;
}
m++;

}
}
if(x!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y)]==a1){
a=1;
}
if(data[(x-m)*8+(y)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y)]==0){
break;
}
if(x-m==0){
break;
}
m++;

}
}
}
return(rr);
}

function put(x,y){
if(turn==0){
a1=2;
a2=1;
}else{
a1=1;
a2=2;
}
if(x!=0&&y!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y-m)]==a1){
a=1;
}
if(data[(x-m)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x-m,y-m);}
break;
}
if(data[(x-m)*8+(y-m)]==0){
break;
}
if(x-m==0||y-m==0){
break;
}
m++;

}
}

if(y!=0){
m=1;
a=0;
while(1){
if(data[(x)*8+(y-m)]==a1){
a=1;
}
if(data[(x)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x,y-m);}
break;
}
if(data[(x)*8+(y-m)]==0){
break;
}
if(y-m==0){
break;
}
m++;

}
}

if(x!=7&&y!=0){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y-m)]==a1){
a=1;
}
if(data[(x+m)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x+m,y-m);}
break;
}
if(data[(x+m)*8+(y-m)]==0){
break;
}
if(x+m==7||y-m==0){
break;
}
m++;

}
}

if(x!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y)]==a1){
a=1;
}
if(data[(x+m)*8+(y)]==a2){
if(a==1){lineChange(x,y,x+m,y);}
break;
}
if(data[(x+m)*8+(y)]==0){
break;
}
if(x+m==7){
break;
}
m++;

}
}

if(x!=7&&y!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y+m)]==a1){
a=1;
}
if(data[(x+m)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x+m,y+m);}
break;
}
if(data[(x+m)*8+(y+m)]==0){
break;
}
if(x+m==7||y+m==7){
break;
}
m++;

}
}

if(y!=7){
m=1;
a=0;
while(1){
if(data[(x)*8+(y+m)]==a1){
a=1;
}
if(data[(x)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x,y+m);}
break;
}
if(data[(x)*8+(y+m)]==0){
break;
}
if(y+m==7){
break;
}
m++;

}
}
if(x!=0&&y!=7){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y+m)]==a1){
a=1;
}
if(data[(x-m)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x-m,y+m);}
break;
}
if(data[(x-m)*8+(y+m)]==0){
break;
}
if(x-m==0||y+m==7){
break;
}
m++;

}
}
if(x!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y)]==a1){
a=1;
}
if(data[(x-m)*8+(y)]==a2){
if(a==1){lineChange(x,y,x-m,y);}
break;
}
if(data[(x-m)*8+(y)]==0){
break;
}
if(x-m==0){
break;
}
m++;

}
}
}

function lineChange(x1,y1,x2,y2){
if(turn==0){
a=1;
}else{
a=2;
}
mx=0
my=0
while(1){
data[(x1+mx)*8+(y1+my)]=a;
if(x2==x1+mx&&y2==y1+my){break;}
if(x2-x1>0){mx++;}
if(x2-x1<0){mx--;}
if(y2-y1>0){my++;}
if(y2-y1<0){my--;}
}
}

function numberOfPutable(){
amount=0;
for(ix=0;ix<8;ix++){
for(iy=0;iy<8;iy++){
if(putable(ix,iy)==1){amount++;}
}
}
//send(channel_g,""+amount);
return(amount);
}

function turnChange(){
if(turn==0){
turn=1;
}else{
turn=0;
}
}
matta_ok=0;
function copyArr12(){
matta_ok=1;
for(i=0;i<64;i++){
data2[i]=data[i];
}
}
function copyArr21(){
for(i=0;i<64;i++){
data[i]=data2[i];
}
}

2009年2月7日土曜日

ケンタッキーフライドチキンについて

時々ケンタッキーを食べる機会が自分にはあります。

個人的にケンタッキーを目の前にするとテンション上がります。


だって、おいしいじゃないですか。^^


ただ、鳥をミンチとかにせずそのままカットして揚げているので
それぞれ肉に、ばらつきあったりしますよね。


何でも ウィング サイ キール ドラム リブ の五種類があるそうです。


やっぱり一番大きな肉が食べたいですよね。


なんとケンタッキーでは部位が選択できる かも なのです。

(部位を指定して買えるか。 に対して)「ご来店時に、ご相談ください。
少数であれば、その時の商品の状況によって、お受けできる場合もありますので、
ご来店の際にご相談ください。
なお、必ずご希望にそえるということではございませんのでご了承願います。
」

だそうです。

リブ 10個!! とか無理そうですけど 常識の範囲内であれば 偏った注文もできそうです。

勝手な推測ですが、"オリジナルチキン" 5ピース を頼めば、 上で言った 
五種類全部 "かぶり"なしで買えるんでしょうかね?

個人的にドラムとリブは苦手なので、 、"オリジナルチキン" 4ピース ドラムとリブはなしで と言う注文がしたいですね。

食べ物の話をしていると、おなかが減ってきました。。。 そんなこんなで I love KFC.

2009年2月1日日曜日

文字列を延々と歪ませる  ピクセル間 補正 有り

文字列を延々と歪ませる ピクセル間 補正 有り。
この前のは変形するたびに、汚くなっていったので ピクセル間で補正してみました。



#module
#uselib "gdi32.dll"
#func GetTextExtentPoint32 "GetTextExtentPoint32A" int,int,int,int
#deffunc messize var tBuf,array tSize
notesel tBuf
repeat notemax
noteget tBuf2,cnt
tBuf3=tBuf2
txtLen=strlen(tBuf3)
dim tSize,2
GetTextExtentPoint32 hdc,varptr(tBuf3),txtLen,varptr(tSize)
if cnt=0:x=tSize(0)
if x<tSize(0):x=tSize(0)
loop
tSize(0)=x
tSize(1)=tSize(1)*notemax
return
#global

#include "hspmath.as"
#define ctype stogx(%1) (( (%1)-offsetx )*(bai)+ginfo_winx/2)
#define ctype stogy(%1) (((%1)-offsety )*(-1.0)*(bai)+ginfo_winy/2)
#define e 2.718281828459045235360287471352
#define pi 3.1415926535897932384626433832795028841971
bai=1.0 //表示倍率
offsetx=0 //表示中心 X
offsety=0 //表示中心 Y
randomize
title "文字列を延々と歪ませる ピクセル間補正有り"
onexit *exit
goto *sake
*exit
end
*sake

screen 3

skx=-320.0
sky=-240.0
smx=320.0
smy=240.0

dialog ".bmp;*.jpg",16,""
if stat!=0{
picload refstr,1



color 255,128,128
}else{color 128,128,128}
repeat
x+=30
line x,-1,x,ginfo_winy
if x>ginfo_winx:break
loop

repeat
y+=30
line -1,y,ginfo_winx,y
if y>ginfo_winy:break
loop


font "",50

buf=""

repeat 8
f=rnd(2)
buf+=strf("%c",f*(rnd(26)+65)+(f!1)*(rnd(26)+97))
loop
messize Buf,textSize

pos stogx(-textSize(0)/2)-1,stogy(-textSize(1)/2)-1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)-1,stogy(-textSize(1)/2)+1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)+1,stogy(-textSize(1)/2)-1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)+1,stogy(-textSize(1)/2)+1
color 255,255,255
mes buf

pos stogx(-textSize(0)/2),stogy(-textSize(1)/2)
color 0,0,0
mes buf

gsel 0,1


repeat

x_=skx
y_=sky
xx=0
yy=0
ox=1.0*rnd(300)-150
sx=1.0*rnd(60)+5
bx=1.0*rnd(100)+5
rad=1.0*rnd(360)*pi/180

repeat
x__=x_*cos(rad)-y_*sin(rad)
y__=x_*sin(rad)+y_*cos(rad)
x=x__*cos(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*sin(rad)
y=-x__*sin(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*cos(rad)

gsel 3
pget stogx(x),stogy(y)
r1=ginfo_r
g1=ginfo_g
b1=ginfo_b
pget stogx(x-1),stogy(y)
r2=ginfo_r
g2=ginfo_g
b2=ginfo_b
pget stogx(x),stogy(y-1)
r3=ginfo_r
g3=ginfo_g
b3=ginfo_b
pget stogx(x-1),stogy(y-1)
r4=ginfo_r
g4=ginfo_g
b4=ginfo_b

xt=1*x
if x>0:xt+=1
yt=1*y
if y>0:yt+=1
xx=1.0*xt-x
yy=1.0*yt-y

r=((1.0-xx)*(1.0-yy))*r1+((xx)*(1.0-yy))*r2+((1.0-xx)*yy)*r3+(xx*yy)*r4
g=((1.0-xx)*(1.0-yy))*g1+((xx)*(1.0-yy))*g2+((1.0-xx)*yy)*g3+(xx*yy)*g4
b=((1.0-xx)*(1.0-yy))*b1+((xx)*(1.0-yy))*b2+((1.0-xx)*yy)*b3+(xx*yy)*b4


gsel 0
color r,g,b
pset stogx(x_),stogy(y_)

x_+
if x_>=smx:x_=skx:y_+:if y_>=smy:y_=sky:break

wait 0
loop
gsel 3
gmode 0,640,480,0
pos 0,0
gcopy 0,0,0,640,480

loop