민트맛뚱이
kwangkwang우럭따
민트맛뚱이
전체 방문자
오늘
어제
  • 분류 전체보기 (16)
    • C (12)
    • C programming (2)
    • digital engineering (1)
    • machine learning (0)
    • Data communication (0)
    • signal processing (0)
    • computer architecture (RISC.. (0)
    • project (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
민트맛뚱이

kwangkwang우럭따

뚱이가 알려주는 소프트웨어

(C프로그래밍 응용) 방향 맞추기 (ver.2)
C programming

(C프로그래밍 응용) 방향 맞추기 (ver.2)

2022. 12. 20. 19:52

부릉부릉 집 가고 싶다~ 부릉부릉하니깐 역겹겠지만 노래 생각나네

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
    민트맛뚱이
    민트맛뚱이
    암 벅

    티스토리툴바