snak.rar

  • xxh_525
    了解作者
  • C/C++
    开发工具
  • 55KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 6
    下载次数
  • 2007-09-18 10:31
    上传日期
本源码是基于TC环境,采用标准C开发.运用队列的方式实现贪吃蛇游戏.
snak.rar
  • 贪吃蛇
  • BEISUC~1.OBJ
    3.6KB
  • succss.c
    10KB
  • SUCCSS.OBJ
    3KB
  • BEISUC~1.EXE
    31.3KB
  • BEISUC~1.MAP
    16.2KB
  • SUCCSS.MAP
    16KB
  • SUCCSS.EXE
    31KB
  • beisuccss.c
    11.1KB
  • www.pudn.com.txt
    218B
内容介绍
#include<stdlib.h> #include"graphics.h" #include"dos.h" #define up 0x4800 #define down 0x5000 #define left 0x4b00 #define right 0x4d00 #define esc 0x011b #define A 30 int speech=2000; int speech1=2000; int life=1,length=3,key,score=30; struct FOOD{ int xx; int yy; }food; /* 用结构体来定义食物的位置 */ struct SNAK{ int x; int y; int direction; struct SNAK *next; }; /* 定义一个链表用来存储要显示的食物的位置 */ struct SNAK *front,*rear,*p,*t; /* front为头节点,rear为尾节点,另外定义的用做中间转换量 */ /* ======================================================================================= */ /* ===========初始化图形(图形驱动)和画出界面============================================ */ void init() { int gdriver=DETECT,gmode; int i,j; /* void *buf; */ registerbgidriver(EGAVGA_driver); initgraph(&gdriver,&gmode,""); setbkcolor(0); /* 设置背景色为黑色 */ cleardevice(); setcolor(15); /* 设置的框图颜色 */ for(i=0;i<30;i++) /* 绘制一个x=[35:605],y=[44:464]的平面框图 */ { bar((20+i*20),29,(20+(i+1)*20),44); bar((20+i*20),464,(20+(i+1)*20),479); } /* end for */ for(j=0;j<21;j++) { bar(20,(44+j*20),35,(44+(j+1)*20)); bar(605,(44+j*20),620,(44+(j+1)*20)); } /* end for */ } /* end init() */ /* ================================================================================================ */ /* =================记录分数并显示函数============================================================= */ void totalscore(void) { char str[20]; setcolor(0); sprintf(str,"score:%d",score-10); outtextxy(22,22,str); setcolor(GREEN); sprintf(str,"score:%d",score); outtextxy(22,22,str); } /* ================================================================================================ */ /* =================关闭图形驱动================================================================== */ void close(void) { closegraph(); } /* ============================================================================================== */ /* ================显示最终分数和"game over!" 字符 */ void gameover(void) { setcolor(4); outtextxy(200,200,"game over!"); getch(); } /* ============================================================================================= */ /* =================显示链式队列的各个食物且背景色为白色======================================== */ void show(int a) { int i,x1,y1; t=front->next; /* 取出队列的第一个值的地址传递给t */ for(i=length;i>0;i--) { x1=t->x; y1=t->y; if(a==1) setcolor(15); /* 设置背景色为白色 */ else if(a==0) setcolor(0); rectangle(x1-5,y1,x1,y1+5); /* 画矩形x1,y1为右上角坐标 */ t=t->next; /* 将t所对应的下一个值的地址传送给t */ } /* end for */ } /* end show() */ /* =============================================================================================== */ /* =================消隐函数====================================================================== */ /*void hide(void) { int i,x1,y1; t=front->next; for(i=length;i>0;i--) /* 取出队列中的每个元素,将其颜色设置为背景色即可 */ { x1=t->x; y1=t->y; /* if(1) */ /* setcolor(15); */ /* else */ setcolor(0); /* 与show(0)作用相同 */ rectangle(x1-5,y1,x1,y1+5); t=t->next; } /* end for */ } /* end hide() */ */ /* =============================================================================================== */ /* ===============向前移动函数=================================================================== */ void cdirection(key) { int i; show(0); /* 将原来的图形隐藏 */ t=(struct SNAK *)malloc(sizeof(struct SNAK)); /* 分配一个存放数据的空间 */ t->y=rear->y; t->x=rear->x; /* 将原来尾节点的部分数据存放到新分配的数据空间 */ t->direction=key; t->next=NULL; switch(key) { case up:t->y=rear->y-5;break; case down:t->y=rear->y+5; break; /* 改变部分原来的数据如x或y的值(根据尾指针的方向) */ case right:t->x=rear->x+5;break; case left: t->x=rear->x-5;break; default:break; } /* end swicth */ /* 将新的存放数据的指针为尾指针 */ rear->next=t; rear=t; /* 同时删除头节点,取下一个节点为头节点 */ p=front->next; front->next=p->next; show(1); /* 调用显示函数 */ for(i=A;i>0;i--) /* 此处的延迟为了调整运行速度 */ { delay(speech1); }/* end for */ } /* end cdirection() */ /* ==================================================================================================== */ /* ==================加长处理函数====================================================================== */ void dealwith(void) { int i; show(0); /* 隐藏原来的图形(隐藏函数) */ length=length+1; /* 长度加1 */ score=score+10; totalscore(); t=(struct SNAK *)malloc(sizeof(struct SNAK)); /* 分配一个存放数据的空间,用于作为尾节点 */ t->y=rear->y; t->x=rear->x; /* 确立尾节点的部分值 */ t->direction=rear->direction; t->next=NULL; switch(key) { case up:t->y=rear->y-5;break; case down:t->y=rear->y+5; break; case right:t->x=rear->x+5;break; case left: t->x=rear->x-5;break; default:break; } /* end switch */ rear->next=t; /* 建立新的尾指针 */ rear=t; show(1); if(speech<=0); {speech=500; speech1=speech1-300; } /* 调用显示函数 */ } /* end dealwith() */ /* ================================================================================================== */ /* ===============产生食物函数====================================================================== */ void needfood(void) { /* randomize(); */ food.xx=rand()%250+60; /* 确定food.xx的范围为60--310 */ food.yy=rand()%200+69; /* 确定food.yy的范围为69--269 */ while((food.xx-35)%5!=0) /* 为保证食物在整格内,才能被吃掉 */ food.xx++; while((food.yy-44)%5!=0) food.yy++; setcolor(4); /* 设置食物的颜色为红色 */ rectangle(food.xx-5,food.yy,food.xx,food.yy+5); /* 显示食物 */ speech=speech-500; } /* end needfood() */ void playgame(void) { int i,j; life=0; /* 标志符,0表示活的,1表示死亡 */ needfood(); /* 出现一个食物 */ rear=front=(struct SNAK *)malloc(sizeof(struct SNAK));/* 开辟两个存储空间,建立队列 */ t=(struct SNAK *)malloc(sizeof(struct SNAK)); /* 新建立一个存储空间存放初始值,用于插入尾节点 */ t->x=60; t->y=64; t->direc
评论
    相关推荐
    • SNAK.rar
      介绍了一种改进的Snake模型,在病灶模型中的应用,是一种比较好的方法
    • snak.rar
      一个小游戏的原代码。贪吃蛇程序。vc环境下编译通过
    • snak.zip
      TC 编写的贪吃蛇 如果不能在Windows下运行请 用可以开机启动的U盘进DOS 在DOS下运行,里面包含了BGI 的文件,没这个BGI的文件是无法运行的。 ...源代码是用C写的,压缩包里附带 源代码 及 执行程序。...
    • Snak.rar
      贪吃蛇小游戏 用java 语言简单实现 仅提供参考
    • snak.rar
      JavaScript实现的贪吃蛇游戏 功能:蛇吃食物有三种情况:走到的地方有食物;走到的地方没有食物;走到的地方是墙壁。吃到食物后,蛇的身体会变长;碰到墙壁后 Game Over,询问是否重新开始。
    • 2p_snak:我使用python编码的2个(或1个)玩家蛇游戏,尝试在其中学习机器学习
      2p_snak 你好,地球人! 这是一个可调整的2(或1)玩家蛇游戏,我使用python pygame库进行了编码,以尝试机器学习。 特别是,我选择了NEAT算法,因为它看起来很优美,有据可查,而且最重要的是,我发现它很酷,与...
    • devouringly snak
      devouringly snak cocos2d-x iOS 源代码
    • machine_learning_from_scratch_matlab_python:Python中的矢量化机器学习:snak
      从头开始使用Python进行机器学习 向量化的Python :snake: 仅使用 , 和与octave / matlab中提供的和个人完成的代码尽可能相似的代码,这是斯坦福大学出色的Coursera机器学习课程的一部分。 该课程由( )讲授,并且...
    • snak:一个由socket.io构建并由Tailwind使其美观的MEAN聊天应用程序
      欢迎来到 。 旨在将您与世界联系起来的聊天应用程序。 “ Det at Nogen Snakker venskabeligt,Afslappet eller uformelt med Nogen ”- 这是一个聊天工具,该聊天应用程序是使用TypeScript完全开发的MEAN堆栈构建...
    • snowglobe-src-viewer-2.0.0-r0.tar.gz
      国外的开源游戏引擎,能够承载上千人,属于社交类的游戏