1.本人想用MFC做一个贪吃蛇
我以前用WIN32做过一个贪吃蛇,MFC没有必要。
1,要用MFC的话,只需要建立一个窗口,可以去掉那些没有必要的文档视图 类,只留下一个自制的窗口类。当然既然要用MFC,一些基本的消息映射还是应该明白的,其他过多的用不到什么了。
2,当初我的初始化的画面是在程序加载的时候在窗口上覆盖一个图片,当接到开始的命令时进入游戏逻辑部分。
3,根据第一条,现在只剩下了窗口类和你自己建立的类了(比如蛇类)画面的现实自然在窗口类的消息响应中完成,至于其他逻辑部分,当然在你自己的类中完成了。
最后,建议你找找别人的源代码学习学习。
2.本人想用MFC做一个贪吃蛇
我以前用WIN32做过一个贪吃蛇,MFC没有必要。
1,要用MFC的话,只需要建立一个窗口,可以去掉那些没有必要的文档视图 类,只留下一个自制的窗口类。当然既然要用MFC,一些基本的消息映射还是应该明白的,其他过多的用不到什么了。
2,当初我的初始化的画面是在程序加载的时候在窗口上覆盖一个图片,当接到开始的命令时进入游戏逻辑部分。3,根据第一条,现在只剩下了窗口类和你自己建立的类了(比如蛇类)画面的现实自然在窗口类的消息响应中完成,至于其他逻辑部分,当然在你自己的类中完成了。
最后,建议你找找别人的源代码学习学习。
3.求份详细的贪吃蛇课程设计报告
贪吃蛇游戏----《C程序设计课程设计》
一、设计要求
编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。
二、设计内容
1.游戏界面:边框表示围墙,红色矩形代表蛇,绿色小方块代表食物。
2.设计思路
这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。
3.数据结构
#define N 200
stuct Food
{
int x ; /*食物的横坐标*/
int y ; /*食物的纵坐标*/
int yes ; /*判断是否要出现食物的变量*/
}food /*食物的结构体*/
struct Snake
{
intx[N]; /*蛇的横坐标*/
inty[N]; /*蛇的纵坐标*/
intnode; /*蛇的节数*/
intdirection; /*蛇的移动方向*/
intlife; /*蛇生命,0活着,1死亡*/
}snake;
4.主要函数
1)主函数main():初始化图形系统,调用DrawK()画出开始画面,调用函数Gameplay(),即玩游戏过程,游戏结束后调用Close()关闭图形系统,结束程序。
2)画界面函数DrawK();
3)游戏具体过程函数Gameplay();
4)游戏结束函数Gameplay(),游戏结束,清除屏幕,输出分数,显示游戏结束信息。
5)PrScore(),输出分数。
6)Close()函数图形结束。在显示游戏结束信息的画面时,按任意键关闭图形系统,结束程序。
4.能帮我写份详细的贪吃蛇游戏课程设计报告不
struct Food{ int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{ int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){ Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/}/*图形驱动*/void Init(void){ int gd=DETECT,gm; initgraph(&gd,&gm,"c:\tc"); cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { snake。
x[i]=snake。x[i-1]; snake。
y[i]=snake。y[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake。
direction) { case 1:snake。x[0] =10;break; case 2: snake。
x[0]-=10;break; case 3: snake。 y[0]-=10;break; case 4: snake。
y[0] =10;break; } for(i=3;i595||snake。 y[0]455)/*蛇是否撞到墙壁*/ { GameOver();/*本次游戏结束*/ snake。
life=1; /*蛇死*/ } if(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。
x[snake。node]=-20;snake。
y[snake。node]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake。
node ;/*蛇的身体长一节*/ food。yes=1;/*画面上需要出现新的食物*/ score =10; PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i node;i ) rectangle(snake。
x[i],snake。y[i],snake。
x[i] 10, snake。y[i]-10); delay(gamespeed); 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); } /*endwhile(!kbhit)*/ if(snake。
life==1)/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break; else if(key==UP&&snake。 direction!=4)/*判断是否往相反的方向移动*/ snake。
direction=3; else if(key==RIGHT&&snake。 direction!=2) snake。
direction=1; else if(key==LEFT&&snake。 direction!=1) snake。
direction=2; else if(key==DOWN&&snake。 direction!=3) snake。
direction=4; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();}/*输出成绩*/void PrScore(void){ char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2);。
转载请注明出处众文网 » mfc贪吃蛇毕业论文