slide.cpp update

cat slide5.cpp
#include
#include
#include
#include
#include
#include
#include
#include "cv.h"
#include "highgui.h"

FILE *fp;
cv::Mat img_1,img_2,img_3;
uchar f2[7][7],f3[7][7];
int stk_p,stk[6],typ[6],t;
char filename[255];
int head[]={0x0205,7,7,3,4,6,0xa,0x2710,0x7d0};
int direct[6][16]={
{0,-2,0,0,0,0,0,2,-1,0,0,1,0,0,1,1}, //T2
{0,-2,0,0,0,0,0,2,-1,0,0,1,0,0,1,1}, //T2
{0,-1,1,0,0,0,1,1,-2,0,0,0,0,0,2,0}, //Y2
{0,-1,2,0,0,0,2,1,-3,0,0,0,0,0,3,0}, //Y3
{0,-3,0,0,0,0,0,3,-1,0,0,2,0,0,1,2}, //T3
{0,-1,0,0,0,0,0,1,-1,0,0,0,0,0,1,0}, //D1
};
int patt[6][4][6]={
{{1,2,0,0,0,0},{0,1,2,0,0,0},{1,0,2,0,0,0},{0,1,0,2,0,0}},//T2
{{1,2,0,0,0,0},{0,1,2,0,0,0},{1,0,2,0,0,0},{0,1,0,2,0,0}},//T2
{{1,2,0,0,0,0},{0,0,1,2,0,0},{1,2,0,0,0,0},{0,1,2,0,0,0}},//Y2
{{1,2,3,0,0,0},{0,0,0,1,2,3},{1,2,3,0,0,0},{0,1,2,3,0,0}},//Y3
{{1,2,3,0,0,0},{0,1,2,3,0,0},{1,0,2,0,3,0},{0,1,0,2,0,3}},//T3
{{1,0,0,0,0,0},{0,1,0,0,0,0},{1,0,0,0,0,0},{0,1,0,0,0,0}},//D2
};
int color[6]={16,1,2,3,4,5};
int dire2[6]={1,1,2,2,1,3};

void putint(int p){for(int j=0;j<4;j++){fputc(p,fp);p>>=8;}}

void r02(int i,int j){
int c[6];
f2[i][j]='A';
for(int k=0;k<6;k++)c[k]=0;
for(int j1=-1;j1<=1;j1++){for(int i1=-1;i1<=1;i1++){
int x=i*140+123+i1*10,y=j*140+572+j1*10;
uchar b=img_1.data[img_1.step*y+x*3];
uchar g=img_1.data[img_1.step*y+x*3+1];
uchar r=img_1.data[img_1.step*y+x*3+2];
if(b>180&&g<100&&r<50)c[0]++;
if(b<90&&g<90&&r<90)c[1]++;
if(b<90&&b>50&&g>150&&r<130&&r>100)c[2]++;
if(b<230&&b>170&&g<230&&g>180&&r<90&&r>50)c[3]++;
if(b>200&&g>200&&r>200)c[4]++;
if(b<40&&g<150&&g>80&&r>160)c[5]++;
//printf("%d %d %d %d %03d %03d %03d\n",i,j,i1,j1,b,g,r);
}}
if(c[1]>7||c[2]>4)f2[i][j]='G';
else if(c[3]>2)f2[i][j]='M';
else if(c[4]>6)f2[i][j]='W';
else if(c[0]>0)f2[i][j]='B';
else if(c[5]>4)f2[i][j]='O';
else if(c[4]==0&&i==3)f2[i][j]='C';
}
void r01(){
for(int j=0;j<7;j++){for(int i=0;i<7;i++){
int x=i*140+123,y=j*140+572;
uchar b=img_1.data[img_1.step*y+x*3];
uchar g=img_1.data[img_1.step*y+x*3+1];
uchar r=img_1.data[img_1.step*y+x*3+2];
uchar b1=img_3.data[img_3.step*y+x*3];
uchar g1=img_3.data[img_3.step*y+x*3+1];
uchar r1=img_3.data[img_3.step*y+x*3+2];
if(b==b1&&g==g1&&r==r1){
f2[i][j]=' ';
}else{
r02(i,j);
}
}}
}
int r03(){
int f=0,sp=0;
for(int j=0;j<7;j++){for(int i=0;i<7;i++){
if(f2[i][j]==' ')sp++;
if(f==0&&f2[i][j]=='C'){f2[i][j+1]='C';f=1;}
if(f2[i][j]=='W'){if(i<5&&f2[i+1][j]=='O')f2[i][j]='O';else f2[i][j]='B';}
}}
return(sp);}
void r04(){
for(int l=0;l<10;l++)typ[l]=-1;
int k=1;stk_p=0;
for(int j=0;j<7;j++){for(int i=0;i<7;i++){
switch(f2[i][j]){
case '*':
break;
case 'C':
if(typ[0]==-1){typ[0]=k;stk[stk_p]=0;stk_p++;}
f3[i][j]=typ[0];f3[i][j+1]=typ[0]+1;
f2[i][j]=f2[i][j+1]='*';
t=j;
k+=2;
break;
case 'G':
if(typ[1]==-1){typ[1]=k;stk[stk_p]=1;stk_p++;}
f3[i][j]=typ[1];f3[i][j+1]=typ[1]+1;
f2[i][j]=f2[i][j+1]='*';
k+=2;
break;
case 'M':
if(typ[2]==-1){typ[2]=k;stk[stk_p]=2;stk_p++;}
f3[i][j]=typ[2];f3[i+1][j]=typ[2]+1;
f2[i][j]=f2[i+1][j]='*';
k+=2;
break;
case 'O':
if(typ[3]==-1){typ[3]=k;stk[stk_p]=3;stk_p++;}
f3[i][j]=typ[3];f3[i+1][j]=typ[3]+1;f3[i+2][j]=typ[3]+2;
f2[i][j]=f2[i+1][j]=f2[i+2][j]='*';
k+=3;
break;
case 'B':
if(typ[4]==-1){typ[4]=k;stk[stk_p]=4;stk_p++;}
f3[i][j]=typ[4];f3[i][j+1]=typ[4]+1;f3[i][j+2]=typ[4]+2;
f2[i][j]=f2[i][j+1]=f2[i][j+2]='*';
k+=3;
break;
case 'A':
if(typ[5]==-1){typ[5]=k;stk[stk_p]=5;stk_p++;}
f3[i][j]=typ[5];
f2[i][j]='*';
k++;
break;
default:
f3[i][j]=0;
break;
}
}}
}

void fileput(char *av1,int sp){
strcpy(filename,av1);
strcat(filename,".sli");
fp=fopen(filename,"wb");
if(fp==NULL)return;
head[4]=stk_p*4;
head[6]=sp;
for(int i=0;i<9;i++){putint(head[i]);}
for(int j=0;j<7;j++)for(int i=0;i<7;i++)fputc(f3[i][j],fp);
for(int j=0;j<7;j++)for(int i=0;i<7;i++){
if(i==3&&j==5)fputc(f3[i][t],fp);
else if(i==3&&j==6)fputc(f3[i][t+1],fp);
else fputc(-2,fp);}
for(int k=0;k

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント