[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
#include <graphics.h> //包含EGE的头文件
#include<time.h>
using namespace std;
int width=800;
int hight=600;
int number;
int count1=0,count2;
char ch;
int score,score_flag;
int f_x,f_y;
int flag=0;
int wait;
float inx(int min,int max)
{
float t=rand()%(max-min)+min;
return t;
}
struct snake_body
{
int x;
int y;
};
struct snake
{
int len;
int v;
snake_body s_b[100];
char dir;
}s[1];
void foodset()
{
while(1)
{
flag=0;
f_x=rand()%37+1;
f_y=rand()%27+1;
for(int i=0;i<s[0].len;i++)
{
if(s[i].s_b[i].x==f_x&&s[i].s_b[i].y==f_y)
{
flag=1;
break;
}
}
if(flag==0)
{
break;
}
}
}
void start()
{
s[0].len = 4;
s[0].v = 50;
s[0].dir = 'd';
for(int i=0;i<4;i++)
{
s[0].s_b[i].x=20-i;
s[0].s_b[i].y=15;
}
initgraph(width, hight);//初始化图形界面
setcolor(RED);//设置画图线为红色
setbkcolor(WHITE);//设置背景颜色为白色
setfillcolor(RED);//设置填充颜色为红色
}
void move_snake()
{
for(int i=s[0].len;i>0;i--)
{
s[0].s_b[i].x=s[0].s_b[i-1].x;
s[0].s_b[i].y=s[0].s_b[i-1].y;
}
switch(s[0].dir)
{
case 'w': s[0].s_b[0].y-=1;
break;
case 'a': s[0].s_b[0].x-=1;
break;
case 's': s[0].s_b[0].y+=1;
break;
case 'd': s[0].s_b[0].x+=1;
break;
}
}
void update()
{
if(kbhit())
{
s[0].dir = getch();
move_snake();
}//按键响应
wait++;
if(wait==s[0].v)
{
move_snake();
wait=0;
}
}
void food_eat()
{
if(s[0].s_b[0].x==f_x&&s[0].s_b[0].y==f_y)
{
s[0].len+=1;
s[0].v=50-s[0].len-4/5;
count1+=1;
foodset();
}
}
void draw()
{
for(int i=0;i<s[0].len;i++)
{
setfillcolor(hsv2rgb(10*i%360, 1, 1));//设置填充颜色 参数(颜色,饱和度,明亮度)
bar(20*s[0].s_b[i].x,20*s[0].s_b[i].y,20*s[0].s_b[i].x+20,20*s[0].s_b[i].y+20);
}
setfillcolor(GREEN);
bar(f_x*20,f_y*20,f_x*20+20,f_y*20+20);
xyprintf(20,20,"分数:%d",count1);//格式化输出文字
xyprintf(20,60,"长度:%d",s[0].len);//格式化输出时间
Sleep(10);
cleardevice();//绘制球体
}
bool gameover()
{
if((s[0].s_b[0].x>39)||(s[0].s_b[0].y>29)||(s[0].s_b[0].x<0)||(s[0].s_b[0].y<0))//w.xl<w.xr+ball[0].r&&w.yr+ball[0].r<w.yr
{
return true;
}
for(int i=1;i<s[0].len;i++)
{
if((s[0].s_b[0].x==s[0].s_b[i].x)&&(s[0].s_b[0].y==s[0].s_b[i].y))
{
return true;
}
}
return false;
}
int main()
{
start();
foodset();
while(1)
{
draw();
update();
food_eat();
if(gameover()) break;
}
getch(); //暂停,等待键盘按键
closegraph(); //关闭图形界面
return 0;
}
|