부릉부릉 집 가고 싶다~ 부릉부릉하니깐 역겹겠지만 노래 생각나네
B.I 노래중에 역겹겠지만이라는 노래가 있는데, 부릉부릉~ 부분이 되게 찰지니깐 한 번 들어보세요. 그 앨범 노래는 다 좋아서 들을만한데, 이 노래를 통해 접하게 되서 한 번 소개해드릴게요
(방향맞추기 - 2번 ver.)
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int a, b, c, w, k, p; // k = 맞춘개수, p = 단계별 맞춘 블럭의 수
int z = 1; // 스테이지 (단계)
int s = 900; // 게임 속도
void menu(void)
{
printf(" [방향 맞추기 게임]\n\n");
printf(" Enter 누르면 시작\n\n\n");
printf(" [게임방법]\n\n 블럭의 방향을 빨리 맞춘다.\n\n [조작법]\n\n 방향키\n ←↑→↓");
getch();
system("cls");
}
void mv( int x, int y) // 위치 이동 함수
{
COORD pos = { x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int map(void) // 테두리 생성
{
printf(" ㅁㅁㅁㅁㅁ\n");
printf(" ㅁ ㅁ\n");
printf(" ㅁ ㅁ\n");
printf(" ㅁ ㅁ \n");
printf(" ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ \n");
printf(" ㅁ ㅁ ㅁ ㅁ \n");
printf(" ㅁ ㅁ ㅁ ㅁ \n");
printf(" ㅁ ㅁ ㅁ ㅁ \n");
printf(" ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ \n");
printf(" ㅁ ㅁ\n");
printf(" ㅁ ㅁ\n");
printf(" ㅁ ㅁ \n");
printf(" ㅁㅁㅁㅁㅁ\n");
}
int inf(void) // 정보창 생성
{
mv(19, 6);
printf(" %d/20",p);
}
int cm(void) // 스테이지 클리어 메시지
{
system("cls");
mv(20, 6);
printf("## %d스테이지 클리어 ##", z - 1);
mv(20, 7);
printf("## 게임속도 증가 ##");
Sleep(2000);
system("cls");
}
int mk(void) // 랜덤으로 블럭 생성
{
srand(time(NULL));
a = rand() % 4;
if(a == 0) //L
{
a = 11;
b = 5;
}
else if(a == 1) // R
{
a = 27;
b = 5;
}
else if(a == 2) // U
{
a = 19;
b = 1;
}
else if(a == 3)// D
{
a = 19;
b = 9;
}
mv(a, b);
printf("★★★\n");
mv(a, b + 1);
printf("★★★\n");
mv(a, b + 2);
printf("★★★\n");
Sleep(s); // 블럭 지우는 시간 (게임 속도)
mv(0, 0);
map(); // 블럭 지우기
}
int three(void) // 시작 3초 카운트 다운
{
map();
mv(21, 6);
printf("3");
Sleep(1000);
mv(21, 6);
printf("2");
Sleep(1000);
mv(21, 6);
printf("1");
Sleep(1000);
mv(20, 6);
printf("시작");
Sleep(1000);
system("cls");
}
int over(void) //게임 오버
{
system("cls");
mv(20,6);
printf("## GAMEOVER ##\n\n");
mv(20, 8);
printf("### %d개 맞춤 ###", k);
}
int first(void) //무한 모드
{
int i;
while(1)
{
three();
map();
for(i = 0; i < 20; i++) // 스테이지 당 20 블럭
{
Sleep(70);
inf();
mk();
if(kbhit())
{
int c =_getch();
if(c == 224)
{
c =_getch();
if(c == 75) // 왼쪽
{
w = 1;
}
else if(c == 77) // 오른쪽
{
w = 2;
}
else if(c == 72) // 위쪽
{
w = 3;
}
else if(c == 80) // 아래쪽
{
w = 4;
}
}
if((a == 11 && b == 5) && w == 1) // LL
{
k++;
p++;
}
else if((a == 27 && b == 5) && w == 2) // RR
{
k++;
p++;
}
else if((a == 19 && b == 1) && w == 3) // UU
{
k++;
p++;
}
else if((a == 19 && b == 9) && w == 4) //DD
{
k++;
p++;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
s -= (((z + 1) * 100) / z) / 2; // 속도 증가
z++;
cm();
}
}
int main(void)
{
menu(); // 게임 메뉴
first(); // 첫번쨰 게임(무한 모드)
over(); // 게임 오버(종료)
}
이 코드도 방향을 맞추는 코드인데, 조금 완성도 있는 ver이라고 생각하면 돼요. 근데 이것도 노가다에 가까워서 금방 이해할 수 있을 것 같아서 그냥 만들기도 쉬우니깐 올려봐요 헤헤... 다른 ver도 있는데 어딨는지 못 찾겠어서,,,기다려주세요
'C programming' 카테고리의 다른 글
(C프로그래밍 응용) 방향 맞추기 (1) | 2022.12.20 |
---|