备忘录里的,我都忘了是啥的代码了🤕
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
struct XY
{
int x;
int y;
struct XY *next;
};
enum direction
{
up, down, left, right
};
void main()
{
srand((unsigned)time(nullptr));
initgraph(800, 600, NOMINIMIZE);
setbkcolor(BROWN);
cleardevice();
setfillcolor(LIGHTGRAY);
solidrectangle(60, 60, 540, 540);
setcolor(YELLOW);
settextstyle(25, 0, _T("楷体"));
outtextxy(600, 100, _T("喜欢就抢制作"));
outtextxy(580, 140, _T("WSAD控制上下左右"));
outtextxy(580, 180, _T("需要英文小写WSAD"));
outtextxy(600, 220, _T("QQ:1319910854"));
char c;
int map[15][15] = { 0 };
struct XY sn = { 1,5,nullptr };
struct XY save = sn;
struct XY *psn = &sn;
struct XY food = { 0,0 ,nullptr};
enum direction move = right;
bool flag = false;
setfillcolor(GREEN);
solidcircle(60 + 16 + 32 * sn.x, 60 + 16 + 32 * sn.y, 15);
map[sn.x][sn.y] = 1;
while (true)
{
while (!flag)
{
food.x = rand() % 15;
food.y = rand() % 15;
if (map[food.x][food.y] == 0)
{
map[food.x][food.y] = 2;
flag = true;
}
}
if (_kbhit())
{
c = _getch();
switch (c)
{
case 'w': move = up;
break;
case 's': move = down;
break;
case 'a': move = left;
break;
case 'd': move = right;
break;
default:
break;
}
}
save = sn;
switch (move)
{
case up: sn.y--;
break;
case down: sn.y++;
break;
case left: sn.x--;
break;
case right: sn.x++;
break;
default:
break;
}
if (sn.x > -1 && sn.x<15 && sn.y>-1 && sn.y < 15)
{
psn = (struct XY*)malloc(sizeof(struct XY));
psn->x = save.x;
psn->y = save.y;
psn->next = save.next;
sn.next = psn;
switch (map[sn.x][sn.y])
{
case 0:
{
map[sn.x][sn.y] = 1;
struct XY *s;
psn = &sn;
while (psn->next->next != nullptr)
psn = psn->next;
s = psn->next;
psn->next = nullptr;
map[s->x][s->y] = 0;
free(s);
break;
}
case 1:
{
break;
}
case 2:
{
map[sn.x][sn.y] = 1;
flag = false;
break;
}
default:
break;
}
setfillcolor(LIGHTGRAY);
solidrectangle(60, 60, 540, 540);
setfillcolor(GREEN);
psn = &sn;
while (true)
{
solidcircle(60 + 16 + 32 * psn->x, 60 + 16 + 32 * psn->y, 15);
if (psn->next == nullptr)
break;
else
psn = psn->next;
}
solidcircle(60 + 16 + 32 * sn.x, 60 + 16 + 32 * sn.y, 15);
setfillcolor(RED);
if (flag)
{
solidcircle(60 + 16 + 32 * food.x, 60 + 16 + 32 * food.y, 15);
}
}
else
{
break;
}
Sleep(500);
}
setcolor(YELLOW);
settextstyle(50, 0, _T("楷体"));
outtextxy(200, 300, _T("游戏结束"));
outtextxy(100, 380, _T("按任意键结束游戏"));
system("pause");
closegraph();
生活不易
早点休息
❤️
网友评论