MFC和AGK那个适合初学者看的英文书写小游戏(比如贪吃蛇)

手把手教你贪吃蛇如写编写【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:545,661贴子:
手把手教你贪吃蛇如写编写收藏
1L,请有一点点c语言基础的新手进入,高手莫要见笑。楼主初三党,更新不定时,请轻喷。。。
首先我们需要以下几个东西:1.结构体,用来纪录蛇的坐标,笑脸的坐标,障碍的坐标。2.getch(),现在很多人都拿这个来作为程序的最后一步,而忽略了本身的功能,可以用这个来获取方向键信息3.kbhit(),用来判断是否有键盘输入大概就是这样。。。接下来便是如何写具体的代码
至今都没撸出来的给跪了
赶上直播了么、
赶上了么?
还有一个很重要的东西我给忘了,那就是让光标移动到某个点。对于我们这种还不会mfc的新手而言,只能在那个小黑屏上作文章了:HANDLE
coord.X=3;//这个是横坐标
coord.Y=3;//这个是纵坐标,等式右边是具体值
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);至于具体的解释,楼主也不懂。。。反正就这样用就对了。。呵呵
楼主初三党,前面一直在上课。。。请见谅
#include&stdio.h&#include&windows.h&#include&stdlib.h&#include&time.h&#include"conio.h"
以上是所有的头文件:1.这个众所周知2.这个是windows头文件,很多函数都要用到,这里的作用就是提供那个光标移动的函数,就是HANDLE hout.....3.这个我也忘了是干嘛用的。。。4.这个提供之后随机数的时间种子5.这个提供getch()函数
struct Snake{
}snake[150];struct Smile{
}smile[3];struct Cross{
}cross[5];//三种结构体纪录坐标
void screen(){
for(i=57;i&=58;i++)
for(j=0;j&=24;j++)
coord.X=i;
coord.Y=j;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);
printf("/");
for(j=23;j&=24;j++)
for(i=0;i&=56;i++)
coord.X=i;
coord.Y=j;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);
printf("/");
上面这个函数,看起来很复杂,其实就是为那个难看的黑屏画上一个边界,游戏者也方便玩。。。两个for循环,用/来完成边界绘画
教程贴好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多好多啊....
static int length=3;
static int direction=2;
length是蛇的长度-1,为什么是-1呢。。。因为数组是从第0个开始的,所以第length个数组就是第length+1节direction是方向,上下左右对应1234,这个是方便之后获取方向键信息然后作出移动temp是一个存放时间间隔的值,也就是说比如temp是1000,那么每隔一秒执行一次,之后会详细说明
void rubber(){
coord.X=snake[length].x;
coord.Y=snake[length].y;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);
printf(" ");}
哇靠,初三党!?厉害啊。
赶上了么???
初三 好厉害 至今还没撸出来 ps:老子都大二了。。。。
从上面这个函数开始就进入正轨了:首先明确一下思路:先获取方向键信息作出判断,让蛇头坐标加一减一之类的,然后判断,因为蛇的身体走的都是蛇头走过的路线,所以如果蛇头安全,蛇的身体也安全,所以每次只要判断蛇头,判断新的蛇头坐标是否和障碍坐标重合,是否越过边界,是否吃到笑脸,全部结束之后(如果还有之后没有撞死的话),将最后一节的地方变成空格(即擦去,在游戏者眼里就是向前移动了一格),最后将后面的每一个snake〔i〕的坐标都变成snake〔i-1〕的坐标,一个循环就结束了。。。而rubber()正是实现了擦去最后一节的伟大使命
void screen1(){
for(i=0;i&=80;i++)
for(j=0;j&=30;j++)
coord.X=i;
coord.Y=j;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);
printf(" ");
如果你可以顺利的使用清屏函数,请无视上面这个。。。楼主就是用不出清屏函数才自己写了一个。。。clrscr();在别的地方都可以,就是这里用不出来。。。
void ide1(){
int i,j=0;
for(i=1;i&=i++)
{if((snake[0].x==snake[i].x)&&(snake[0].y==snake[i].y)) exit(1);
上面这个函数就是在每一步之后判断有没有撞倒自己。。。很简单的函数就不赘述了
void over(){
int i=0;if(((snake[0].x&=57)||(snake[0].x&0))||((snake[0].y&=23)||(snake[0].y&0)))exit(1);}
登录百度帐号推荐应用

我要回帖

更多关于 适合初学者的钢琴简谱 的文章

 

随机推荐