代码如下:
//主函数
int main()
{
initgraph(800, 600);//初始画布600*400像素,和closegraph()成对出现
mciSendString("stop 11.MP3",NULL,0,NULL);
mciSendString("play 12.MP3 repeat",NULL,0,NULL);
IMAGE img; // 定义 IMAGE 对象
loadimage(&img, "2.jpg"); // 读取图片到 img 对象中
putimage(0, 0, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象
setlinecolor(YELLOW);
line(0,400,800,400);
int x, y;//字母随机出现的坐标
char target;//字母
int key;//记录用户按键
char s[10] = { 0 };//score:显示得分
char f[10] = { 0 };//wrong:显示失败分数
int score = 0;
int wrong = 0;
sprintf(s,"SCORE:%d",score);//将整型score转换成字符串,格式化写入到字符型s中。
outtextxy(0,550,s);//将s字符串得分在0*350的位置输出
sprintf(f, "WRONG:%d", wrong);//格式化输入失分
outtextxy(0, 575, f);//丢分输出
srand((unsigned int)time(NULL));//生成随机种子
//循环出现字母
while (1)
{
target = 65 + rand() % 26;//随机生成大写字母,65-90是大写字母的ASCII码,在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个 //随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,故这句取值范围:65-90
x = 30 + rand() % 740;//字母在x轴出现的位置
IMAGE sm,sm1;//定义水母图片
loadimage(&sm, _T("shuimu1.jpg"),50,40,true);
loadimage(&sm1, _T("shuimu2.jpg"),50,40,true);
//判断是否结束游戏
if (wrong == 10)
{
mciSendString("stop 12.MP3 ",NULL,0,NULL);
initgraph(800, 600);//初始画布600*400像素,和closegraph()成对出现
IMAGE img; // 定义 IMAGE 对象
loadimage(&img, "3.jpg"); // 读取图片到 img 对象中
putimage(0, 0, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象
setbkmode(TRANSPARENT);
settextstyle(60,0,"宋体");//设置字体样式
settextcolor(RED);//字体颜色
sprintf(s, "SCORE:%d", score);//格式化输入得分
outtextxy(300,130,"GAME OVER");//输出GAME OVER
outtextxy(300, 180, s);//输出得分
break;//退出while循环
}
//字母掉落效果
for (y = 0; y < 400; y++)
{
IMAGE img; // 定义 IMAGE 对象
loadimage(&img, "2.jpg"); // 读取图片到 img 对象中
putimage(0, 0, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象
setlinecolor(YELLOW);
line(0,400,800,400);
putimage(x-20,y-9,&sm,SRCPAINT);
putimage(x-20,y-9,&sm1,SRCAND);
settextcolor(WHITE);//设置字母颜色
outtextxy(x,y,target);//输出字母
//字母调到底部扣分
if (y >= 390)
{
wrong++;//扣分
sprintf(f, "WRONG:%d", wrong);
outtextxy(0, 575, f);//覆盖上次计分
break;//退出for循环
}
//判断用户是否按键
else if (_kbhit())
{
key = _getch();//记录按键
//打字正确
if (key == 27)
{
initgraph(800, 600);//初始画布600*400像素,和closegraph()成对出现
IMAGE img; // 定义 IMAGE 对象
loadimage(&img, "3.jpg"); // 读取图片到 img 对象中
putimage(0, 0, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象
setbkmode(TRANSPARENT);
settextstyle(60,0,"宋体");//设置字体样式
settextcolor(RED);//字体颜色
sprintf(s, "SCORE:%d", score);//格式化输入得分
outtextxy(210,130,"GAME OVER");//输出GAME OVER
outtextxy(210, 180, s);//输出得分
getchar();//防止闪屏
}
if (key == target || key == target + 32)
{
mciSendString("play 13.MP3 ",NULL,0,NULL);
score++;//加分
sprintf(s, "SCORE:%d", score);
outtextxy(0, 550, s);//覆盖上次分数
break;//退出for循环
}
//打字错误
else
{
wrong++;//丢分
sprintf(f, "WRONG:%d", wrong);
outtextxy(0, 575, f);//覆盖分数
break;//退出for循环
}
}
Sleep(1);//设置字母下落速度
//防止字母掉落时遮盖得得分输出处
//y++一次就输出一次得分
settextcolor(WHITE);
outtextxy(0, 550, s);
outtextxy(0, 575, f);
}
}
getchar(); //防止闪屏
closegraph(); //关闭画布
return 0;
}