您好,欢迎光临本网站![请登录][注册会员]  
文件名称: c++纯贪吃蛇(全变
  所属分类: 其它
  开发工具:
  文件大小: 26kb
  下载次数: 0
  上传时间: 2016-01-28
  提 供 者: qq_33******
 详细说明: #include #include #include #include #include const int size=13,gameSpeed=500; class node { private: int x; int y; node *next; public: node(); void changeX(int X); void changeY(int Y); void changeNext(node *N); int getX(); int getY(); node *getNext(); }; node::node() { x=0; y=0; next=NULL; } int node::getX() { return x; } int node::getY() { return y; } void node::changeX(int X) { x=X; } void node::changeY(int Y) { y=Y; } void node::changeNex t(node *N) { next=N; } node *node::getNext() { return next; } class linkList { protected: node *head; public: linkList();//制造一个有头结点的线性表 int getLength(); node *getNode(int i);//i:0-n int getIndex(node *e);//i:1-n,没有返回0 node *getPriorNode(node *e); node *getNextNode(node *e); void insert(int i,node *e);//i:1-(n+1) void Delete(int i); }; linkList::linkList() { head=new node; head->changeNext(NULL); } int linkList::getLength() { node *p=head->getNext(); int i=0; while(p) { i++; p=p->getNext(); } return i; } node *linkList::getNode(int i) { node *p=head; int j=0; while(p&&jgetNext(); j++; } return p; } int linkList::getIndex(node *e) { node *p=head->getNext(); int i=1; while(p) { if(p->getX()==e->getX()&&p->getY()==e->getY()) { return i; } i++; p=p->getNext(); } return 0; } node *linkList::getPriorNode(node *e) { node *p=NULL; int i=getIndex(e); if(i!=0) { p=getNode(i-1); } return p; } node *linkList::getNextNode(node *e) { node *p=NULL; int i=getIndex(e); if(i!=0) { p=getNode(i+1); } return p; } void linkList::insert(int i,node *e) { node *p=getNode(i-1); e->changeNext(p->getNext()); p->changeNext(e); } void linkList::Delete(int i) { node *p=getNode(i-1),*q=p->getNext(); p->changeNext(p->getNext()->getNext()); delete q; } class snake:public linkList { private: char direction; node *lastTail; public: snake(); char getDirection(); void go(); void changeDirection(char D); node *getLastTail(); }; node *snake::getLastTail() { return lastTail; } void snake::changeDirection(char D) { direction=D; } void snake::go() { node *e=new node; e->changeNext(NULL); switch(direction) { case 'w': e->changeX(head->getNext()->getX()-1); e->changeY(head->getNext()->getY()); insert(1,e); break; case 's': e->changeX(head->getNext()->getX()+1); e->changeY(head->getNext()->getY()); insert(1,e); break; case 'a': e->changeX(head->getNext()->getX()); e->changeY(head->getNext()->getY()-1); insert(1,e); break; case 'd': e->changeX(head->getNext()->getX()); e->changeY(head->getNext()->getY()+1); insert(1,e); break; } lastTail=new node; lastTail->changeX(getNode(getLength())->getX()); lastTail->changeY(getNode(getLength())->getY()); lastTail->changeNext(NULL); Delete(getLength()); } char snake::getDirection() { return direction; } snake::snake():linkList() { direction='d'; head=new node; head->changeNext(new node); head->getNext()->changeNext(new node); head->getNext()->getNext()->changeNext(new node); head->getNext()->getNext()->getNext()->changeNext(NULL); head->changeX(0); head->changeY(0); head->getNext()->changeX(size/2); head->getNext()->changeY(size/2); head->getNext()->getNext()->changeX(size/2); head->getNext()->getNext()->changeY(size/2-1); head->getNext()->getNext()->getNext()->changeX(size/2); head->getNext()->getNext()->getNext()->changeY(size/2-2); lastTail=NULL; } class food:public linkList { public: food(); }; food::food():linkList() { head=new node; head->changeNext(new node); head->getNext()->changeNext(new node); head->getNext()->getNext()->changeNext(NULL); head->changeX(0); head->changeY(0); do{ head->getNext()->changeX(rand()%(size-1)+1); head->getNext()->changeY(rand()%(size-1)+1); }while(0);//*** do{ head->getNext()->getNext()->changeX(rand()%(size-1)+1); head->getNext()->getNext()->changeY(rand()%(size-1)+1); }while(0); } class border:public linkList { public: border(); }; border::border():linkList() { head=new node; head->changeX(0); head->changeY(0); node *p=head; for(int i=0;ichangeNext(new node); p=p->getNext(); p->changeX(0); p->changeY(i); } for(i=1;ichangeNext(new node); p=p->getNext(); p->changeX(i); p->changeY(size+1); } for(i=size;i>=0;i--) { p->changeNext(new node); p=p->getNext(); p->changeX(size+1); p->changeY(i); } for(i=size;i>0;i--) { p->changeNext(new node); p=p->getNext(); p->changeX(i); p->changeY(0); } p->changeNext(NULL); } class map { private: int m[size+2][size+2]; public: map(); void refresh(); void display(snake *S,food *F,border *B,float score); bool detectCollision(linkList *S,linkList *O); }; void map::refresh() { for(int i=0;igetNode(1); if(O->getIndex(p)!=0) { return 1; } else { return 0; } } void map::display(snake *S,food *F,border *B,float score) { system("cls"); for(int i=1;i<=S->getLength();i++) { m[S->getNode(i)->getX()][S->getNode(i)->getY()]=1; } for(i=1;i<=F->getLength();i++) { m[F->getNode(i)->getX()][F->getNode(i)->getY()]=2; } for(i=1;i<=B->getLength();i++) { m[B->getNode(i)->getX()][B->getNode(i)->getY()]=4; } cout<<"score="<
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: c++
 输入关键字,在本站1000多万海量源码库中尽情搜索: