自己做的一个小游戏(1)--吃金币(基础版)

目录



效果图

代码

#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("请输入你的英文名字:_______\b\b\b\b\b\b\b");
    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 秒     \n ", t);
    Sleep(1000);
    printf("%s,你的综合得分为%d",name,110-t);
    Sleep(1000);
    return 0;
}

ps:这是我上大学前几天看了printf()与scanf()之后做出来的游戏;其中随机数与位置跳转函数都是上网查的。所以说编程很有意思,它让你创造而不是让你接受。

猜你喜欢

转载自www.cnblogs.com/juicebox/p/9636442.html