#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
int X=60;//屏幕大小
int Y=20;
int dx=0;//移动
int dy=0;
int fs=0;//分数
struct st {//蛇的身体坐标
int x;
int y;
};
struct cdhst {//蛇的长度与储存蛇的身体坐标
int size;
struct st ccst[60*20];
};
int sw[2] = {0};//初始化食物
struct cdhst syzgdx; //为了使用这个东西
void qb()//初始化墙壁
{
int a,c;
for(a=0;a<=20;a++)
{
for(c=0;c<=60;c++)
{
if(c==60)
printf ("■");
else if(a==20)
printf ("■");
else
printf (" ");
}
printf ("\n");
}
}
void xssw() {//显示食物
srand(time(NULL));
sw[0] = rand() % X;
sw[1] = rand() % Y;
}
void cshst() {//初始化刚开始的身体
syzgdx.size = 3;
syzgdx.ccst[0].x = X / 2;
syzgdx.ccst[0].y = Y / 2;
syzgdx.ccst[1].x = X / 2;
syzgdx.ccst[1].y = Y / 2 + 1;
syzgdx.ccst[2].x = X / 2;
syzgdx.ccst[2].y = Y / 2 + 2;
}
void gxzyddx() {//更新这一堆东西,身体食物
COORD coord;
for (int i = 0; i < syzgdx.size; i++) {
coord.X = syzgdx.ccst[i].x;
coord.Y = syzgdx.ccst[i].y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
if (i == 0)
putchar('@');
else
putchar('*');
}
coord.X=sw[0];
coord.Y=sw[1];
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
putchar('#');
coord.X = syzgdx.ccst[syzgdx.size-1].x;//擦除多出的蛇尾 ,一定要在更新身体的后面,要不然擦除了又更新身体没用
coord.Y = syzgdx.ccst[syzgdx.size-1].y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
putchar(' ');
}
void wlwyx() {//为了玩游戏的函数
char yd='w';//初始化移动
while (!(syzgdx.ccst[0].x<0|| syzgdx.ccst[0].x>=X||syzgdx.ccst[0].y<0||syzgdx.ccst[0].y>=Y)) {//不撞墙就一直玩
gxzyddx();
while (_kbhit()) {
yd = _getch();//移动
}
switch (yd) {
case 'D': case 'd': if(dx ==-1,dy == 0)break;dx = 1;dy = 0; break;
case 'A': case 'a': if(dx ==1,dy == 0)break;dx = -1; dy = 0; break;
case 'W': case 'w': if(dx ==0,dy == 1)break;dx = 0; dy = -1; break;
case 'S': case 's': if(dx ==0,dy == -1)break;dx = 0; dy = 1; break;
}
for (int i=1;i<syzgdx.size;i++) {//撞到自己出局
if (syzgdx.ccst[0].x==syzgdx.ccst[i].x&&syzgdx.ccst[0].y==syzgdx.ccst[i].y) {
return;
}
}
if (syzgdx.ccst[0].x==sw[0]&&syzgdx.ccst[0].y==sw[1]) {//吃到食物长度增加,重新显示食物 ,分数加100
xssw();
syzgdx.size++;fs+=100;
}
for (int i=syzgdx.size-1;i>0;i--) {
syzgdx.ccst[i].x = syzgdx.ccst[i-1].x;
syzgdx.ccst[i].y = syzgdx.ccst[i-1].y;
}
syzgdx.ccst[0].x+=dx;
syzgdx.ccst[0].y+=dy;
Sleep(150);fs+=5;//每更新一次就+5分
//system("cls");
}printf(" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t分数:%d\n",fs);
}
int main() {
qb();
xssw();
cshst();
wlwyx();
if(fs<500&&syzgdx.size<5){printf("\t\t\t\t菜就多练"); printf("\n");}
if(fs>2000&&fs<4000&&syzgdx.size<10){printf("\t\t\t\t略有成色"); printf("\n");}
if(fs>4000&&fs<10000&&syzgdx.size<10){printf("\t\t\t\t保命高手"); printf("\n");}
if(syzgdx.size>=5&&syzgdx.size<10){printf("\t\t\t\t成蟒"); printf("\n");}
if(syzgdx.size>=10&&syzgdx.size<15){printf("\t\t\t\t成蚺"); printf("\n");}
if(syzgdx.size>=15&&syzgdx.size<25){printf("\t\t\t\t化蛟"); printf("\n");}
if(syzgdx.size>=25){printf("\t\t\t\t洗 净 铅 华!升 华 成 龙!"); printf("\n");}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复