VC+6.0 C 언어 러시아 블록 상세 튜 토리 얼 실현

오늘 은 제 가 전에 쓴 큰 숙제 를 공유 하고 어떻게 실현 하 는 지 가르쳐 드 리 겠 습 니 다.앞의 튜 토리 얼 을 보고 도 스스로 쓸 수 있 기 를 바 랍 니 다.
1.먼저 graphics.h 의 헤더 파일 을 다운로드 하여 그림 을 그 려 야 합 니 다.
2.창 초기 화:initgraph(x,y);이것 은 먼저 창 을 만 드 는 함수 입 니 다.왼쪽 상단(0,0),오른쪽으로 x 축,아래로 y 축 입 니 다.그 중에서 x 는 긴 x 단 위 를 표시 하고 y 는 너비 y 단 위 를 표시 합 니 다.
3.그림 창 닫 기:closegraph();끝 날 때 닫 는 데 쓰 는 거 야.
4.임의의 키 를 눌 러 계속:getch();이것 은 getchar()와 함께 합 니 다.거의 다 르 지 않 습 니 다.실행 이 끝나 면 닫 히 는 것 을 방지 하기 위해 서 그의 머리 파일 은 conio.h 입 니 다.
5.선 그리 기:line(x1,y1,x2,y2);창 에(x1,y1)과(x2,y2)두 개의 점 으로 선 을 그립 니 다.
6.직사각형 그리 기:rectangle(x1,y1,x2,y2);(x1,y1)과(x2,y2)을 대각 으로 직사각형 을 그립 니 다.
7.원 그리 기:원(x,y,r);(x,y)를 원점 으로 하고 r 를 반경 으로 원 을 그린다.
8.색상:setcolor(x);색상 을 설정 하 는 데 사용 되 는 것 입 니 다.그 중에서 x 는 당신 이 설정 하고 자 하 는 색상 입 니 다.이 16 가 지 를 채 울 수 있 습 니 다.검은색 BLACK,파란색 BLUE,녹색 GREEN,파란색 CYAN,빨간색 RED,보라색 MAGENTA,갈색 브라운,옅 은 회색 LIGHT GRAY,짙 은 회색 DARKGRAY,밝 은 파란색 LIGHTBLUE,밝 은 녹색 LIGHT GREEN,밝 은 파란색 LIGHT YAN,밝 은 빨간색 LIGHT TRED,밝 은 보라색 LIGHT MAGENTA,노란색 YELLOW,흰색 WHITE;물론 빛 의 삼원 색 에 따라 자신 이 좋아 하 는 색 을 조절 할 수 있 습 니 다.방법 은 setcolor(RGB(x,y,z)입 니 다.그 중에서 RGB 는 각각 빨간색 과 파란색 을 대표 하고 해당 하 는 x,y,z 는 당신 이 선택 한 이 색깔 의 얼마 이 며 범 위 는[0,255]입 니 다.
위의 이것들 에 근거 하여 많은 도형 을 그 릴 수 있다.예 를 들 면:

# include <graphics.h> 
# include <conio.h> 
 void main() 
 { 
 initgraph(640,480); 
 setcolor(BROWN); 
 line(200,200,300,130); 
 line(400,200,300,130); 
 rectangle(200,200,400,380); 
 setcolor(RGB(100,150,200)); 
 circle(255,260,20); 
 circle(345,260,20); 
 rectangle(280,300,310,360); 
 getch(); 
 closegraph(); 
 } 
그리고 이것 은 원 을 그리고 원심 은(320,240),반경 r=200,각도 의 공식 에 따라 원 을 그립 니 다.

# include <graphics.h> 
# include <conio.h> 
# include <math.h> 
# define PI 3.1415926 
 void main() 
 { 
 initgraph(640, 480); 
 int x,y,r=200,c; 
 double a; 
 for(a=0; a<PI*2; a+=0.0001) 
 { 
  x=(int)(r*cos(a)+320+0.5); 
  y=(int)(r*sin(a)+240+0.5); 
  c=(int)(a*255/(2*PI)); 
  setcolor(RGB(c,200-c/2,100+c/2)); 
  line(320,240,x,y); 
 } 
 getch(); 
 closegraph(); 
 } 
9.정지:Sleep(x);정지 x/1000 초.
Sleep()가 생 겼 습 니 다.함수,선 을 움 직 일 수 있 습 니 다.원 리 는 먼저 선 을 그 은 다음 에 검은색 선 을 그 어 원래 의 선 을 덮 은 다음 에 선 을 그 리 는 것 입 니 다.이렇게 끊임없이 선 을 그 으 면 됩 니 다.

# include <graphics.h> 
# include <conio.h> 
 void main() 
 { 
 int i,y; 
 initgraph(640,480); 
 for(y=0;y<480-2;y++) 
 { 
  setcolor(RGB(y,125,y/2%256)); 
  line(0,y,639,y); 
  line(0,y+2,639,y+2); 
  Sleep(10); 
  setcolor(BLACK); 
  line(0,y,639,y); 
 } 
 getch(); 
 closegraph(); 
 } 
10.난수 발생 기:srand();사용 방법:srand(time(NULL);사용 할 때 헤더 파일 time.h 가 있어 야 합 니 다.
11.랜 덤 함수:rand();무 작위 로 숫자 를 만 듭 니 다.헤더 파일 은 stdlib.h 입 니 다.예 를 들 어:

# include <stdio.h> 
# include <time.h> 
# include <graphics.h> 
 void main() 
 { 
 int t=10; 
 while(t--) 
 { 
  srand(time(NULL)); 
  printf("%d
",rand()); Sleep(1000); } }
12.키보드 의 입력 여 부 를 판단 합 니 다:kbhit();있 으 면 1 로 돌아 가 고,그렇지 않 으 면 0 으로 돌아간다.
13.방향 키:건장 한 ASCII 값 을 우 리 는 모 릅 니 다.일반적인 getchar();입력 할 수도 없 지만 getch();실행 프로그램 을 통 해 방향 이 비교적 특수 하 다 는 것 을 알 수 있다.그것 이 바로 위 224+72,아래 224+80,왼쪽 224+75,오른쪽 224+77 이다.즉,그들 은 두 글자 로 구성 되 어 있 기 때문에 상하 좌우 로 판단 할 때 if(kbhit()를 먼저 판단 한 다음 에 if(getch()==224)를 판단 한다.그렇다면 if(getch()==72)를 판단 한다.그래 야 상하 좌우 가 같다.

# include <stdio.h> 
# include <graphics.h> 
# include <conio.h> 
 void main() 
 { 
 int key; 
 while(1) 
 { 
  if(kbhit()) 
  { 
  key=getch(); 
  if(key==224) 
   key=getch(); 
  printf("%d",key); 
  } 
  else 
  printf("*"); 
  Sleep(500); 
 } 
 } 
14.출력:outtextxy(x,y,s);좌표 가(x,y)인 곳 에 문자열 s 를 출력 합 니 다.
15.숫자 변환 문자열:sprintf(s,"%d",a);숫자 a 를 문자열 s 로 바 꾸 고 헤더 파일 은 stdio.h 입 니 다.
16.글꼴 설정:setfont(x,y,"글꼴");그 중에서 x 는 출력 할 글자 의 크기 를 나타 낸다.y 는 모양 을 바 꾸 는데 보통 0 으로 설정 하고'글꼴'은 출력 하고 자 하 는 글꼴 이다.예 를 들 어 setfont(40,0,'해서 체')이다.

# include <graphics.h> 
# include <conio.h> 
# include <stdio.h> 
 void main() 
 { 
 char s[10]; 
 initgraph(640,480); 
 setfont(42,0,"  "); 
 outtextxy(200,200,"     "); 
 sprintf(s,"%d",2015); 
 outtextxy(250,250,s); 
 getch(); 
 closegraph(); 
 } 
위 에서 배 웠 다 면 러시아 블록 을 만 들 수 있 을 뻔 했 습 니 다.다음은 제 가 쓴 코드 를 공유 하 겠 습 니 다.

# include <stdio.h> 
# include <time.h> 
# include <conio.h> 
# include <graphics.h> 
 int a,visit[30][15],Color[30][15],minX=30,minY=30,maxX=310,maxY=610,speed=500,score=0,rank=0; 
 int color[]={GREEN,CYAN,MAGENTA,BROWN,LIGHTGRAY,LIGHTBLUE,LIGHTGREEN,LIGHTRED,YELLOW}; 
 int block[36][5][5]= 
 { 
 {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0}, 
 {0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0}, 
 {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0}, 
 {0,1,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0,1,1,0,0}, 
 {0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,1,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}, 
 {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0} 
 }; 
 void Interface();//      
 void nextblock();//        
 void newblock();//           
 void move(int x,int y,int A);//     
 int couldmove(int x0,int y0,int A,char dir,int next);//       
 int couldrotate(int x0,int y0,int A,int next);//       
 void mark(int x0,int y0,int A,int next);//           
 void full();//           
 void down(int x);//               
 int gameover();//         
 int main() 
 { 
 int i,j; 
 Interface(); 
 nextblock(); 
 Sleep(500); 
 memset(visit,0,sizeof(visit)); 
 while(1) 
 { 
 newblock(); 
 full(); 
 if(gameover()) 
  break; 
 } 
 getch(); 
 closegraph(); 
 return 0; 
 } 
 void Interface() 
 { 
 int i,j; 
 char str[10]; 
 initgraph(550, 660); 
 HWND hwnd = GetHWnd(); 
 SetWindowText(hwnd, "NEW          :   "); 
 Sleep(2000); 
 setfont(40,0,"  "); 
 setcolor(RED); 
 outtextxy(145,200,"NEW"); 
 setfont(40,0,"  "); 
 for(i=0;i<=255;i++) 
  for(j=0;j<=255;j++) 
  { 
  setcolor(RGB((i+j+128)%255,i,j)); 
  outtextxy(205,200,"     !"); 
  } 
  Sleep(2000); 
  setcolor(YELLOW); 
  setfont(22,0,"  "); 
  outtextxy(310,300,"←_←"); 
  setfont(22,0,"  "); 
  outtextxy(180,300,"      "); 
  setcolor(LIGHTMAGENTA); 
  Sleep(2500); 
  outtextxy(175,300,"         !"); 
  getch(); 
  cleardevice(); 
  setcolor(WHITE); 
  rectangle(29,29,334,633); 
  rectangle(28,28,335,634); 
  rectangle(370,50,515,195); 
  setfont(24,0, "  "); 
  setcolor(LIGHTGRAY); 
  outtextxy(405,215,"   :"); 
  setcolor(RED); 
  outtextxy(405,280,"  :"); 
  sprintf(str,"%d",score); 
  outtextxy(415,310,str); 
  outtextxy(405,375,"  :"); 
  sprintf(str,"%d",rank); 
  outtextxy(425,405,str); 
  setfont(22,0, "  "); 
  setcolor(LIGHTBLUE); 
  outtextxy(390,475,"    :"); 
  outtextxy(390,500,"↑:   "); 
  outtextxy(390,525,"↓:   "); 
  outtextxy(390,550,"←:   "); 
  outtextxy(390,575,"→:   "); 
  outtextxy(390,600,"  :   "); 
 } 
 void nextblock() 
 { 
 int i,j,x=391,y=71; 
 setfont(23,0,"  "); 
 setcolor(BLACK); 
 for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
  outtextxy(x+20*j,y+20*i,"■"); 
  srand(time(NULL)); 
  a=rand()%9; 
  setcolor(color[a]); 
  for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
   if(block[4*a][i][j]==1) 
   outtextxy(x+20*j,y+20*i,"■"); 
 } 
 void newblock() 
 { 
 int i,j,x=130,y=30,A=a; 
 if(A==0||A==1||A==6) 
  y-=60; 
 else if(A==2||A==3||A==5||A==7||A==8) 
  y-=40; 
 else 
  y-=80; 
 setfont(23,0,"  "); 
 setcolor(color[A]); 
 for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
  if(block[4*A][i][j]==1&&y+20*i>=30) 
   outtextxy(x+20*j,y+20*i,"■"); 
  Sleep(100); 
  nextblock(); 
  move(x,y,A); 
 } 
 void move(int x,int y,int A) 
 { 
 int i,j,f,k=0,next=0,Speed=speed,key,nex; 
 while(1) 
 { 
  f=couldmove(x,y+k,A,'x',next); 
  if(f==0) 
  { 
  mark(x,y+k,A,next); 
  break; 
  } 
  if(kbhit()) 
  { 
  key=getch(); 
  if(key==32) 
   getch(); 
  } 
  setcolor(BLACK); 
  for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
   if(block[4*A+next][i][j]==1&&y+20*i+k>=30) 
   outtextxy(x+20*j,y+20*i+k,"■"); 
   if(kbhit()) 
   { 
   key=getch(); 
   if(key==72) 
   { 
    nex=(next+1)%4; 
    if(couldrotate(x,y+k,A,nex)) 
    next=nex; 
   } 
   else if(key==80) 
    Speed=50; 
   else if(key==75&&couldmove(x,y+k+20,A,'z',next)) 
    x-=20; 
   else if(key==77&&couldmove(x,y+k+20,A,'y',next)) 
    x+=20; 
   } 
   setcolor(color[A]); 
   for(i=0;i<5;i++) 
   for(j=0;j<5;j++) 
    if(block[4*A+next][i][j]==1&&y+20*i+k+20>=30) 
    outtextxy(x+20*j,y+20*i+k+20,"■"); 
    Sleep(Speed); 
    k+=20; 
  } 
 } 
 int couldmove(int x0,int y0,int A,char dir,int next) 
 { 
 int i,j,x,y,f=1; 
 x=(y0-minY)/20; 
 y=(x0-minX)/20; 
 if(dir=='x') 
 { 
  for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
  if(block[4*A+next][i][j]==1&&(x+i+1==30||(x+i+1>=0&&x+i+1<30&&y+j>=0&&y+j<15&&visit[x+i+1][y+j]==1))) 
   f=0; 
 } 
 else if(dir=='z') 
 { 
  for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
   if(block[4*A+next][i][j]==1&&(y+j==0||(x+i>=0&&x+i<30&&y+j-1>=0&&y+j-1<15&&visit[x+i][y+j-1]==1))) 
   f=0; 
 } 
 else if(dir=='y') 
 { 
  for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
   if(block[4*A+next][i][j]==1&&(y+j+1==15||(x+i>=0&&x+i<30&&y+j+1>=0&&y+j+1<15&&visit[x+i][y+j+1]==1))) 
   f=0; 
 } 
 return f; 
 } 
 int couldrotate(int x0,int y0,int A,int next) 
 { 
 int i,j,x,y,f=1; 
 x=(y0-minY)/20; 
 y=(x0-minX)/20; 
 if(!couldmove(x0,y0,A,'x',next)) 
  f=0; 
 for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
  if(block[4*A+next][i][j]==1&&(y+j==-1||y+j==15||(x+i>=0&&x+i<30&&y+j>=0&&y+j<15&&visit[x+i][y+j]==1))) 
   f=0; 
  return f; 
 } 
 void mark(int x0,int y0,int A,int next) 
 { 
 int i,j,x,y; 
 x=(y0-minY)/20; 
 y=(x0-minX)/20; 
 for(i=0;i<5;i++) 
  for(j=0;j<5;j++) 
  if(block[4*A+next][i][j]==1) 
  { 
   visit[x+i][y+j]=1; 
   Color[x+i][y+j]=color[A]; 
  } 
 } 
 void full() 
 { 
 int i,j,k=0; 
 char str[10]; 
 for(i=29;i>=0;i--) 
 { 
  for(j=0;j<15;j++) 
  if(visit[i][j]==0) 
   break; 
  if(j==15) 
  { 
   k++; 
   down(i); 
   i++; 
  } 
 } 
 setcolor(RED); 
 score+=10*k; 
 sprintf(str,"%d",score); 
 outtextxy(415,310,str); 
 rank=(score/50); 
 sprintf(str,"%d",rank); 
 outtextxy(425,405,str); 
 speed=500-100*rank; 
 if(speed==0) 
  speed=100; 
 if(score>=300) 
  speed=75; 
 } 
 void down(int x) 
 { 
 int i,j; 
 for(i=x;i>0;i--) 
  for(j=0;j<15;j++) 
  if(visit[i-1][j]==1) 
  { 
   visit[i][j]=visit[i-1][j]; 
   Color[i][j]=Color[i-1][j]; 
   setcolor(Color[i-1][j]); 
   outtextxy(minX+20*j,minY+20*i,"■"); 
  } 
  else 
  { 
   visit[i][j]=visit[i-1][j]; 
   setcolor(BLACK); 
   outtextxy(minX+20*j,minY+20*i,"■"); 
  } 
  setcolor(BLACK); 
  for(j=0;j<15;j++) 
  { 
   visit[0][j]=0; 
   outtextxy(minX+20*j,minY,"■"); 
  } 
 } 
 int gameover() 
 { 
 int i,j; 
 for(i=0;i<15;i++) 
  if(visit[0][i]==1) 
  { 
  for(i=0;i<=7;i++) 
  { 
   setcolor(RGB(35*i,255-35*i,255)); 
   for(j=i;j<30-i;j++,Sleep(20)) 
   outtextxy(30+20*i,30+20*j,"■"); 
   for(j=i;j<15-i;j++,Sleep(20)) 
   outtextxy(30+20*j,30+20*(29-i),"■"); 
   for(j=30-1-i;j>=i;j--,Sleep(20)) 
   outtextxy(30+20*(14-i),30+20*j,"■"); 
   for(j=15-1-i;j>=i;j--,Sleep(20)) 
   outtextxy(30+20*j,30+20*i,"■"); 
  } 
  setcolor(WHITE); 
  setfont(45,0,"  "); 
  outtextxy(75,300,"GAME OVER!"); 
  Sleep(5000); 
  return 1; 
  } 
  return 0; 
 } 
제 가 설정 한 줄 은 15 개의 작은 칸 을 넣 을 수 있 고 모두 30 줄 을 넣 을 수 있 습 니 다.2 차원 배열 visit[30][15]는 특정한 위치 에 사각형 이 있 는 지 판단 할 수 있 습 니 다.예 를 들 어 visit[29][5]=1 은 30 번 째 줄 의 6 번 째 사각형 의 위치 에 사각형 이 있다 는 것 을 나타 내 고 0 은 사각형 이 없다 는 것 을 나타 내 며 Color[30][15]는 특정한 위치 에 있 는 사각형 의 색 을 기록 하 는 데 사 용 됩 니 다.minX=30,minY=30 은 왼쪽 상단 의 사각형,즉 첫 번 째 줄 의 첫 번 째 열 에 대응 하 는 사각형 이 인터페이스의 좌표,maxX,maxY 와 같다 는 것 을 나타 낸다.speed 는 사각형 의 낙하 속 도 를 나타 낸다.처음에 500 으로 초기 화 되 었 고 0.5s 가 한 줄 로 떨 어 지지 않 았 다.score 는 점 수 를 기록 하고 한 줄 에 10 점 을 더 했다.rank 은 등급 을 표시 했다.50 점 당 등급+1 이 고 속도 가 100 으로 떨 어 졌 다.속도 가 100 으로 떨 어 졌 을 때 변 하지 않 는 다.점수 가 300 속 도 를 초과 해 야 75 로 줄 어 들 고 앞으로 더 이상 줄 어 들 지 않 을 것 이다.
저 는 9 가지 사각형 을 디자인 했 습 니 다.각 사각형 은 4 가지 형태 가 있 고 시계 방향 으로 90°회전 할 때마다 하나의 형태 가 있 기 때문에 모두 36 개의 사각형 입 니 다.각 사각형 은 5*5 의 2 차원 배열 로 36 가지 가 36 개의 2 차원 배열 이 라 고 표시 하기 때문에 Block[36][5][5]로 블록[k][5][5],(k<36&k%4==0)은 각 사각형 의 초기 형 태 를 나타 낸다.k+1,+2,+3 은 각각 k 가지 사각형 이 90°,180°,270°이후 의 형 태 를 선택한다.예 를 들 어 Block[1][5][5]는 첫 번 째 사각형 이 90°회전 하 는 사각형 을 보존 하고 있 는데 그 중에서 Block[1][i][j]=1 은 이 사각형 의 i+1 줄 을 나타 내 고 j+1 열 은 작은 사각형 이 있 으 며=0 은 없 기 때문에 나의 Block[36][5]는 36 줄 이 고 한 줄 은 25 개의 수열 로 사각형 을 나타 낸다.1 차원 배열 color[]는 9 가지 사각형 의 색 을 차례대로 나타 낸다.
효과 도 첨부:



이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기