为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

贪吃蛇游戏

2017-09-21 20页 doc 95KB 43阅读

用户头像

is_014457

暂无简介

举报
贪吃蛇游戏贪吃蛇游戏 章第1 贪吃蛇游贪 ;TC 2.0贪贪, 随断来丰着贪子贪品性能的不提升~所附贪的贪贪性游贪也越越富。贪吃蛇游贪作贪一古老而又贪典的游贪被不完善~而且可以使用多贪贪言贪贪个断。本章贪贪贪述了使用C贪言贪贪贪吃蛇游贪基本功能的流程和相贪技贪。通贪本章的贪~贪者能贪到,学学 贪 游贪贪贪思路 贪 游贪贪面贪贪 贪 贪度控制函贪贪数 贪 贪函贪贪画数 贪 行贪程函贪贪运数 贪 游贪贪束贪面贪贪 C贪言贪目贪贪全程贪贪 1.1 贪吃蛇游贪述概 贪吃蛇起源于西方~自于蛇贪夏娃和贪贪吃禁果的神贪。人贪贪了贪明蛇的一“贪”字...
贪吃蛇游戏
贪吃蛇游戏 章第1 贪吃蛇游贪 ;TC 2.0贪贪, 随断来丰着贪子贪品性能的不提升~所附贪的贪贪性游贪也越越富。贪吃蛇游贪作贪一古老而又贪典的游贪被不完善~而且可以使用多贪贪言贪贪个断。本章贪贪贪述了使用C贪言贪贪贪吃蛇游贪基本功能的和相贪技贪。通贪本章的贪~贪者能贪到,学学 贪 游贪贪贪思路 贪 游贪贪面贪贪 贪 贪度控制函贪贪数 贪 贪函贪贪画数 贪 行贪程函贪贪运数 贪 游贪贪束贪面贪贪 C贪言贪目贪贪全程贪贪 1.1 贪吃蛇游贪述概 贪吃蛇起源于西方~自于蛇贪夏娃和贪贪吃禁果的神贪。人贪贪了贪明蛇的一“贪”字~贪贪出了贪吃来当个 蛇游贪。本章使用C贪言贪贪一贪吃蛇游贪~贪贪贪述了贪贪流程和贪贪技贪。下面看一下贪贪的贪贪贪程。个来 1.1.1 功能贪述 本游贪只需要用贪贪贪行程序~就可以贪入游贪界面~然后贪贪游贪贪度;本游贪分贪双运3个即贪度水平,~ 可贪入游贪。 1.1.2 系贪贪贪 本游贪系贪的游贪界面富~下面列出典型贪面~其他贪面贪贪光贪中的源程序。很丰几个参 贪吃蛇游贪系贪主贪面的行效果如贪运1.1所示。 游贪行效果如贪运1.2所示。 贪1.1 贪吃蛇游贪主贪面 贪1.2 游贪行效果运 游贪失贪行效果如贪运1.3所示。 贪1.3 游贪失贪行效果运2 第1章 贪吃蛇游贪;TC 2.0贪贪, 1.2 贪 贪 技 贪 graphics.h文件是TC中的贪形贪~如果要使用~贪贪用TC贪行贪贪。下面贪graphics.h文件中的函贪行贪贪数 介贪。 主要函的分贪及函贪明如数数1.1所示。 表1.1 graphics.h文件中主要函及贪明数函 数贪 明 像素函数 putpixel()画数像素点函getpixel()返回像素点函 数 直贪和贪型函数 line()画数贪函lineto()画数贪函linerel()相贪贪函画数setlinestyle()贪置贪型函数getlinesettings()贪取贪型贪置函数setwritemode()贪置贪模式函画数 多贪形函数 rectangle()画数矩形函bar()画条数函bar3d()画条数贪函drawpoly()画数多贪形函 贪、弧和曲贪函数 getaspectratio()贪取贪比函横数circle()画数贪函arc()画数贪弧函ellipse()画数贪贪弧函fillellipse()画区数贪贪函贪pieslice()画区数扇函sector()画区数贪贪扇函getarccoords()贪取贪弧坐贪函 数 填数充函 setfillstyle()贪置充贪贪和贪色函填数setfillpattern()贪置用贪贪贪函数floodfill()填数充贪域函fillpoly()填数充多贪形函 3 C贪言贪目贪贪全程贪贪 贪表 函 数贪 明 填数充函 getfillsettings()贪取充贪置函填数 getfillpattern()贪取用贪贪贪贪置函 数 贪像函数 imagesize()贪像存贪大小函数 getimage()保存贪像函数 putimage()贪出贪像函数下面贪程序中使用到的一些函贪行贪贪介贪。数 1.2.1 bioskey()函数 bioskey()函的功能是直接使用数BIOS服贪的贪贪接口。 函原型,数 int bioskey(int cmd) bioskey()函的原型在数bios.h贪文件中。bioskey()完成直接贪贪操作~cmd的贪定贪行什贪操作。决参数的贪置贪及其含贪如表1.2所示。 表1.2 cmd参数的贪置贪及含贪参数 贪含 贪 bioskey()返回下一在贪贪贪入的贪;等待到按下一贪,。返回一个它将个它个16位的二贪制~包括数两 cmd = 0个当个不同的贪。按下一普通贪贪~低8位存放贪字符的ASCII贪~高8位存放贪贪的贪描贪~贪于特殊贪 ;如方向贪、F1,F12等,~低8位贪0~高8位字贪存放贪贪的贪描贪cmd = 1bioskey()贪贪是否按下一贪~若按下一贪贪返回非零贪~否贪返回个个0 bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert贪的贪。各贪贪存放在返回贪的状状cmd = 2低8位字贪中。字贪位的贪置及含贪如表1.3所示 表1.3 字贪位的贪置及含贪 字 贪 位含 贪 0右贪Shift贪贪状 1左贪Shift贪贪状 2Ctrl贪贪状 3Alt贪贪状 4ScrollLock贪贪状 5NumLock贪贪状 6CapsLock贪贪状 7Insert贪贪状4 第1章 贪吃蛇游贪;TC 2.0贪贪, 1.2.2 initgraph()函和数closegraph()函数 1,initgraph()函数 initgraph()函的功能是初始化贪形系贪。数 函原型,数 void far initgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver); 2,closegraph()函数 closegraph()函的功能是贪贪贪形系贪。数 函原型,数 void far closegraph(void); 1.2.3 setbkcolor()函数 setbkcolor()函用指定的贪色贪贪置前的背景色~如果指定的贪色贪超出了前贪贪的表示范贪~贪贪数来当当 置贪最近似的、贪贪可以表示的贪色。 函原型,数 COLORREF SetBkColor( HDC hdc, COLORREF crColor ); 参数贪明如下。 ,hdc,贪置上下文句柄。 ,crColor,贪贪新的背景贪色贪。如果想要贪得COLORREF的贪~贪使用RGB宏。 如果函成功~返回贪是原背景色的数COLORREF贪~如果函失贪~贪返回数CLR_INVALID。1.2.4 outtextxy()函数 outtextxy()函在指定位置贪示一字符串。数 函原型,数 void far outtextxy(int x, int y, char *textstring);1.2.5 settextstyle()函数 settextstyle()函用于贪贪形贪出贪置前的文本性。数当属 5 C贪言贪目贪贪全程贪贪 函原型,数 void far settextstyle(int font, int direction, char size); 函的贪明如表数参数1.4所示。 表1.4 settextstyle()函的贪明数参数参数 贪 明 字。取贪贪体DEFAULT_FONT、TRIPLEX_FONT、SMALL_FONT、SANSSERIF_FONT或GOTHIC_ fontFONT~也可以用0,4代替 direction字符的排列方向~包括向和贪向~横0贪向排列~横1贪贪向排列size字大小。可用体interger作参数 1.2.6 setcolor()函数 setcolor()函用于贪置前幕的贪色。数当屏画笔 函原型,数 void setcolor (int color); 1.2.7 getch()函数 getch()函用于控制台无回贪地贪取一字符。数从个 函原型,数 int getch(void); 返回贪,贪贪上贪取到的字符。从 在Windows/MS-DOS中~可以利用getch()函使程序贪贪贪束后等待贪程者按下贪贪才返回贪贪界面。贪函数 数包含在贪文件conio.h中。在使用贪~在主函贪尾“数return 0;”之前加上getch()即可。 getch()函可以贪系贪在用贪按下任意贪而不需要按数Enter贪贪就可以接收到用贪的贪入~可以用作贪来 press anykey to continue的贪贪。 1.3 程序贪贪理模贪1.3.1 文件引用 在本游贪系贪中需要引用一些贪文件~以便程序更好地行。引用贪文件需要使用运#include命令~下面 6 第1章 贪吃蛇游贪;TC 2.0贪贪, 即是要引用的文件和引用代贪~贪贪代贪如下, #include/*贪入/贪出函数*/#include/*常用子程序*/#include/*贪用DOS控制台I/O*/#include /*贪形贪文件*/#include/*MS-DOS和8086贪用的一些常量和函数*/ 1.3.2 宏定贪 宏定贪也是贪贪理命令的一贪~以#define贪贪~提供了一贪可以替贪源代贪中字符串的机制。本系贪用贪使将 用贪贪操作贪吃蛇贪使用的方向贪的贪贪定贪贪宏。定贪形式如下,#define LEFT 0x4b00/*向左贪*/#define RIGHT 0x4d00/*向右贪*/#define DOWN 0x5000/*向下贪*/#define UP 0x4800/*向上贪*/#define Esc 0x011b/*Esc退出贪*/#define N 100/*贪吃蛇的最大贪度*/ 1.3.3 声构体明贪 food是表示食物基本信息的贪~构体snake是定贪贪吃蛇基本信息的贪~明贪的代贪如下,构体声构体struct food { int x; /*食物的坐贪横*/ int y; /*食物的贪坐贪*/ int flag; /*贪志是否要出贪食物*/} food; struct snake { int x[N]; int y[N]; int node; /*蛇的贪数*/ int dir; /*蛇移贪方向*/ int life; /*贪志是死是活*/} snake; 7 C贪言贪目贪贪全程贪贪 1.3.4 函明数声 在本程序中使用了自定贪的函~贪些函的功能及明形式如下,几个数数声 void GameOver();/*贪束游贪*/void Play();/*玩游贪贪程*/void dwall();/*画*/贪void wall(int x,int y);/*画贪成贪的贪*/int Speed();/*贪贪贪吃蛇的速度*/ 1.4 主函模贪贪贪数 程序行后~首先运从main()函贪始~在数main()主函中~首先贪贪形化界面贪行初始化~贪用自定贪数 函数Speed()贪取蛇的行贪速度~然后贪贪始游贪。贪贪代贪如下,清屏画 main() { int gdriver=DETECT,gmode; initgraph(&gdriver,&gmode,""); speed=Speed();/*将数函返回贪贪贪speed*/ cleardevice();/*清屏*/ dwall();/*贪始贪画*/ Play();/*贪始玩游贪*/ getch(); closegraph();/*退出贪形界面*/} 1.5 速度贪贪界面1.5.1 模贪述概 本模贪主要贪贪贪游贪贪度水平的贪贪。玩家在本界面贪贪好游贪的贪度后就可以贪入相贪的游贪界面~如贪1.4所 示。 8 第1章 贪吃蛇游贪;TC 2.0贪贪, 贪1.4 游贪主界面 1.5.2 速度贪贪界面的贪贪 自定贪speed()函~用贪贪贪吃蛇的速度~程序代贪如下,数来 int speed() /*贪贪贪吃蛇行的速度运*/{ int m; gotoxy(20, 10); printf("level1\n"); gotoxy(20, 12); printf("level2\n"); gotoxy(20, 14); printf("level3\n\t\tplease choose:"); scanf("%d", &m); switch (m) { case 1: return 60000; case 2: return 40000; case 3: return 20000; default: cleardevice(); Speed(); } } 1.6 画数贪函的贪贪 1.6.1 模贪述概 本模贪主要是贪贪贪~贪吃蛇撞到贪后~游贪贪束。本游贪中的贪如贪画画1.5所示。 9 C贪言贪目贪贪全程贪贪 贪1.5 画贪的界面 1.6.2 画数贪函的贪贪 自定贪dwall()函~用贪~程序代贪如下,数来画 void dwall() /*用前面好的贪贪画来画*/{ int j; for (j = 50; j <= 600; j += 10) { wall(j, 40); /*画上面贪*/ wall(j, 451); /*画下面贪*/ } for (j = 40; j <= 450; j += 10) { wall(50, j); /*画左面贪*/ wall(601, j);/*画右面贪*/ } } 在上面代贪中贪用了一函个数wall()~贪函主要是用贪成贪的贪~通贪循贪贪出贪贪~形成游贪需要的贪数来画 贪~贪贪代贪如下, void wall(int x,int y) { int sizx=9; int sizy=9; setcolor(15);/*白色贪的上贪和左贪画*/ line(x,y,x+sizx,y); line(x,y+1,x+sizx-1,y+1); line(x,y,x,y+sizy); 10 第1章 贪吃蛇游贪;TC 2.0贪贪, line(x+1,y,x+1,y+sizy-1); setcolor(4);/*贪色贪的右面和下面画*/ line(x+1,y+sizy,x+sizx,y+sizy); line(x+2,y+sizy-1,x+sizx,y+sizy-1); line(x+sizx-1,y+2,x+sizx-1,y+sizy-1); line(x+sizx,y+1,x+sizx,y+sizy); setfillstyle(1,12);/*用淡贪色充贪的中贪部分填*/ bar(x+2,y+2,x+sizx-2,y+sizy-2); } 1.7 游贪行函的贪贪运数 1.7.1 模贪述概 在自定贪函数play()中~主要贪贪了贪吃蛇游贪的具贪程。在游贪贪程中~程序判贪贪贪入的贪贪~如使体会断 用上、下、左、右方向贪控制贪吃蛇的贪方向~贪贪贪食物出贪位置的控制。本游贪行界面如贪来运并运1.6所示。 贪1.6 游贪行界面运 1.7.2 游贪行函的贪贪运数 自定贪play()函~用贪贪贪吃蛇游贪的具贪程~程序代贪如下,数来体 void play(void) /*游贪贪贪贪程*/ { srand((unsigned long)time(0)); food.flag = 1; /*1表示需出贪新食物~0表示食物已存在*/ 11 C贪言贪目贪贪全程贪贪 snake.life = 0; /*贪志贪吃蛇活着*/ snake.dir = 1; /*方向向右*/ snake.x[0] = 300; snake.y[0] = 240; /*定位蛇贪初始位置*/ snake.x[1] = 290; snake.y[1] = 240; snake.node = 2; /*贪食蛇贪数*/ do { while (!kbhit()) /*在有按贪的情下~蛇自己移贪身没况体*/ { if (food.flag == 1)/*需要出贪新食物*/ do { food.x = rand() % 520+60; food.y = rand() % 370+60; food.flag = 0; /*贪志已有食物*/ } while (food.x % 10 != 0 || food.y % 10 != 0); if (food.flag == 0)/*画出食物*/ { setcolor(GREEN); setlinestyle(3, 0, 3); 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]; } switch (snake.dir) { case 1: snake.x[0] += 10; break;/*向右移*/ case 2: snake.x[0] -= 10; break; /*向左移*/ case 3: snake.y[0] -= 10; break; /*向上移*/ case 4: 12 第1章 贪吃蛇游贪;TC 2.0贪贪, snake.y[0] += 10; break; /*向下移*/ } for (i = 3; i < snake.node; i++) { if (snake.x[i] == snake.x[0] && snake.y[i] == snake.y[0])/*判蛇是否吃到自己断*/ { GameOver(); /*游贪贪束*/ snake.life = 1; /*蛇死*/ break; } } if (snake.x[0] < 60 || snake.x[0] > 590 || snake.y[0] < 50 || snake.y[0] > 440)/*蛇是否撞到贪壁*/ { GameOver(); /*游贪贪束*/ snake.life = 1; /*蛇死*/ break; } if (snake.x[0] == food.x && snake.y[0] == food.y)/*判是否吃到食物断*/ { setcolor(0);/*用背景色遮盖掉食物*/ rectangle(food.x, food.y, food.x + 10, food.y + 10); snake.node++;/*蛇的身贪一贪体*/ food.flag = 1;/*需要出贪新的食物*/ } setcolor(4);/*画蛇*/ for (i = 0; i < snake.node; i++) { setlinestyle(0, 0, 1); rectangle(snake.x[i], snake.y[i], snake.x[i] + 10, snake.y[i] +10); } delay(speed); setcolor(0);/*用背景色遮盖蛇的最后一贪*/ rectangle(snake.x[snake.node - 1], snake.y[snake.node - 1], snake.x[snake.node - 1] + 10, snake.y[snake.node - 1] + 10); } if (snake.life == 1)/*如果蛇死就跳出循贪*/ break; key = bioskey(0);/*接收按贪*/ if (key == UP && snake.dir != 4)/*判是否断往相反的方向移贪*/ snake.dir = 3; 13 C贪言贪目贪贪全程贪贪 else if (key == DOWN && snake.dir != 3)/*判是否断往相反的方向移贪*/ snake.dir = 4; else if (key == RIGHT && snake.dir != 2)/*判是否断往相反的方向移贪*/ snake.dir = 1; else if (key == LEFT && snake.dir != 1)/*判是否断往相反的方向移贪*/ snake.dir = 2; } while (key != Esc);/*按Esc贪退出游贪*/} 1.8 游贪贪束界面的贪贪 1.8.1 模贪述概 在蛇撞贪死后~游贪贪出游贪贪束的界面。本游贪中贪束界面如贪会1.7所示。 贪1.7 游贪贪束界面 1.8.2 游贪贪束界面的贪贪 自定贪GameOver()函~用提示游贪贪束~程序代贪如下,数来 void GameOver(void) { cleardevice(); setcolor(RED); /*贪置字贪贪色体*/ settextstyle(0, 0, 4); outtextxy(50, 200, "GAME OVER,BYE BYE!"); sleep(3); } 14 第1章 贪吃蛇游贪;TC 2.0贪贪, 1.9 贪 贪 贪 贪 贪吃蛇游贪是一款老少皆宜的贪典游贪~其基本贪贪是,通贪按贪贪的上、下、左、右贪控制蛇行的方向来运~当体当蛇吃了食物后身贪度自贪增加~蛇撞贪或吃到自身贪贪蛇死。本章通贪贪贪吃蛇游贪程序的介贪~使贪者了解一贪贪的游贪程序贪贪的基本思路和贪程~加个并深贪贪形贪像技贪的理解~贪今后程序的贪贪奠定基贪。 15
/
本文档为【贪吃蛇游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索