U E D R , A S I H C RSS

고한종/십자가돌리기 (rev. 1.13)

고한종/십자가돌리기




본문

1. printf 노가다 버젼.
#include<stdio.h>
#include<Windows.h>
//system("cls");  -> 비쥬얼 스튜디오에서 화면 깨끗하게 하는 법.
// ㄴ#include<windows.h> 선언후 사용.
// #include<conio.h>의 clrscr();은 비쥬얼 C++에서는 안써진다더라. 왜그럴까 ㅠㅜ


int main()
{
	while(1)
	{
		printf("    1    \n    2    \n6 7 3 8 9\n    4    \n    5    \n");//1
		Sleep(250);
		system("cls"); 
		printf("6       1\n  7   2  \n    3    \n  4   8  \n5       9\n");//2
		Sleep(250);
		system("cls"); 
		printf("    6    \n    7    \n5 4 3 2 1\n    8    \n    9    \n");//3
		Sleep(250);
		system("cls"); 
		printf("5       6\n  4   7  \n    3    \n  8   2  \n9       1\n");//4
		Sleep(250);
		system("cls"); 
		
		printf("    5    \n    4    \n9 8 3 7 6\n    2    \n    1    \n");//5
		Sleep(250);
		system("cls"); 
		printf("9       5\n  8   4  \n    3    \n  2   7  \n1       6\n");//6
		Sleep(250);
		system("cls"); 
		printf("    9    \n    8    \n1 2 3 4 5\n    7    \n    6    \n");//7
		Sleep(250);
		system("cls"); 
		printf("1       9\n  2   8  \n    3    \n  7   4  \n6       5\n");//8
		Sleep(250);
		system("cls"); 

	}
	return 0;
}

2. 함수선언으로 노가다를 좀 줄인버전.
#include<stdio.h>
#include<Windows.h>
//system("cls");  -> 비쥬얼 스튜디오에서 화면 깨끗하게 하는 법.
// ㄴ#include<windows.h> 선언후 사용.
// #include<conio.h>의 clrscr();은 비쥬얼 C++에서는 안써진다더라. 왜그럴까 ㅠㅜ

void frame1(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9)
{

	printf("    %d    \n    %d    \n%d %d %d %d %d\n    %d    \n    %d    \n",n1,n2,n3,n4,n5,n6,n7,n8,n9);
	Sleep(250);
	system("cls"); // 이걸 주석처리해서 각 프레임(?)을 볼 수 있다.
}

void frame2(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8, int n9)
{
	printf("%d       %d\n  %d   %d  \n    %d    \n  %d   %d  \n%d       %d\n",n1,n2,n3,n4,n5,n6,n7,n8,n9);
	Sleep(250);
	system("cls"); // 이걸 주석처리해서 각 프레임(?)을 볼 수 있다.(2)

}

int main()
{
	int i=1;
	while(i/*--*/) // 이렇게 해두면 테스트해볼때 보기 편함 (주석을 뗀다면 말이죠.)
	{
		
		frame1(1,2,6,7,3,8,9,4,5);
		frame2(6,1,7,2,3,4,8,5,9); 
		frame1(6,7,5,4,3,2,1,8,9);
		frame2(5,6,4,7,3,8,2,9,1);

		frame1(5,4,9,8,3,7,6,2,1);
		frame2(9,5,8,4,3,2,7,1,6);
		frame1(9,8,1,2,3,4,5,7,6);		 
		frame2(1,9,2,8,3,7,4,6,5);
	}
	return 0;
}

3. 입력 받은 수 로 크기가 결정되고, 회전수가 기록되는 버전.
#include<stdio.h>
#include<Windows.h>
//system("cls");  -> 비쥬얼 스튜디오에서 화면 깨끗하게 하는 법.
// ㄴ#include<windows.h> 선언후 사용.
// #include<conio.h>의 clrscr();은 비쥬얼 C++에서는 안써진다더라. 왜그럴까 ㅠㅜ

int scale;// 전역 변수를 써야 한다니 ㅜㅠ

void frame1()
{
	int i, j; //i는 행, j는 열
	int k;
	// i=2*scale-1;   이 것들은 최대 넓이.
	// j=4*scale-3;

	for(i=1;i<=2*scale-1;i++)
	{
		if(i==(scale))
		{

			for(k=1;k<=4*scale-3;k++)
			{
				if((k%2)!=0){printf("*");}
				else{printf(" ");}
			}
			printf("\n");
		}
		else
		{
			for(j=1;j<=2*scale-2;j++){printf(" ");}
			printf("*\n");
		}
	}

	Sleep(250);
	system("cls");
}

void frame2()
{
	int i, j; //i는 행, j는 열
	
	// i=2*scale-1;
	// j=4*scale-3;

	for(i=1;i<=2*scale-1;i++)
	{
		for(j=1;j<=4*scale-3;j++)
		{
			if(j==(2*i-1))
			{
				printf("*");

			}
			else if(j==(4*scale-2*i-1))
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}


Sleep(250);
system("cls");
}

int main()
{
	int spin =0;


	printf("사용하실 스케일을 입력하세요.\n");
	Sleep(100);
	printf("1 => 1\n2 => 5\n3 => 9\nn => 4n-3\n");
	printf("20보다 크게 입력하면 모양이 깨집니다. 주의!\n");
	scanf_s("%d",&scale);


	while(1)
	{
		int f;
		
		spin++;

		for(f=0;f<8;f++)
		{
			if((f%2)==0)// f가 짝수 일때.
			{
				printf("회전수 : %d\n",spin);
				frame1();

			}
			else //f가 홀수 일때.
			{
				printf("회전수 : %d\n",spin);
				frame2();
			}
		}
	}
	return 0;
}




소감

  • 노가다로 짠게 좀 아쉽다.
  • 함수선언 + for문으로 하는데 거의 성공했다. (숫자가 어려워서 *로 도전중이다.)
  • 처음으로 흥미롭게 하는 프로젝트 (.. 라기엔 좀 초라한듯) 인것 같다.
  • 목표는 스케일을 입력받고 항상 원하는 모양으로 출력되게 하는것이다. (입력 한도는 int 한계까지)
    • 이건 벌써 실현 불가능이라고 판명. 화면이 버티질 못한다 ㄷㄷ;;

덧글


  • 마지막 버전의 *을 숫자로 바꾸기만 하면 목표 성공인데 도저히 못하겠습니다 ㅜㅠ 조언을 구합니다. - 고한종
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:42
Processing time 0.0311 sec