像贪食蛇一样的机器龙手机游戏贪食蛇

C语言要学到什么程度才可以编一个像贪吃蛇的一个软件?_百度知道
C语言要学到什么程度才可以编一个像贪吃蛇的一个软件?
1、对语言有一个大致的了解(语法,函数调用,诸如结构的数据类型),如果再参考下别人的代码,基本就可以写出来了,简单的不一定要用到链表。关键是写代码需要热情,因为思考,分析,尤其是调试都是特别打击人的。2、贪吃蛇例程:#include&&stdio.h&#include&&graphics.h&#include&&stdlib.h&#include&&dos.h&&/*引用的库函数*/#define&LEFT&0x4b00#define&RIGHT&0x4d00#define&DOWN&0x5000#define&UP&0x4800#define&ESC&0x011b/*宏定义键名*/#define&N&200int&i,int&/*游戏等级*/int&score=0;/*得分*/int&/*游戏速度*/struct&Food{int&x;/*食物的横坐标*/int&y;/*食物的纵坐标*/int&/*判断是否要出现食物的变量*/}/*食物的结构体*/struct&Snake{int&x[N];int&y[N];int&/*蛇的节数*/int&/*蛇移动方向*/int&/*&蛇的生命,0活着,1死亡*/}/*蛇的结构体*/void&Choicelevle(void);/*选择游戏等级*/void&Init(void);/*图形驱动*/void&Close(void);/*图形结束*/void&DRAW(void);/*游戏区域*/void&GameOver(void);/*结束游戏*/void&GamePlay(void);/*玩游戏具体过程*/void&PrScore(void);/*输出成绩*//*主函数*/void&main(void){Init();/*图形驱动*/Choicelevle();/*选择游戏等级*/DRAW();/*游戏区域*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void&Init(void){int&gd=DETECT,initgraph(&gd,&gm,&\\turboc2&);&/*初始化图形系统*/cleardevice();&/*清除图形界面*/}/*选择游戏等级*/void&Choicelevle(void){char&name[20];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,&Snake&);setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,&please&put&in&your&English&name:&);outtextxy(200,270,&Choice&levle&from&1-9.&);outtextxy(300,320,&name:yangzilong&);/*制作人姓名*/outtextxy(300,350,&number:&);/*制作人学号*/outtextxy(300,380,&class:computer&science&0602&);/*制作人班级*/getch();printf(&please&putin&your&name:&);gets(name);printf(&please&choice&levle:&);scanf(&%d&,&level);gamespeed=*level-300*level*if(level&9||level&1){cleardevice();&/*清除图形界面*/setcolor(YELLOW);&/*设置字体颜色*/settextstyle(0,0,2);&/*设置字体类型*/outtextxy(150,200,&level&input&error&);&/*显示文本*/getch();level=1;}}void&DRAW(void){cleardevice();&/*清屏*/setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/rectangle(45,45,465,325);}/*玩游戏具体过程*/void&GamePlay(void){setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=320;snake.y[0]=240;/*蛇头*/snake.x[1]=330;snake.y[1]=240;&/*蛇的第二节位置*/snake.node=3;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);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];}/*1,2,3,4表示右,左,上,下四个方向,通过这个控制来移动蛇头*/switch(snake.direction){case&1:&snake.x[0]+=10;case&2:&snake.x[0]-=10;case&3:&snake.y[0]-=10;case&4:&snake.y[0]+=10;}for(i=3;i&snake.i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver();/*显示失败*/snake.life=1;&/*蛇死*/}}/*如果蛇头碰到墙壁,蛇头从对面墙出来*/if(snake.x[0]&50){snake.x[0]=450;/*如果蛇头越过左边界,则从右边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i&0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];&/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);&/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.x[0]&450){snake.x[0]=50;/*如果蛇头越过右边界,则蛇头从左边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i&0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];&/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);&/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]&60){snake.y[0]=320;/*如果蛇头越过上边界,则从下边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i&0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];&/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);&/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]&320){snake.y[0]=60;/*如果蛇头越过下边界,则从上边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i&0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];&/*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0);&/*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}if(snake.life==1)/*如果蛇死就跳出内循环,重新开始*/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;&/*每吃掉一食物,得分累加10分*/if(score%100==0){level++;gamespeed=*level-300*level*/*每吃掉10食物提升一级,速度加快*/PrScore();/*输出新得分*/setcolor(YELLOW);&/*设置字体颜色*/settextstyle(0,0,4);&/*设置字体类型*/outtextxy(150,200,&LEVEL&UP&);&/*显示文本*/if(level==10){level=1,gamespeed=*level-300*level*}delay(6000000);&delay(6000000);&delay(6000000);&delay(6000000);&delay(6000000);delay(6000000);&delay(6000000);bar(50,55,455,315);/*bar是表示填充的范围的函数*/}PrScore();/*输出新得分*/&}&setcolor(4);/*画出蛇*/&for(i=0;i&snake.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)/*如果蛇死就跳出循环*/&&key=bioskey(0);/*接收按键*/&if(key==ESC)/*按ESC键退出*/&&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&str1[20];/*设置字符型数组*/&setfillstyle(SOLID_FILL,0);&bar(50,15,390,35);&/*填充矩形框*/setcolor(6);&/*设置文本颜色*/settextstyle(0,0,2);&/*设置数组显示位置*/sprintf(str1,&score&%d&level&%d&,score,level);/*显示数组内容*/outtextxy(55,20,str1);&setcolor(YELLOW);&/*设置字体颜色*/settextstyle(0,0,2);&/*设置字体类型*/outtextxy(250,400,&EXIT=ESC&&);/*显示文本*/}&void&Close(void)&{&closegraph();&}
其他类似问题
为您推荐:
提问者采纳
关键是写代码需要热情,尤其是调试都是特别打击人的,对语言有一个大致的了解(语法我大一的时候编程的结业任务就是做了个这个,那时我还是小白,因为思考,函数调用,如果再参考下别人的代码,简单的不一定要用到链表。以我的个人经历来看,基本就可以写出来了,诸如结构的数据类型),呵呵,分析
哦对了,再送你个小贴士吧,目前windows主流的c编译器(vc,devc++,vs)都没有专门的图形库,你需要下载一个(例如graphics)或者用比较老的turbo c,不过我估计你用不惯,呵呵。
我是个初学者最近才刚开始接触编程,如果我要弄这么一个软件估计还有一段很长的路要走
提问者评价
太给力了,你的回答完美解决了我的问题!
其他2条回答
要一点数据结构基础。图像方面就有很多图形库选择了;Linux,终端上,还需要一点WinAPI的知识,如果是在Windows上开发,可以用ncurses。如果是Unix&#47
链表会了基本就没问题。
贪吃蛇的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁找一款很老的小游戏:操纵一条绿龙跳来跳去,有很多关卡,冰雪世界,丛林,火山,记得里面还有个帽子移动_百度知道
找一款很老的小游戏:操纵一条绿龙跳来跳去,有很多关卡,冰雪世界,丛林,火山,记得里面还有个帽子移动
牛奶,胶卷可以吃橘子,巧克力,汽油
我有更好的答案
其他类似问题
为您推荐:
绿龙的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您当前的位置: &
& 组装机器龙
热搜排行榜504 Gateway Time-out
The server didn't respond in time.&&问题详情
小时候玩过的龙珠游戏。世嘉的游戏好像是。万利达VCD里的游戏,一个机器可以往外蹦恐龙蛋,过一会可以孵化
出各种恐龙,有剑龙和三角龙,这俩恐龙吃草可以涨钱,还有霸王龙和不知道叫什么名字的恐龙,反正是能打架的恐龙,跟电脑的生物对打。还有个专门吃恐龙蛋的龙,还有翼龙。吃吃的草恐龙累了就得给下雨浇水,不然就会渴死。还有打雷可以P对方的不知名生物。菜单上的名字就是叫龙珠。我很喜欢玩,现在找不到这款游戏了。谁知道这个游戏的真实名字,下载地址,不胜感激,有好多分。多谢啦
您的回答过短,请将答案描述得更清楚一些
世嘉MD上的《恐龙兄弟》,一共有两代
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
Copyright &
Shang Hai Jing Rong Xin Xi Ke Ji You Xian Gong Si
上海旌荣信息科技有限公司 版权所有
客服电话: 400-850-8888 违法信息举报邮箱:

我要回帖

更多关于 贪食蛇游戏 的文章

 

随机推荐