操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    貪吃蛇(也叫做貪食蛇)游戲是一款休閑益智類游戲,有PC和手機等多平臺版本。既簡單又耐玩。該游戲通過控制蛇頭方向吃蛋,從而使得蛇變得越來越長。

    我們的今天的目標就是:用C語言來實現一個貪吃蛇項目,也不用太復雜c語言小游戲程序c語言小游戲程序,初學者能看懂就行!

    貪吃蛇小程序,主要采用C語言描述,采用數組進行數據存儲的圖形化操作界面,會涉及一點點C++ 知識(特別少的一點點),但是有C語言基礎就夠用了,編譯器:,會涉及部分庫函數的安裝及使用,不過也很簡單啦!

    效果展示:

    看到了這個效果之后,那我們就動手來實現吧!

    希望大家都能輕松實現這個項目!另外涉及到的# 需要額外安裝圖形庫插件easyX哦~

    代碼如下:

    #include #include #include #include #include #include "snake.h" int score = 0;int gamespeed = 100;                //蛇運行速度 static void Init(void);             /*圖形驅動*/static void Close(void);            /*圖形結束*/static void Game_interface(void);   /*游戲界面*/static void GameOver(void);         /*結束游戲*/static void GamePlay(void);         /*游戲過程*/static void PrScore(void);          /*輸出成績*/ /*主函數*/int main(void){     Init();                      Game_interface();                      GamePlay();                   Close();                      return 0;} /*圖形驅動*/static void Init(void){    int gd=9,gm=2;     initgraph(&gd,&gm," ");    cleardevice();} /* 開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍墻 */static void Game_interface(void){     int i;      setcolor(LIGHTCYAN);                           /*setbkcolor(LIGHTGREEN);*/     setlinestyle(PS_SOLID,0,1);                    /*設置線型*/     for(i=50;i<=600;i+=10)                          /*畫邊框*/     {         rectangle(i,40,i+10,49);                   /*上邊框*/         rectangle(i,451,i+10,460);                 /*下邊框*/     }     for(i=40;i<=450;i+=10)     {         rectangle(50,i,59,i+10);                   /*左邊框*/         rectangle(601,i,610,i+10);                 /*右邊框*/     }} /* 游戲主函數 */static void GamePlay(void){     int i;           srand(time(NULL));                             /*隨機數發生器*/     food.yes = 1;                                  /*1表示需要出現新食物,0表示已經存在食物*/     snake.life = 0;                                /*活著*/     snake.direction = 1;                           /*方向往右*/     snake.x[0] = 100;     snake.y[0] = 100;                                   snake.x[1] = 110;     snake.y[1] = 100;     snake.node = 2;                                /*節數*/      PrScore();                                     /*輸出得分*/     while(1)                                       /*可以重復玩游戲,壓ESC鍵結束*/     {         while( !kbhit() )                          /*在沒有按鍵的情況下,蛇自己移動*/         {             if(food.yes == 1)                      /*需要出現新食物*/             {                 food.x = rand()%400 + 60;                 food.y = rand()%350 + 60;                 while(food.x%10 != 0)              /*食物隨機出現后必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/                     food.x++;                 while(food.y%10 != 0)                     food.y++;                 food.yes = 0;                      /*畫面上有食物了*/             }             if(food.yes == 0)                      /*畫面上有食物了就要顯示*/             {                 setcolor(GREEN);                 rectangle(food.x,food.y,food.x + 10,food.y - 10);             }               for(i=snake.node-1;i>0;i--)          /*蛇的每個環節往前移動,也就是貪吃蛇的關鍵算法*/             {                 snake.x[i] = snake.x[i-1];                 snake.y[i] = snake.y[i-1];             }             /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/             switch(snake.direction)             {                 case 1:                      snake.x[0] += 10;                     break;                 case 2:                      snake.x[0] -= 10;                     break;                 case 3:                      snake.y[0] -= 10;                     break;                 case 4:                      snake.y[0] += 10;                     break;             }             /* 從蛇的第四節開始判斷是否撞到自己 */             for(i=3;i             {                 if((snake.x[i] == snake.x[0]) && (snake.y[i] == snake.y[0]))                 {                     GameOver();                  /*顯示失敗*/                     snake.life = 1;                     break;                 }             }             if((snake.x[0] < 55) || (snake.x[0] > 595) || (snake.y[0] < 55) || (snake.y[0] > 455))     /*蛇是否撞到墻壁*/             {                   GameOver();                                            /*本次游戲結束*/                 snake.life = 1;                                        /*蛇死*/             }             if(snake.life == 1)                                        /*以上兩種判斷以后,如果蛇死就跳出內循環,重新開始*/                 break;             if((snake.x[0] == food.x) && (snake.y[0] == food.y))       /*吃到食物以后*/             {                 setcolor(BLACK);                                       /*把畫面上的食物東西去掉*/                 rectangle(food.x,food.y,food.x+10,food.y-10);                 snake.x[snake.node] = -20;                 snake.y[snake.node] = -20;                  /* 新的一節先放在看不見的位置,下次循環就取前一節的位置 */                  snake.node++;                      /*蛇的身體長一節*/                 food.yes = 1;                      /*畫面上需要出現新的食物*/                 score += 10;                 PrScore();                         /*輸出新得分*/             }             setcolor(RED);                         /*畫出蛇*/               for(i=0;i                 rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);             Sleep(gamespeed);             setcolor(BLACK);                        /*用黑色去除蛇的的最后一節*/             rectangle(snake.x[snake.node-1],snake.y[snake.node-1],                       snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);         }        /*endwhile(!kbhit)*/                   if(snake.life == 1)                        /*如果蛇死就跳出循環*/             break;                   key=getch();                          /*接收按鍵*/         if (key == ESC) break;                  /*按ESC鍵退出*/                   switch(key)         {                                              case UP:                 if(snake.direction != 4)           /*判斷是否往相反的方向移動*/                     snake.direction = 3;                 break;             case RIGHT:                 if(snake.direction != 2)                     snake.direction = 1;                 break;             case LEFT:                 if(snake.direction != 1)                     snake.direction = 2;                 break;             case DOWN:                 if(snake.direction != 3)                     snake.direction = 4;                 break;         }      }/*endwhile(1)*/} /*游戲結束*/static void GameOver(void){     cleardevice();     PrScore();     setcolor(RED);     setfont(56,0,"黑體");     outtextxy(200,200,"GAME OVER");     getch();} /*輸出成績*/static void PrScore(void){     char str[10];      setfillstyle(YELLOW);     bar(50,15,220,35);     setcolor(BROWN);     setfont(16,0,"宋體");     sprintf(str,"score:%d",score);     outtextxy(55,16,str);} static void Close(void){     closegraph();}
    #ifndef SNAKE_H#define SNAKE_H #define LEFT 'a'#define RIGHT 'd'#define DOWN 's'#define UP 'w'#define ESC 27 #define N 200 /*蛇的最大長度*/ char key; /*控制按鍵*/ struct Food{ int x; /*食物的橫坐標*/ int y; /*食物的縱坐標*/ int yes; /*判斷是否要出現食物的變量*/}food; /*食物的結構體*/ struct Snake{ int x[N]; int y[N]; int node; /*蛇的節數*/ int direction; /*蛇移動方向*/ int life; /* 蛇的生命,0活著,1死亡*/}snake; #endif

    此外,我也給大家分享我收集的其他資源,從最零基礎開始的教程到C語言C++項目案例,幫助大家在學習C語言的道路上披荊斬棘!

    整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)最重要的是你可以在群里面交流提問編程問題哦!

    歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有