c++小白贪吃蛇(主要功能已实现)
来源:互联网 发布:软件测试自学视频教程 编辑:程序博客网 时间:2024/05/29 03:15
使用的easyx,搜索即可
#include <graphics.h>
#include <time.h>#include <conio.h>
typedef struct she
{
she *last;
she *next;
char nowfangxiang;
char nextfangxiang;
int x, y, z, h;
}*Lshe;
void yizhizou(she & head);
int main(int argc, char* argv[]) {
initgraph(600, 800);
setfillcolor(WHITE);
char c = '0';
she p, q,d;
she head = { NULL, &p, 's','s',190, 180, 200,190
};
p = { &head,&q, 's',head.nowfangxiang,190,170,200,180 };
q = { &p ,&d ,'s',p.nowfangxiang,190,160,200,170};
d = { &q ,NULL ,'s',p.nowfangxiang,190,160,200,170 };
fillrectangle(head.x, head.y, head.z, head.h);
fillrectangle(p.x, p.y, p.z, p.h);
fillrectangle(q.x, q.y, q.z, q.h);
int a = 0, b = 0;
srand((unsigned)time(NULL));
a = ((rand() % (80 - 1 + 1)) + 1)*10;
b = ((rand() % (60 - 1 + 1)) + 1)*10;
fillrectangle(b - 10, a - 10, b, a);
she *k = new she[100];
int n = 0;
while (c != 27)
{
if ((head.z == b&&head.h==a)|| (head.x == b&&head.h == a)|| (head.x == b&&head.y == a)|| (head.z == b&&head.y == a))
{
if ((*(d.last)).nextfangxiang == 's')
{
k[n].x = (*(d.last)).x;
k[n].z = (*(d.last)).z;
k[n].y= (*(d.last)).y-10;
k[n].h= (*(d.last)).h-10;
k[n].last = d.last;
k[n].next = &d;
k[n].nowfangxiang= (*(d.last)).nowfangxiang ;
k[n].nextfangxiang = (*(d.last)).nextfangxiang;
(*(d.last)).next = &k[n];
d.last = &k[n];
}
else if ((*(d.last)).nextfangxiang == 'w')
{
k[n].x = (*(d.last)).x;
k[n].z = (*(d.last)).z;
k[n].y = (*(d.last)).y +10;
k[n].h = (*(d.last)).h + 10;
k[n].last = d.last;
k[n].next = &d;
k[n].nowfangxiang = (*(d.last)).nowfangxiang;
k[n].nextfangxiang = (*(d.last)).nextfangxiang;
(*(d.last)).next = &k[n];
d.last = &k[n];
}
else if ((*(d.last)).nextfangxiang == 'a')
{
k[n].y = (*(d.last)).y;
k[n].h = (*(d.last)).h;
k[n].x = (*(d.last)).x + 10;
k[n].z = (*(d.last)).z + 10;
k[n].last = d.last;
k[n].next = &d;
k[n].nowfangxiang = (*(d.last)).nowfangxiang;
k[n].nextfangxiang = (*(d.last)).nextfangxiang;
(*(d.last)).next = &k[n];
d.last = &k[n];
}
else if ((*(d.last)).nextfangxiang == 'd')
{
k[n].y = (*(d.last)).y;
k[n].h = (*(d.last)).h;
k[n].x = (*(d.last)).x - 10;
k[n].z = (*(d.last)).z - 10;
k[n].last = d.last;
k[n].next = &d;
k[n].nowfangxiang = (*(d.last)).nowfangxiang;
k[n].nextfangxiang = (*(d.last)).nextfangxiang;
(*(d.last)).next = &k[n];
d.last = &k[n];
}
srand((unsigned)time(NULL));
//yizhizou(head);
a = ((rand() % (80 - 1 + 1)) + 1) * 10;
b = ((rand() % (60 - 1 + 1)) + 1) * 10;
fillrectangle(b - 10, a - 10, b, a);
n++;
}
if (c == 's'&&(head.nowfangxiang !='s'&& head.nowfangxiang !='w'))
{
head.nowfangxiang = c;
yizhizou(head);
}
else if (c == 'w' && (head.nowfangxiang != 's' && head.nowfangxiang != 'w'))
{
head.nowfangxiang = c;
yizhizou(head);
}
else if (c == 'a' && (head.nowfangxiang != 'a' && head.nowfangxiang != 'd'))
{
head.nowfangxiang = c;
yizhizou(head);
}
else if (c == 'd' && (head.nowfangxiang != 'a' && head.nowfangxiang != 'd'))
{
head.nowfangxiang = c;
yizhizou(head);
}
else
{
yizhizou(head);
}
if(_kbhit())
c = _getch();
Sleep(300);
}
closegraph();
delete[]k;
return 0;
}
void yizhizou(she &head)
{
she *p;
she n = *head.next;
setcolor(BLACK);
setfillcolor(BLACK);
fillrectangle(head.x, head.y, head.z, head.h);
//Sleep(1000000);
p = head.next;
while((*p).next!=NULL)
{
fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
p = p->next;
}
setfillcolor(WHITE);
//Sleep(10000);
if (head.nowfangxiang == 's')
{
(head.y) += 10;
(head.h) += 10;
if ((head.h) > 800)
{
head.h = 10;
(head.y) = (head.h) - 10;
}
fillrectangle(head.x, head.y, head.z, head.h);
//Sleep(10000);
}
else if (head.nowfangxiang == 'w')
{
(head.y) -= 10;
(head.h) -= 10;
if ((head.y) <= 0)
{
head.h = 800;
(head.y) = (head.h) - 10;
}
fillrectangle(head.x, head.y, head.z, head.h);
}
else if (head.nowfangxiang == 'a')
{
(head.x) -= 10;
(head.z) -= 10;
if ((head.x) < 0)
{
head.x = 590;
(head.z) = (head.x) + 10;
}
fillrectangle(head.x, head.y, head.z, head.h);
}
else if (head.nowfangxiang == 'd')
{
(head.x) += 10;
(head.z) += 10;
if ((head.z) >600)
{
head.x = 0;
(head.z) = (head.x) + 10;
}
fillrectangle(head.x, head.y, head.z, head.h);
}
p = head.next;
//Sleep(1000000);
while ((*p).next != NULL)
{
(*p).nowfangxiang = (*p).nextfangxiang;
(*p).nextfangxiang = (*((*p).last)).nowfangxiang;
if ((*p).nowfangxiang == 's')
{
((*p).y) += 10;
((*p).h) += 10;
if (((*p).h) > 800)
{
(*p).h = 10;
(*p).y = ((*p).h) - 10;
//fillrectangle((*p).x, 10, (*p).z, 0);
}
fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
}
else if ((*p).nowfangxiang == 'w')
{
((*p).y) -= 10;
((*p).h) -= 10;
if (((*p).y)<= 0)
{
(*p).h = 800;
((*p).y) = ((*p).h) - 10;
}
fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
}
else if ((*p).nowfangxiang == 'a')
{
((*p).x) -= 10;
((*p).z) -= 10;
if (((*p).x) < 0)
{
(*p).x = 590;
((*p).z) = ((*p).x) + 10;
}
fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
}
else if ((*p).nowfangxiang == 'd')
{
((*p).x) += 10;
((*p).z) += 10;
if (((*p).z) > 600)
{
(*p).x = 0;
((*p).z) = ((*p).x) + 10;
}
fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
}
//fillrectangle((*p).x, (*p).y, (*p).z, (*p).h);
p = (*p).next;
}
}
阅读全文
0 0
- c++小白贪吃蛇(主要功能已实现)
- 贪吃蛇C实现
- 仿QQ音乐播放界面(已实现主要功能)
- 贪吃蛇实现小方法
- C语言 贪吃蛇实现(不闪屏)
- 贪吃蛇----C语言实现
- C语言实现贪吃蛇
- [C++]C++实现贪吃蛇
- 贪吃蛇游戏(c实现)
- 贪吃蛇(c++)
- 贪吃蛇(C++)
- 小白理解 js 20行代码实现贪吃蛇
- C语言小项目--贪吃蛇游戏
- C语言实现贪吃蛇(一)----数组实现
- 模拟贪吃蛇游戏(纯C语言实现)
- 练手: 贪吃蛇(c++)
- C + SDL 贪吃蛇的基础实现
- 【LB】C语言实现贪吃蛇
- vue-cli webpack配置分析
- qt自学笔记(十)
- python 单引号和双引号的区别
- 数据库的监控性能指标
- ORACLE EBS程序重置密码
- c++小白贪吃蛇(主要功能已实现)
- 每天回顾linux命令(zcat)
- 通讯录名片扫描识别的功能SDK
- redis的安装
- PHP面试题
- Git 命令收集
- HTTP协议之报文详解
- Spring的@Autowired如何自动装配在bean配置文件中声明的两个类似的bean呢?
- protoc3.5报文件不存在