資源簡介
貪吃蛇游戲源代碼,codeblocks寫的c語言小游戲源代碼,可以運行。

代碼片段和文件信息
#include?
#include?
#include
#include
#include
#include
#define?U?1
#define?D?2
#define?L?3
#define?R?4???????//蛇的狀態,U:上?;D:下;L:左?R:右
typedef?struct?SNAKE?//蛇身的一個節點
{
????int?x;
????int?y;
????struct?SNAKE?*next;
}snake;
//全局變量//
int?score?=?0?add?=?10;//總得分與每次吃食物得分。
int?status?sleeptime?=?200;//每次運行的時間間隔
snake?*head?*food;//蛇頭指針,食物指針
snake?*q;//遍歷蛇的時候用到的指針
int?endGamestatus?=?0;?//游戲結束的情況,1:撞到墻;2:咬到自己;3:主動退出游戲。
int?fx=10;
int?fy=10;
//聲明全部函數//
void?Pos();
void?creatMap();
void?initSnake();
int?biteSelf();
void?createFood();
void?cantCrossWall();
void?snakeMove();
void?pause();
void?runGame();
void?initGame();
void?endGame();
void?gameStart();
void?Pos(int?x?int?y)//設置光標位置
{
????COORD?pos;
????HANDLE?hOutput;
????pos.X?=?x;
????pos.Y?=?y;
????hOutput?=?GetStdHandle(STD_OUTPUT_HANDLE);//返回標準的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出/錯誤的屏幕緩沖區的句柄
????SetConsoleCursorPosition(hOutput?pos);
}
void?creatMap()//創建地圖
{
????int?i;
????for?(i?=?0;?i<58;?i?+=?2)//打印上下邊框
????{
????????Pos(i?0);
????????printf(“*“);//一個方塊占兩個位置
????????Pos(i?26);
????????printf(“*“);
????}
????for?(i?=?1;?i<26;?i++)//打印左右邊框
????{
????????Pos(0?i);
????????printf(“*“);
????????Pos(56?i);
????????printf(“*“);
????}
}
void?initSnake()//初始化蛇身
{
????snake?*tail;
????int?i;
????tail?=?(snake*)malloc(sizeof(snake));//從蛇尾開始,頭插法,以xy設定開始的位置//
????tail->x?=?24;
????tail->y?=?5;
????tail->next?=?NULL;
????for?(i?=?1;?i?<=?4;?i++)//初始長度為4
????{
????????head?=?(snake*)malloc(sizeof(snake));
????????head->next?=?tail;
????????head->x?=?24?+?2?*?i;
????????head->y?=?5;
????????tail?=?head;
????}
????while?(tail?!=?NULL)//從頭到為,輸出蛇身
????{
????????Pos(tail->x?tail->y);
????????printf(“■“);
????????tail?=?tail->next;
????}
}
//??
int?biteSelf()//判斷是否咬到了自己
{
????snake?*self;
????self?=?head->next;
????while?(self?!=?NULL)
????{
????????if?(self->x?==?head->x?&&?self->y?==?head->y)
????????{
????????????return?1;
????????}
????????self?=?self->next;
????}
????return?0;
}
void?createFood()//隨機出現食物
{
????snake?*food_1;
????//srand((unsigned)time(NULL));//為了防止每次產生的隨機數相同,種子設置為time
????food_1?=?(snake*)malloc(sizeof(snake));
????if?(sleeptime?>=?50)
????{
????????sleeptime?=?sleeptime?-?5;
????????//add?=?add?+?2;
????????if?(sleeptime?==?320)
????????{
????????????????????add?=?2;//防止減到1之后再加回來有錯
????????}
????}
????while(1)
????{
????????//while?((food_1->x?%?2)?!=?0)????//保證其為偶數,使得食物能與蛇頭對其
????????//{
????????food_1->x?=?(rand()*2)?%?52?+?2;
????????//}
????????food_1->y?=?rand()?%?24?+?1;
????????q?=?head;
????????int?my=0;
????????while?(q->next?!=?NULL)
????????{
????????????if?(q->x?==?food_1->x?&&?q->y?==?food_1->y)?//判斷蛇身是否與食物重合
????????????{
????????????????my=1;
????????????????break;
???????????????//?free(food_1);
???????????????//??createFood();
????????????}
????????????q?=?q->next;
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????38944??2017-12-19?23:14??snake\bin\Debug\snake.exe
?????文件??????11033??2017-12-19?23:14??snake\main.c
?????文件??????13085??2017-12-19?23:14??snake\obj\Debug\main.o
?????文件???????1104??2017-12-19?22:17??snake\snake.cbp
?????文件????????321??2017-12-19?23:08??snake\snake.depend
?????文件????????356??2017-12-19?23:42??snake\snake.layout
?????目錄??????????0??2017-12-19?23:14??snake\bin\Debug
?????目錄??????????0??2017-12-19?23:14??snake\obj\Debug
?????目錄??????????0??2017-12-19?22:17??snake\bin
?????目錄??????????0??2017-12-19?22:17??snake\obj
?????目錄??????????0??2017-12-19?23:42??snake
-----------?---------??----------?-----??----
????????????????64843????????????????????11
- 上一篇:c語言迷宮游戲源代碼
- 下一篇:一個聊天室,支持文件傳輸
評論
共有 條評論