C++뱀 먹 기 게임

7849 단어 C++탐식 사
본 논문 의 사례 는 여러분 에 게 C++간단 한 뱀 잡 아 먹 기 게임 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 에 게 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1 뱀 탐식 게임 의 원리
1.1 구조 뱀 몸:하나의 좌표 배열 을 정의 하고 뱀의 모든 뱀 몸 이 있 는 좌표 위 치 를 저장 합 니 다.
1.2 이동 효과:이동 할 때마다 한 마디 씩 뱀 몸(뱀 머리 제외)을 한 마디 씩 앞으로 이동 시 켜 뱀의 마지막 마디 를 제거 하고 뱀의 방향 을 확인한다.
1.3 이동 판단:이동 할 때마다 뱀 머리 가 음식 에 닿 았 는 지 판단 하고,음식 에 닿 았 을 때 는 앞으로 이동 하고 뱀 머리 를 늘 리 는 작업 만 하 며,뱀 꼬리 를 지우 지 않 는 다.
2 게임 디자인
2.1 게임 홈 페이지


2.2 게임 시작


2.3 게임 종료

3.게임 실현
3.1 게임 홈 페이지

void fist_show()
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
 cout << "                    " << endl;
 cout << "                          " << endl;
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
 cout << "*――――――――――――*" << endl;
 cout << "*                        *" << endl;
 cout << "*                        *" << endl;
 cout << "*       1,          *" << endl;
 cout << "*       2,          *" << endl;
 cout << "*       3,          *" << endl;
 cout << "*                        *" << endl;
 cout << "*                        *" << endl;
 cout << "*――――――――――――*" << endl;
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
 system("pause");
 system("cls");
}
게임 설명

void game_instruction()
{
 color(5);
 cout << "*********      :***********" << endl;
 color(3);
 cout << "*                                *" << endl;
 cout << "*    ↑.↓.←.→         *" << endl;
 cout << "*                          *" << endl;
 cout << "*                           *" << endl;
 cout << "*                       *" << endl;
 color(5);
 cout << "**********************************" << endl;
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
 system("pause");
 system("cls");
}
3.2 게임 시작

//      
struct food{
 int x;
 int y;
}food1;

//      
struct snake {
 int speed;//      
 int len;//      
 int x[snake_length];//        * x   
 int y[snake_length];//        * y   

}snake1;
커서 를 콘 솔(x,y)좌표 점 으로 이동 합 니 다.

//          (x,y)    
void gotoxy(int x, int y)
{
 COORD coord;
 coord.X = x;
 coord.Y = y;
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
지 도 를 제작 하 다

void creat_map()
{
 //      
  for (int i = 0; i <= wide; i += 1)
  {
   //        (i,0)      
   gotoxy(i, 0);
   cout<<"*";
   gotoxy(i, hight);
   cout << "*";
  }

  //      
  for (int i = 1; i < hight; i++)
  {
   //        (0,i)      
   gotoxy(0, i);
   cout << "*";
   gotoxy(wide, i);
   cout << "*";
  }
}
뱀 몸 과 음식 초기 화

void init()
{
//        
  
  food1.x = rand() % (wide - 2) + 2;
  food1.y = rand() % (hight - 2) + 1;
  gotoxy(food1.x, food1.y);
  cout<<"★";
  //       
  snake1.len = 4;
  snake1.speed = 200;

  //         
  snake1.x[0] = wide / 2 + 2;//x     
  snake1.y[0] = hight / 2;
  //    
  gotoxy(snake1.x[0], snake1.y[0]);
  cout<<"■";

  //       
  for (int i = 1; i < snake1.len; i++)
  {
   //     ,     ,             +2
   snake1.x[i] = snake1.x[i - 1] + 2;
   snake1.y[i] = snake1.y[i - 1];
   gotoxy(snake1.x[i], snake1.y[i]);
   printf("■");
  }
 
}
뱀 을 옮기다

void snake_move() 
{
 int pre_key = key;
 key = _getch();

 
 
 *changeFlag 0          ,             ,           
 * 1       ,        ,             
 */
 if (changeFlag == 0)
 {
  gotoxy(snake1.x[snake1.len - 1], snake1.y[snake1.len - 1]);
  cout<<"  ";//             
 }

 //              (    )
 for (int i = snake1.len - 1; i > 0; i--)
 {
  snake1.x[i] = snake1.x[i - 1];
  snake1.y[i] = snake1.y[i - 1];
 }

 //                   ,                   
 //                  ,                
 if (pre_key == 4 && key == 5)
 {
  key = 4;
 }
  
 if (pre_key == 5 && key == 4)
 {
  key = 5;
 }
  
 if (pre_key == 6 && key == 7)
 {
  key = 6;
 }
  
 if (pre_key == 7 && key == 6)
 {
  key = 7;
 }
  

 
 //             
 switch (key)
 {
 case 4:
  snake1.x[0] -= 2;//  
  break;
 case 5:
  snake1.x[0] += 2;//  
  break;
 case 6:
  snake1.y[0]--;//  
  break;
 case 7:
  snake1.y[0]++;//  
  break;
 }
 //     
 gotoxy(snake1.x[0], snake1.y[0]);
 printf("■");
 gotoxy(wide - 2, 0);
 //          ,changFlag  0
 changeFlag = 0;
 return;
}
음식 을 창조 하 다

void createFood()
{
 if (snake1.x[0] == food1.x && snake1.y[0] == food1.y)//      
 {
  //                ,            
  while (1)
  {
   int flag = 1;
   food1.x = rand() % (wide - 4) + 2;
   food1.y = rand() % (hight - 2) + 1;

   //               
   for (int i = 0; i < snake1.len; i++)
   {
    if (snake1.x[i] == food1.x && snake1.y[i] == food1.y)
    {
     flag = 0;
     break;
    }
   }
  }

  //    
  gotoxy(food1.x, food1.y);
  printf("★");

  snake1.len++;//    ,     1
  sorce += 10;//     10 
  snake1.speed -= 5;//          ,       
  changeFlag = 1;//   ,       ,            ,             
 }
 return;
}
뱀 을 판단 하 는 규칙

//           
bool snakeStatus()
{
 //        ,    
 if (snake1.y[0] == 0 || snake1.y[0] == hight)
  return false;
 //        ,    
 if (snake1.x[0] == 0 || snake1.x[0] == wide)
  return false;
 //      ,    
 for (int i = 1; i < snake1.len; i++)
 {
  if (snake1.x[i] == snake1.x[0] && snake1.y[i] == snake1.y[0])
   return false;
 }
 return true;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기