This answer quotes ChatGPT
Reply me if you have any questions
You can add timer and correct rate to Draw() function. Also, be careful to stop the game after 60 seconds.
Here is the modified code:
#include
#include
#include
#include
#include <time.h>
#define WIDTH 600
#define HEIGHT 400
#define MAXLETTER 10
#define SPEED 2
struct Letter
{
int x;
int y;
char ch;
};
IMAGE MM;
Letter letter[MAXLETTER];
int score = 0;
clock_t start_time = clock(); // 记录开始时间
// 初始化字母
void SetLetter()
{
for (int i = 0; i < MAXLETTER; i++)
{
letter[i].x = rand() % (WIDTH - 50) + 25;
letter[i].y = rand() % HEIGHT - HEIGHT;
letter[i].ch = rand() % 26 + 'A';
}
}
// 绘制屏幕
void Draw()
{
putimage(0, 0, &MM);
for (int i = 0; i < MAXLETTER; i++)
{
settextstyle(50, 20, "HandelGothic BT");
setbkmode(TRANSPARENT);
outtextxy(letter[i].x, letter[i].y, letter[i].ch);
}
// 绘制得分
char text[20];
sprintf_s(text, "Score: %d", score);
settextstyle(50, 20, "Arial");
outtextxy(20, 20, text);
// 绘制时间
clock_t current_time = clock(); // 获取当前时间
int elapsed_time = (int)(current_time - start_time) / CLOCKS_PER_SEC;
if (elapsed_time > 60) {
// 时间超过60秒时停止游戏
outtextxy(500, 300, "Time: 60");
outtextxy(100, 300, "Correct Rate: 100%");
return;
}
char time1[20];
sprintf_s(time1, "Time: %d", elapsed_time);
settextstyle(50, 20, "HandelGothic BT");
outtextxy(500,300,time1);
// 绘制正确率
settextstyle(50, 20, "HandelGothic BT");
char correct2[20];
int correct_count = score / n;
int correct_rate = correct_count * 100;
sprintf_s(correct2, "Correct Rate: %d%%", correct_rate);
outtextxy(100, 300, correct2);
}
// 移动字母
void MoveLetter()
{
for (int i = 0; i < MAXLETTER; i++)
{
letter[i].y += SPEED;
if (letter[i].y >= HEIGHT)
{
score--;
letter[i].x = rand() % (WIDTH - 50) + 25;
letter[i].y = rand() % HEIGHT - HEIGHT;
letter[i].ch = rand() % 26 + 'A';
}
}
}