C言語の開発は蛇を食べるゲームを実現します。


本論文の実例はC言語の実現について、蛇ゲームの具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
1、最高VSで運転する
2、使用する関数は、_kbhit_getch EasyXグラフィックスライブラリ内の一連の関数
3、蛇の体と食べ物は長方形で描かれています。
コードは以下の通りです

#include<stdio.h>
#include<graphics.h>   //easyx   
#include<conio.h>
#include<time.h>
/********************      **********************/
//    
typedef struct point {
 int x, y;
}PYINT;
// 
struct snake {
 PYINT xy[100];    //           
 int position;    //  
 int num;       //  
}SNAKE;
//  
struct food{
 PYINT fdxy;
 int flag;      //    
 int grade;      //  
}FOOD;
//  :  
//     #define
enum position
{
 up, down, left, right
};
/**********************     *****************************/
//    
//      10x10     
void initsnake()
{
 SNAKE.xy[0].x = 0;
 SNAKE.xy[0].y = 0;
 //          
 SNAKE.xy[1].x = 10;
 SNAKE.xy[1].y = 0;
 SNAKE.xy[2].x = 20;
 SNAKE.xy[2].y = 0;
 SNAKE.position = right; //    (   )
 SNAKE.num = 3;      //   (   )
}
//  
void Drawsnake()
{
 for (int i = 0; i < SNAKE.num; i++)
 {
 setlinecolor(BLACK);
 setfillcolor(RGB(rand() % 255, rand() % 255, rand() % 255));
 fillrectangle(SNAKE.xy[i].x, SNAKE.xy[i].y, SNAKE.xy[i].x + 10, SNAKE.xy[i].y + 10);
 }
}
//     
/*
          ,      :
                (            ),   ,     (       )  ,       ;
*/
void Movesnake()
{
 for (int i = SNAKE.num; i > 0; i--) {
 SNAKE.xy[i].x = SNAKE.xy[i - 1].x;
 SNAKE.xy[i].y = SNAKE.xy[i - 1].y;  //         
 }
 switch (SNAKE.position)
 {
 case up:          
 SNAKE.xy[0].y -= 10;
 break;
 case down:
 SNAKE.xy[0].y += 10;
 break;
 //     X       
 case left:
 SNAKE.xy[0].x -= 10;
 break;
 case right:
 SNAKE.xy[0].x += 10;
 break;
  //     Y       
 }
}
/******************************    *****************************************/
//       ,      (      )
void Keydown()
{
 char ch = _getch();
 switch (ch)
 {
 case 'W':
 case 'w':
 case 72:              //     “  ”
 if (SNAKE.position != down)  //    
  SNAKE.position = up;
 break;
 case 'S':
 case 's':
 case 80:              //     “  ”
 if (SNAKE.position != up)   //    
  SNAKE.position = down;
 break;
 case 'A':
 case 'a':
 case 75:             //     “  ”
 if (SNAKE.position != right) //    
  SNAKE.position = left;
 break;
 case 'D':
 case 'd':
 case 77:              //     “  ”
 if (SNAKE.position != left)  //    
  SNAKE.position = right;
 break;
 }
}
/******************************    **************************************/
//     
void initfood()
{
 FOOD.fdxy.x = rand() % 60 * 10;        
 FOOD.fdxy.y = rand() % 40 * 10;           //              
 FOOD.flag = 1; //1      
 //FOOD.grade = 0;
 for (int i = 0; i < SNAKE.num; i++) {
 if (FOOD.fdxy.x == SNAKE.xy[i].x&&FOOD.fdxy.y == SNAKE.xy[i].y) //          ,    X Y  
 {
  FOOD.fdxy.x = rand() % 60 * 10;
  FOOD.fdxy.y = rand() % 40 * 10;
 }
 }
}
//   
void Drawfood()
{
 setlinecolor(BLACK);
 setfillcolor(RGB(rand() % 255, rand() % 255, rand() % 255));         
 fillrectangle(FOOD.fdxy.x, FOOD.fdxy.y, FOOD.fdxy.x + 10, FOOD.fdxy.y + 10);
}
/*************************************   *************************************************/
void eatfood()
{
 if (SNAKE.xy[0].x == FOOD.fdxy.x&&SNAKE.xy[0].y == FOOD.fdxy.y) {
 SNAKE.num++;
 FOOD.flag = 0;      //       (1:   0;   )
 FOOD.grade += 10;    //         10 (     10 ,     )
 }
}
/*************************************    *************************************************/
void putgrade()
{
 char str[20] = " ";
 sprintf_s(str, "greade: %d", FOOD.grade);
 settextcolor(RED);             //      
 outtextxy(500, 50, str);
}
/***********************************    ***************************************************/
//     (      )
//       
int gameover()
{
 if (SNAKE.xy[0].x > 600 || SNAKE.xy[0].x < 0 | SNAKE.xy[0].y>400 || SNAKE.xy[0].y < 0) //  
 {
 initgraph(800, 600);
 settextcolor(RED);
 outtextxy(600, 400, "    ");
 settextcolor(YELLOW);
 settextstyle(50, 50, "  ");   //    
 outtextxy(200, 250, "GAME OVER"); //         
 return 1;
 }
 return 0;
}
/*****************************************************************************************/
int main()
{
 initgraph(600, 400);
 setbkcolor(BLACK); //    
 cleardevice();         //  :    
 srand((unsigned int)time(NULL)); //     
 initsnake();
 Drawsnake();
 while (1)
 {
 cleardevice(); //  
 Movesnake();
 Drawsnake();
 if (FOOD.flag == 0) {
  initfood();
 }
 Drawfood();
 if (_kbhit()) {   //_kbhit:          
  Keydown();
 }
 if (gameover()) {  //     1:    
  break;
 }
 eatfood();
 putgrade();
 Sleep(100);  //     (       )
 }
 _getch();     //    
 closegraph();   //    
 return 0;
}
/**********************************************************/
//RGB(rand() % 255, rand() % 255, rand() % 255)            
//    EasyX  
もっと面白い経典ミニゲームはテーマを実現して、みんなに共有します。
C++クラシックミニゲームまとめ
pythonクラシックミニゲームまとめ
pythonテトリスゲーム集合
JavaScript経典ゲームは遊んで止まらないです。
java経典の小さいゲームのまとめ
javascript経典ミニゲームのまとめ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。