收藏 分销(赏)

C语言小游戏.doc

上传人:丰**** 文档编号:10124911 上传时间:2025-04-22 格式:DOC 页数:13 大小:24.04KB
下载 相关 举报
C语言小游戏.doc_第1页
第1页 / 共13页
C语言小游戏.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
C语言小游戏 C语言小游戏 最基础的贪吃蛇的代码 #include #include//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。 #include //用户通过按键盘产生的对应操作 (控制台〕 #include #include //日期和时间头文件 #define LEN 30 #define WID 25 int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位 char Sna_Hea_Dir = 'a';//记录蛇头的移动方向 int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置 int Snake_Len = 3;//记录蛇的`长度 clock_t Now_Time;//记录当前时间,以便自动移动 int Wait_Time ;//记录自动移动的时间间隔 int Eat_Apple = 1;//吃到苹果表示为1 int Level ; int All_Score = -1; int Apple_Num = -1; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 //句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控, void gotoxy(int x, int y)//设置光标位置 { COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS //定位光标位置的函数 SetConsoleCursorPosition(hConsole, pos); } void Hide_Cursor()//隐藏光标 固定函数 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(hConsole, cursor_info); } void SetColor(int color)//设置颜色 { SetConsoleTextAttribute(hConsole, color); //是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色); } void Print_Snake()//打印蛇头和蛇的脖子和蛇尾 { int iy, ix, color; for(iy = 0; iy for(ix = 0; ix { if(Snake[ix][iy] == 1)//蛇头 { SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数 gotoxy(ix*2, iy); printf( } if(Snake[ix][iy] == 2)//蛇的脖子 { color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。 if(color == 14) color -= rand() % 13 + 1; SetColor(color); gotoxy(ix*2, iy); printf( } if(Snake[ix][iy] == Snake_Len) { gotoxy(ix*2, iy); SetColor(0xe); printf( } //变色 } } void Clear_Snake()//擦除贪吃蛇 { int iy, ix; for(iy = 0; iy for(ix = 0; ix { gotoxy(ix*2, iy); if(Snake[ix][iy] == Snake_Len) printf( } } void Rand_Apple()//随机产生苹果 { int ix, iy; do { ix = rand() % LEN; iy = rand() % WID; }while(Snake[ix][iy]); Snake[ix][iy] = -1; gotoxy(ix*2, iy); printf( Eat_Apple = 0; } void Game_Over()//蛇死掉了 { gotoxy(30, 10); printf( Sleep(3000); system( exit(0); } void Move_Snake()//让蛇动起来 { int ix, iy; for(ix = 0; ix for(iy = 0; iy if(Snake[ix][iy] == 1) { switch(Sna_Hea_Dir)//依据新的蛇头方向标志蛇头 { case 'w': if(iy == 0) Game_Over(); else Sna_Hea_Y = iy - 1; Sna_Hea_X = ix; break; case 's': if(iy == (WID -1)) Game_Over(); else Sna_Hea_Y = iy + 1; Sna_Hea_X = ix; break; case 'a': if(ix == 0) Game_Over(); else Sna_Hea_X = ix - 1; Sna_Hea_Y = iy; break; case 'd': if(ix == (LEN - 1)) Game_Over(); else Sna_Hea_X = ix + 1; Sna_Hea_Y = iy; break; default: break; } } if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[Sna_Hea_X][Sna_Hea_Y]!=-1) Game_Over(); if(Snake[Sna_Hea_X][Sna_Hea_Y] { ++Snake_Len; Eat_Apple = 1; } for(ix = 0; ix for(iy = 0; iy { if(Snake[ix][iy] 0) { if(Snake[ix][iy] != Snake_Len) Snake[ix][iy] += 1; else Snake[ix][iy] = 0; } } Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头 } void Get_Input()//控制蛇的移动方向 { if(kbhit()) { switch(getch()) { case 87: Sna_Hea_Dir = 'w'; break; case 83: Sna_Hea_Dir = 's'; break; case 65: Sna_Hea_Dir = 'a'; break; case 68: Sna_Hea_Dir = 'd'; break; default: break; } } if(clock() - Now_Time = Wait_Time)//蛇到时间自动行走 { Clear_Snake(); Move_Snake(); Print_Snake(); Now_Time = clock(); } } void Init()//初始化 { system( system( Hide_Cursor(); gotoxy(61, 4); printf( gotoxy(61, 6); printf( gotoxy(61, 8); printf( gotoxy(61, 10); printf( gotoxy(61, 12); printf( int i; for(i = 0; i Snake[10+i][15] = i+1; int iy, ix;//打印蛇 for(iy = 0; iy for(ix = 0; ix { if(Snake[ix][iy]) { SetColor(Snake[ix][iy]); gotoxy(ix*2, iy); printf( } } } void Pri_News()//打印信息 { SetColor(0xe); gotoxy(73,4); All_Score += Level; printf( gotoxy(73, 6); printf( gotoxy(73, 8); printf( gotoxy(73, 10); printf( gotoxy(73, 12); printf( } void Lev_Sys()//等级系统 { if(((Apple_Num-1) / 10) == Level) { ++Level; if(Wait_Time 50) Wait_Time -= 50; else if(Wait_Time 10) Wait_Time -= 10; else Wait_Time -= 1; } } int main(void) { Init(); srand((unsigned)time(NULL));//设置随机数的种子 Now_Time = clock(); int speed1=1000,speed2,a; printf( printf( scanf( Level=1; Wait_Time=speed1-speed2; printf( scanf( while(a--) Rand_Apple(); while(1) { if(Eat_Apple) { ++Apple_Num; Rand_Apple(); Lev_Sys(); Pri_News(); } Get_Input(); Sleep(10); } return 0; } c语言unsigned对应的 无符号版本和有符号版本的`区别就是无符号类型能储存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服