问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁有贪吃蛇_vs2008 C++代码啊?

发布网友 发布时间:2022-07-29 21:41

我来回答

2个回答

热心网友 时间:2024-11-17 23:37

使用链表完成贪吃蛇游戏的代码非常适合,贪吃蛇的每次移动可以看做链表的头部插入和尾部删除

具体代码如下

#include "snake.h"

#define UP_CMD 'w'
#define DOWN_CMD 's'
#define LEFT_CMD 'a'
#define RIGHT_CMD 'd'

#define EAT_FOOD 0x02//吃到食物
#define EAT_SELF 0x04//迟到自己
#define EAT_NONE 0x05//无吃到

typedef char DIRECTION;
class SnakeNode
{
private:
COORD pos;//节点坐标
SnakeNode *next;
public:
static COORD foodxy;//食物坐标
static SnakeNode *head;//头部
static DIRECTION direction;//方向
static int speed;//移动速度
static void food();//产生食物
static void create();//产生蛇
static void free();//销毁
static int move();//移动
static void getcmd(DIRECTION d);//改变方向
};


COORD SnakeNode::foodxy;
SnakeNode* SnakeNode::head = NULL;
DIRECTION SnakeNode::direction = RIGHT_CMD;//方向
int SnakeNode::speed = 400;//方向
//蛇类
void SnakeNode::free()
{
SnakeNode *p,*q;
p = head;
while(p)
{
         q = p->next;
 delete p;
         p=q;    
}
}

void SnakeNode::getcmd(DIRECTION d)
{
switch(d)
{
case 'w':case 'W':
if(direction!='s') direction='w';break;
case 's':case 'S':
if(direction!='w') direction='s';break;
case 'a':case 'A':
if(direction!='d') direction='a';break;
case 'd':case 'D':
if(direction!='a') direction='d';break;
}
}

void SnakeNode::food()
{
rand:
srand(GetTickCount());
foodxy.X=(rand()%38)*2;
foodxy.Y=rand()%25;
SnakeNode *p = head;
while(p!=NULL)
{
if(p->pos.X==foodxy.X&&p->pos.Y==foodxy.Y)
{
goto rand;
break; 
}
p = p->next;
}
gotoxy(foodxy.X,foodxy.Y);
printf("☆");
}

void SnakeNode::create()
{
SnakeNode *p = new SnakeNode;
head = p;
int i;
for(i=26;i>=20;i-=2)
{
p->pos.X=i;
p->pos.Y=10;
gotoxy(i,10);
cout<<"■";
p->next = new SnakeNode;
if(i==20)
{
p->next = NULL;
}
p = p->next;
}
food();
}

int SnakeNode::move()
{
SnakeNode *newhead = new SnakeNode;
int cX,cY;
switch(direction)
{
case 'w':

cX = 0; cY = -1;
}break;//创建一个新头部,删除尾巴
case 's':
{   
cX = 0; cY = 1;
}break;
case 'a':
{   
cX = -2; cY = 0;
}break;
case 'd':
{   
cX = +2; cY = 0;
}break;
}
newhead->pos.X = head->pos.X + cX;
newhead->pos.Y = head->pos.Y + cY;
newhead->next = head;
head = newhead; 

if(head->pos.Y<0)   head->pos.Y=24; 
if(head->pos.Y>24)  head->pos.Y=0;
if(head->pos.X<0)   head->pos.X=78;
if(head->pos.X>78)  head->pos.X=0;

//判断是否咬到自己
SnakeNode *q = head->next;
while(q!=NULL)
{
if((q->pos.X==head->pos.X)&&(q->pos.Y==head->pos.Y))
{
free();
return EAT_SELF;
}
q=q->next;
}

gotoxy(head->pos.X,head->pos.Y);
printf("■");

//判断是否吃到食物
SnakeNode *p = head;
while(p!=NULL)
{
if(head->pos.X==foodxy.X&&head->pos.Y==foodxy.Y)//是否吃到食物
{
//吃到食物加速
if(speed >= 100)
speed -= 20;
food();
return EAT_FOOD;
break;//吃到了则不删除尾部,相当于增加一节
}
//删除尾部
if(p->next->next==NULL)
{
gotoxy(p->next->pos.X,p->next->pos.Y);
printf("  ");
delete p->next;
p->next=NULL;
return EAT_NONE;
}
p = p->next;
}

}

int main(){
SnakeNode::create();

while(1)
{
if(_kbhit())
{
int ch=getch();
switch(ch)
   {
case 'w':case 'W': case 's':case 'S':case 'a':case 'A':
case 'd':case 'D':
{
SnakeNode::getcmd(ch);
}break;
case 'b':
{
SnakeNode::free();
return 0;
}
}
}
if(SnakeNode::move()==EAT_SELF)
{
gotoxy(30,11);
cout<<"游戏结束";
getch();
return 0;
}
Sleep(SnakeNode::speed);
}
}

热心网友 时间:2024-11-17 23:37

你好!具体什么要求呢
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 ...员在起飞需要承受几G的加速度 为什么客机在起飞时不管是乘客还是飞行... 鹿场养的野生动物可以出售吗 自家做的鹿制品,没商标可以卖吗?我家就是开鹿场的,人参,鹿茸什么的 自然脱落的鹿角可以买卖吗 兔年出生,爸爸姓杜,帮忙取个带火字旁部首或金子旁部首的女孩名字... 美女看到男子手臂上的字,终于知道是谁玷污的自己?是什么电视剧。_百度... 青稞面主要产在哪里? 青稞的主产区在( ) 杨玲正在问李老师一些有关数学的问题用英语怎么说 ...学数学和英语,常帮助老师解决一些问题 用英语怎么说啊 他们正在做数学题 英语怎么说 jj太明显怎么办 你认为在日常工作中,换热站,从在哪些危险源 大同市城市供热管理办法(2005修订) 手机底部螺丝拧圆了怎么办 手机底部螺丝滑丝怎么解决 赞美《青花瓷》 哪些现象属于炫耀性消费 大学生炫耀性消费原因 炫耀性消费到底是什么原因造成的? 调研报告提纲格式 谁能给个 vs 10 能用的 贪吃蛇代码。有&quot;pcc32.h“ 和graphics.h&gt; 的都... C语言贪吃蛇代码(在VS2010中能够运行) c# vs2010 怎样打开网上下载的代码,如贪吃蛇 键盘如何打出空心的五角星符号和实心的五角星符号? 怎样输入“空心五角星”和实心五角星“方法! 为什么人在睡觉前哭第二天醒来眼睛会肿啊?? 求问为什么睡前哭过第二天眼睛会肿? ()的青稞地 填上合适的词:什么的青稞地 ...无所有”此句出处是哪里?全文是什么?它的释义又是什么? 关于“远方除了遥远一无所有”的全文是什么?有关资料有哪些? ...油菜花,紫白色的豌豆花,镶嵌在绿浪翻滚的青稞地,如似一副精美... 《念远方》这首诗是什么意思? h型钢350*350*12*19多长 80公斤工制钢有多长 我想问一下为什么一些人网上买东西,自己支付宝有钱不用,要用蚂蚁花呗... 考勤机主板坏,如何写一个一百字的维修报告? 电脑无法正常自检完成,显示器无信号,求解! 电脑无法正常启动,无自检声音,硬盘灯闪烁,显示器提示无信号,键盘灯不亮... 本人电脑的华硕主板还没过保修期,请问是回原购买地保修好还是到我所在...