C 언어 탐식 뱀 게임 실현(1 인 버 전)

6394 단어 C 언어탐식 사
본 논문 의 사례 는 C 언어 가 뱀 을 게 걸 스 럽 게 먹 는 게임 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
첫 번 째:뱀 게임에 비해 기능 이 더욱 풍부 하 다.

#include"snake.h"
//    
void move_snake();
//   
void draw_snake();
//    
void creatfood();
//         
void eatfood();
//       
void SnakeState();
 
 
 
int main()
{
 //      
 system("mode con cols=110 lines=31");
 //    
 SetConsoleTitleA("   ");
 
 //  bgm
 playmusic();
 
 //    
begin:
 snake.CH = VK_RIGHT;//     
 snake.len = 5; //     
 snake.SPEED = 100;//         
 snake.coord[1].x = SCREEN_WIDETH / 2;//        
 snake.coord[1].y = SCREEN_HEIGHT / 2;
 snake.coord[2].x = SCREEN_WIDETH / 2-2;//        
 snake.coord[2].y = SCREEN_HEIGHT / 2;
 snake.coord[3].x = SCREEN_WIDETH / 2-4;//        
 snake.coord[3].y = SCREEN_HEIGHT / 2;
 
 //       
 food.flag = 1;//1       0        
 
     //       
 snake.flag = 1;//1  0 
 
 
 
 init_sence();//       
 while (1)
 {
  colormap();
  gotoxy(0, 0);
  printf("■");
  HuiFu();
  setcolor();
 
  draw_snake();//  
  Sleep(snake.SPEED);//      
  move_snake();//   
  if(food.flag)
  creatfood();//    
  eatfood();//        
  SnakeState();//       
  if (!snake.flag)break;
 }
 system("cls");
 gotoxy(SCREEN_WIDETH/2, SCREEN_HEIGHT/2-4);
 printf(" GAME OVER!!!");
 gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+2);
 printf("     :\t\t\t%d ",snake.len-1);
 gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+4);
 printf("     :\t\t\tCTRL ");
 gotoxy(SCREEN_WIDETH / 2-6, SCREEN_HEIGHT / 2+6);
 printf("          :\t\tESC");
 
 while (1)
 {
  if (GetAsyncKeyState(VK_CONTROL))
  {
   system("cls");
   goto begin;
  }
  else if (GetAsyncKeyState(VK_ESCAPE))
   return 0;
 }
}
 
//    
void move_snake()
{
 //         
 if (GetAsyncKeyState(up))
 {
  if(snake.CH!=down)snake.CH = up;
 }
 else if (GetAsyncKeyState(down))
 {
  if (snake.CH != up)snake.CH = down;
 }
 else if (GetAsyncKeyState(right))
 {
  if (snake.CH != left)snake.CH = right;
 }
 else if (GetAsyncKeyState(left))
 {
  if (snake.CH != right)snake.CH = left;
 }
 else if (GetAsyncKeyState(VK_F1))
 {
  if(snake.SPEED>=50)snake.SPEED -= 10;
 }
 else if (GetAsyncKeyState(VK_F2))
 {
  if (snake.SPEED <= 100)snake.SPEED += 10;
 }
 //      
 if (snake.len >= 30 && snake.SPEED >= 10)snake.SPEED -= 2;
 //               
 switch (snake.CH)
 {
 case right:snake.coord[1].x += 2; break;
 case left:snake.coord[1].x -= 2; break;
 case up:snake.coord[1].y -= 1; break;
 case down:snake.coord[1].y += 1; break;
 }
 
 
}
 
//   
void draw_snake()
{
 //    
 gotoxy(snake.coord[1].x, snake.coord[1].y);
 printf("□");
 
 //    ,    for    
 for (int i = 2; i < snake.len; i++)
 {
  gotoxy(snake.coord[i].x, snake.coord[i].y);
  printf("□");
 }
 //    
 HuiFu();
 gotoxy(snake.coord[snake.len].x, snake.coord[snake.len].y);
 printf(" ");
 
 //      
 for (int i = snake.len; i >1; i--)
 {
  snake.coord[i].x = snake.coord[i - 1].x;
  snake.coord[i].y = snake.coord[i - 1].y;
 }
 
 gotoxy(0, 0);
 printf("■");
 gotoxy(85, 25);
 printf("  :%d ", snake.len-1);
 gotoxy(85, 22);
 printf("  :%dms/  ", snake.SPEED);
 
}
 
//    
void creatfood()
{
 //      
 srand((unsigned)time(NULL));
 if(food.flag)
 while (1)
 {
  food.x = rand() % 80;
  food.y = rand() % 30;
  if (food.x % 2 == 0 && food.x >= 2 && food.x <= 78 && food.y > 1 && food.y < 30)
  {
   int flag = 0;
   //                 
   for (int i = 1; i <= snake.len; i++)
   {
    if (snake.coord[i].x == food.x&&snake.coord[i].y == food.y)
    {
     flag = 1;
     break;
    }
   }
   if (flag)continue;
   //    
   else
   {
    colorfood();
    gotoxy(food.x, food.y);
    printf("⊙");
    HuiFu();
    food.flag = 0;
    break;
   }
  }
 }
 food.flag = 0;
}
 
//         
void eatfood()
{
 //              
  if (food.x == snake.coord[1].x&&food.y == snake.coord[1].y)
  {
   snake.len+=1;
   food.flag = 1;
  }
}
 
//       
void SnakeState()
{
 if (snake.coord[1].x < 2 || snake.coord[1].x>78 || snake.coord[1].y < 1 || snake.coord[1].y>29)
  snake.flag = 0;
 
 for (int i = 2; i <= snake.len; i++)
 {
  if (snake.coord[1].x == snake.coord[i].x&&snake.coord[1].y == snake.coord[i].y)
   snake.flag = 0;
 }
 
}
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기