0. 이전에 한거 다 필요없고 완성본.
#include<stdio.h>
#include<Windows.h>
//system("cls"); -> 비쥬얼 스튜디오에서 화면 깨끗하게 하는 법.
// ㄴ#include<windows.h> 선언후 사용.
// #include<conio.h>의 clrscr();은 비쥬얼 C++에서는 안써진다더라. 왜그럴까 ㅠㅜ
int scale;// 전역 변수를 써야 한다니 ㅜㅠ
int i,j; //i는 행, j는 열.
int k,z; //각각 그냥 변수.
void frame1() // 성공
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i<scale && j==scale){printf("%2.d\n",1+k++);}
if(i==scale && j!=scale&&j!=2*scale-1){printf("%2.d",2*scale+z++);}
if(i==scale && j==2*scale-1){printf("%2.d\n",2*scale+z++);} // 우왕 ()안에서도 연산이 되네?
if(i==scale && j==scale){printf("%2.d",1+k++);}
if(i>scale && j==scale){printf("%2.d\n",1+k++);}
if(j<scale && i!=scale){printf(" ");}
}
}
Sleep(250);
system("cls");
}
void frame2()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i==j && i<scale){printf("%2.d",2*scale+z++);}
if(i==j && i>scale){printf("%2.d\n",2*scale+z++);}
if((i+j)==2*scale && i<=scale){printf("%2.d\n",1+k++);}
if((i+j)==2*scale && i>scale){printf("%2.d",1+k++);}
if(i>j || i+j<2*scale){if(i!=j && i+j!=2*scale){printf(" ");}}//잉여칸
}
}
Sleep(250);
system("cls");
}
void frame3()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i<scale && j==scale){printf("%2.d\n",2*scale+k++);}
if(i==scale && j!=2*scale-1){printf("%2.d",2*scale-1-(z++));}
if(i==scale && j==2*scale-1){printf("%2.d\n",2*scale-1-(z++));}
if(i>scale && j==scale){printf("%2.d\n",2*scale+k++);}
if(j<scale && i!=scale){printf(" ");}
}
}
Sleep(250);
system("cls");
}
void frame4()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i==j && i<scale){printf("%2.d",2*scale-1-(z++));}
if(i==j && i>=scale){printf("%2.d\n",2*scale-1-(z++));}
if((i+j)==2*scale && i<scale){printf("%2.d\n",2*scale+k++);}
if((i+j)==2*scale && i>scale){printf("%2.d",2*scale+-1+k++);}
if(i>j || i+j<2*scale){if(i!=j && i+j!=2*scale){printf(" ");}}//잉여칸
}
}
Sleep(250);
system("cls");
}
void frame5()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i<scale && j==scale){printf("%2.d\n",2*scale-1-(z++));}
if(i==scale && j!=scale&&j!=2*scale-1){printf("%2.d",4*scale-3-(k++));}
if(i==scale && j==2*scale-1){printf("%2.d\n",4*scale-3-(k++));}
if(i==scale && j==scale){printf("%2.d",2*scale-1-(z++));}
if(i>scale && j==scale){printf("%2.d\n",2*scale-1-(z++));}
if(j<scale && i!=scale){printf(" ");}
}
}
Sleep(250);
system("cls");
}
void frame6()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i==j && i<scale){printf("%2.d",4*scale-3-(z++));}
if(i==j && i>scale){printf("%2.d\n",4*scale-3-(z++));}
if((i+j)==2*scale && i<=scale){printf("%2.d\n",2*scale-1-(k++));}
if((i+j)==2*scale && i>scale){printf("%2.d",2*scale-1-(k++));}
if(i>j || i+j<2*scale){if(i!=j && i+j!=2*scale){printf(" ");}}//잉여칸
}
}
Sleep(250);
system("cls");
}
void frame7()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i<scale && j==scale){printf("%2.d\n",4*scale-3-(z++));}
if(i==scale && j!=2*scale-1){printf("%2.d",1+k++);}
if(i==scale && j==2*scale-1){printf("%2.d\n",1+k++);}
if(i>scale && j==scale){printf("%2.d\n",4*scale-3-(z++));}
if(j<scale && i!=scale){printf(" ");}
}
}
Sleep(250);
system("cls");
}
void frame8()
{
z=0;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
if(i==j && i<scale){printf("%2.d",1+k++);}
if(i==j && i>=scale){printf("%2.d\n",1+k++);}
if((i+j)==2*scale && i<scale){printf("%2.d\n",4*scale-3-(z++));}
if((i+j)==2*scale && i>scale){printf("%2.d",4*scale-3-(z++));}
if(i>j || i+j<2*scale){if(i!=j && i+j!=2*scale){printf(" ");}}//잉여칸
}
}
Sleep(250);
system("cls");
}
/*
{
z=1;
k=0;
for(i=1;i<=2*scale-1;i++)
{
for(j=1;j<=2*scale-1;j++)
{
}
}
Sleep(250);
system("cls");
}
이 구조가 반복 되는데 이걸 함수로 선언 할 순 없을까?
안에 어떤게 얼마나 들어갈지 모르겠어서 파라미터를
뭘로 해야 할지 감이 안오는데 -_-;
*/
int main()
{
int spin =0;
A:
printf("사용하실 스케일을 입력하세요.\n");
Sleep(100);
printf("1 => 1\n2 => 5\n3 => 9\nn => 4n-3\n");
printf("20보다 크게 입력하면 모양이 깨집니다.주의!\n");
scanf_s("%d",&scale);
if(scale>20)
{
printf("그래서 막아놈\n");
goto A;
}
while(1)
{
int f;
spin++;
for(f=0;f<8;f++)
{
if(f%8==0)// f가 짝수 일때.
{
printf("회전수 : %d\n",spin);
frame1();
}
else if(f%8==1)
{
printf("회전수 : %d\n",spin);
frame2();
}
else if(f%8==2)
{
printf("회전수 : %d\n",spin);
frame3();
}
else if(f%8==3)
{
printf("회전수 : %d\n",spin);
frame4();
}
else if(f%8==4)
{
printf("회전수 : %d\n",spin);
frame5();
}
else if(f%8==5)
{
printf("회전수 : %d\n",spin);
frame6();
}
else if(f%8==6)
{
printf("회전수 : %d\n",spin);
frame7();
}
else
{
printf("회전수 : %d\n",spin);
frame8();
}
}
}
return 0;
}
이거 완전 길지만 배열도,행열도 없이 오로지 수열만으로 십자가돌리기를 성공함. 작업시간 6시간 이상인듯 ㅜㅠ (지금시각 새벽 3시45분, 분명 10시 30분쯤에 앉았었고, 그이전에도 짜둔게 있었는데 이정도.. ㅜㅠ)
입력받은 수에따라 크기가 변합니당
크기가 변해도 모양은 유지합니당
스핀수가 체크됩니다.
끄읕