C语言实现贪吃蛇小游戏无需graphich头文件.docx
上传人:qw****27 上传时间:2024-09-11 格式:DOCX 页数:8 大小:46KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C语言实现贪吃蛇小游戏无需graphich头文件.docx

C语言实现贪吃蛇小游戏无需graphich头文件.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

这个程序是参考了一部分资料以后,然后自己修改了一下,附加了一些注释,实现了贪吃蛇的基本功能。共包含snake.h和snake.c两个文件,亲测可用,下面附图一张。有共同兴趣爱好的可以进我的博客一起学习,讨论,http://blog.csdn.net/fisherwan/article/details/19674145snacke.h#ifndef_SNAKE_H_H_H#define_SNAKE_H_H_H//调节游戏界面大小,这里设置为15*15intconstCOL=15;intconstROW=15;//蛇节点typedefstructNode{intx;inty;structNode*pre;structNode*next;}NODE,*pNODE;//食物typedefstructFood{intx;inty;charc;}FOOD,*pFOOD;//初始化,创建蛇的第一节pNODEInitSnake(void);//初始化食物成员FOODInitFood(void);//蛇运动函数intMoveSnake(pNODEpHead,charc);//检查键盘按键charKbHit(charorient);//蛇吃到食物处理函数pNODESnakeEatFood(pNODEpHead,pFOODpFood);//打印游戏界面函数voidPrint(pNODEpHead,FOODfood);#endifSnake.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<Windows.h>#include"snake.h"//主函数intmain(void){charorien='a',get_char;intgame_over=0;FOODfood=InitFood();pNODEhead=InitSnake();while(1){head=SnakeEatFood(head,&food);get_char=KbHit(orien);if(27==get_char){game_over=1;break;}elseorien=get_char;game_over=MoveSnake(head,orien);if(game_over)break;system("cls");Print(head,food);Sleep(200);//ms级,刷屏间隔时间}if(game_over){printf("游戏结束!\n");}getch();return0;}//初始化,创建蛇的第一节pNODEInitSnake(void){pNODEpHead=(pNODE)malloc(sizeof(NODE));srand((unsigned)(time(NULL)+1));if(NULL==pHead){printf("内存分配失败!\n");exit(-1);}pHead->x=rand()%ROW;pHead->y=rand()%COL;pHead->next=NULL;pHead->pre=NULL;returnpHead;}//初始化食物成员FOODInitFood(void){FOODfood;srand((unsigned)time(NULL));food.x=rand()%ROW;food.y=rand()%COL;food.c=65+rand()%26;returnfood;}//蛇吃到食物处理函数pNODESnakeEatFood(pNODEpHead,pFOODpFood){pNODEp_add=NULL,pt=NULL,rear=NULL;if(pFood->x==pHead->x&&pFood->y==pHead->y){p_add=(pNODE)malloc(sizeof(NODE));if(NULL==p_add){printf("内存分配失败!\n");exit(-1);}pt=pHead;while(pt->next!=NULL){pt=pt->next;}p_add->pre=pt;p_add->next=NU