效果图
代码
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#include<time.h>//计时器
#include<math.h>
#include<stdlib.h>
//跳转函数
void turnto(int x,int y)
{
COORD loc;
loc.X = x;
loc.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), loc);
}
//打印+清除
void clean(int x,int y)
{
printf("I");
turnto(x, y);
printf(" ");
}
//随机数
int unknow(int x, int y)
{
int i;
i = (rand() * (y - x) / RAND_MAX + x);
return i;
}
//o-(-.-)-I开始
int main(void)
{
clock_t start, end;
int t;
int x, y, i, a, b;
int score=0;
char name[10];
long coin[10];
//输入名字
printf("本游戏需要英文输入法");
Sleep(1500);
turnto(0, 0);
printf("请输入你的英文名字:_______");
scanf("%s", &name);
printf("w向上,s向下,a向左,d向右,q to quit");
//初始化
x = 20;
y = 13;
turnto(x, y);
printf("I");
//coin创建
srand((unsigned int)time(0));//不要把srand与rand放一个循环
for (i = 0; i <= 9; i++)
{
a = unknow(2, 117);
b = unknow(3, 27);
turnto(a, b);
printf("$");
coin[i] = a * 100 + b;
}
//计时开始
start = clock();
//移动
while((i=_getch())!=0)//getch也行?
{
if (i == (int)'w')
{
turnto(x, y - 1);
clean(x, y);
turnto(x, y - 1);
y = y - 1;
}
else if(i==(int)'s')
{
turnto(x, y + 1);
clean(x, y);
turnto(x, y + 1);
y = y +1;
}
else if (i == (int)'a')
{
turnto(x-1, y );
clean(x, y);
turnto(x-1, y );
x = x - 1;
}
else if (i == (int)'d')
{
turnto(x + 1, y);
clean(x, y);
turnto(x + 1, y);
x = x + 1;
}
else if (i == (int)'q')
{
printf("你选择退出");
Sleep(1000);
return 0;
}
//遍历
for (i = 0; i <= sizeof(coin) / sizeof(long); i++)
{
if (x * 100 + y == coin[i])
{
coin[i] = 100000;
score++;
turnto(0, 1);
printf("得分:%d ",score);
turnto(x, y);
}
}
if (score == 10)
{
break;
}
}
//计时结束
end = clock();
t = (end - start) / CLOCKS_PER_SEC;
turnto(26, 1);
printf(" 用时: %d 秒
", t);
Sleep(1000);
printf("%s,你的综合得分为%d",name,110-t);
Sleep(1000);
return 0;
}
ps:这是我上大学前几天看了printf()与scanf()之后做出来的游戏;其中随机数与位置跳转函数都是上网查的。所以说编程很有意思,它让你创造而不是让你接受。