c語言小游戲代碼(c語言小游戲代碼)

導讀您好,現在軟糖來為大家解答以上的問題。c語言小游戲代碼,c語言小游戲代碼相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、“貪吃蛇”C...

您好,現在軟糖來為大家解答以上的問題。c語言小游戲代碼,c語言小游戲代碼相信很多小伙伴還不知道,現在讓我們一起來看看吧!

1、“貪吃蛇”C代碼,在dev C++試驗通過(用4個方向鍵控制)#include #include#include#include#include#define W 78? //游戲框的寬,x軸#define H 26? //游戲框的高,y軸int dir=3; ???//方向變量,初值3表示向“左”int Flag=0; ??//吃了食物的標志(1是0否)int score=0;? //玩家得分struct food int x;? //食物的x坐標? ? ? ? ? ? ? ? ?? int y;? //食物的y坐標? ? ? ? ? ? ? ? ? }fod; ?//結構體fod有2個成員struct snake int len; ? ?? //蛇身長? ? ? ? ? ? ? ? ? ?? int speed;? //移動速度? ? ? ? ? ? ? ? ? ?? int x[100];? //蛇身某節x坐標? ? ? ? ? ? ? ? ? ?? int y[100];? //蛇身某節y坐標? ? ? ? ? ? ? ? ? ? }snk; ? //結構體snk有4個成員void gtxy( int x,int y) ?//控制光標移動的函數 COORD coord;? coord.X=x;? coord.Y=y;? SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);}void gtxy( int x,int y);? //以下聲明要用到的幾個自編函數void csh( );? //初始化界面void keymove( ); //按鍵操作移動蛇void putFod( );? //投放食物int? Over( ); ??//游戲結束(1是0否)void Color(int a);? //設定顯示顏色的函數int main( )?? //主函數 csh( );? while(1)? ? Sleep(***.speed);? ? ? keymove( );? ? ? putFod( );? ?? if(Over( ))? ? ? ? system(“cls”);? ? ? ?? gtxy(W/2+1,H/2); printf(“游戲結束!T__T”);? ? ? ?? gtxy(W/2+1,H/2+2); printf(“玩家總分:%d分”,score);? ? ? ?? getch( );? ? ? ?? break;? ? ? ? }? ? }? return 0;}void csh( ) ? //初始化界面 int i;? gtxy(0,0);?CONSOLE_CURSOR_INFO cursor_info=1,0};? //以下兩行是隱藏光標的設置?SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);??for(i=0;i<=W;i=i+2)? //橫坐標要為偶數。

2、因為這個要打印的字符占2個位置?? Color(2); ? //設定打印顏色為綠色? ?? gtxy(i,0); ?printf("■"); ?//打印上邊框? ?? gtxy(i,H); printf("■"); ?//打印下邊框?? }?for(i=1;i

3、這兒用來暫停? }? if (Flag==0) ? //如沒吃食物,才執行下面操作擦掉蛇尾? ?? gtxy(snk.x[***.len-1],snk.y[***.len-1]); ?printf("?"); }?int i;?for (i = ***.len - 1; i > 0; i--) ?//從蛇尾起每節存儲前一節坐標值(蛇頭除外)?????? snk.x[i]=snk.x[i-1]; ?snk.y[i]=snk.y[i-1]; }?switch (dir)? //判斷蛇頭該往哪個方向移動,并獲取最新坐標值?????? case 1: snk.y[0]--; break; ??//dir=1要向上移動?????? ? case 2: snk.y[0]++; break;? //dir=2要向下移動?????? ? case 3: snk.x[0]-=2; break;? //dir=3要向左移動?????? ? case 4: snk.x[0]+=2; break;? //dir=4要向右移動?????? }?Color(9);? gtxy(snk.x[0], snk.y[0]); printf("■"); ? //打印蛇頭? if (snk.x[0] == fod.x && snk.y[0] == fod.y) ? //如吃到食物則執行以下操作? ?? printf("7"); ***.len++; score += 100; ***.speed -= 5; Flag = 1; } //7是響鈴? else Flag = 0; ? //沒吃到食物Flag的值為0? if(***.speed<150) ***.speed= ***.speed+5; ? //作弊碼。

4、不讓速度無限加快}void putFod( )? //投放食物 if (Flag == 1)? //如吃到食物才執行以下操作,生成另一個食物? ?? while (1)?????? ?? int i,n= 1;?????? ???srand((unsigned)time(NULL));? //初始化隨機數發生器srand( )?????? ? ?fod.x = rand( ) % (W - 4) + 2;? //產生在游戲框范圍內的一個x坐標值?????? ? ?fod.y = rand( ) % (H - 2) + 1;? //產生在游戲框范圍內的一個y坐標值?????? ? ?for (i = 0; i < ***.len; i++) ??//隨機生成的食物不能在蛇的身體上????????????? ? if (fod.x == snk.x[i] &&fod.y == snk.y[i]) n= 0; break;} }?????? ???if (n && fod.x % 2 == 0) break; ?//n不為0且橫坐標為偶數,則食物坐標取值成功?????? ??}? ? ?? Color(12);? //設定字符為紅色? ? ?? gtxy(fod.x, fod.y); ?printf("●"); ? //光標到取得的坐標處打印食物? ? }?? return;}int Over( )? //判斷游戲是否結束的函數 int ?i;? Color(7);? gtxy(2,H+1); printf(“暫停鍵:space.”); ?//以下打印一些其它信息? gtxy(2,H+2); printf(“游戲得分:%d”,score);? if (snk.x[0] == 0 || snk.x[0] == W) return 1;? //蛇頭觸碰左右邊界? if (snk.y[0] == 0 || snk.y[0] == H) return 1;? //蛇頭觸碰上下邊界? for (i = 1; i < ***.len; i++)?????? if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; }? //蛇頭觸碰自身? return 0; ?? //沒碰到邊界及自身時就返回0}void Color(int a) ? //設定顏色的函數? SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a );? }。

本文就為大家分享到這里,希望小伙伴們會喜歡。

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!