본문 바로가기
카테고리 없음

c언어로 움직이는 도넛 만들기

by 할10000 2022. 6. 12.
#include <stdio.h>
#include <windows.h>
#include <string.h> //memset
#include <math.h> //sin, cos
//#include <unistd.h> // usleep


int main()
{
	system("color A"); // 이 코드 없으면 아래로 새 이미지들이  내려감 
	
	float A = 0, B = 0;
	float i, j;
	int k;
	float z[1760];
	char b[1760];
	printf("\x1b[2J"); // 화면 청소  
	for(;;)
	{
		memset(b, 32, 1760);
		memset(z, 0, 7040);
		for(j = 0; j < 6.28; j += 0.07)
		{
			for(i = 0; i < 6.28; i += 0.02)
			{
				float c = sin(i);
				float d = cos(j);
				float e = sin(A);
				float f = sin(j);
				float g = cos(A);
				float h = d + 2;
				float D = 1 / (c*h*e + f*g + 5);
				float l = cos(i);
				float m = cos(B);
				float n = sin(B);
				float t = c*h*g-f*e;
				
				int x = 40+30*D*(l*h*m - t*n);
				int y = 12+15*D*(l*h*n + t*m);
				int o = x+80*y;
				int N = 8 * ((f*e - c*d*g)*m - c*d*e - f*g - l*d*n);
				
				if(22>y && y>0 && x>0 && 80>x && D>z[o])
				{
					z[o] = D;
                    b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
                    // 여기다printf("\a"); 넣지 말것. 골치 아픔. 
				}
			}
		}
		printf("\x1b[H");
		for(k = 0; k < 1761; k++)
		{
			putchar(k%80 ? b[k]:10);
			A += 0.00004;
			B += 0.00002;
		}
		_sleep(1000);
		printf("\a");
	}
	return 0; 
}

도넛.exe
1.07MB