//需要先装第三方图形库easyx
#include <stdio.h>
#include <easyx.h> //要用easyx 头文件 graphics.h
#include <time.h>
#include <conio.h> //控制IO
#include <mmsystem.h> //放音乐用的头文件
#pragma comment(lib,"winmm.lib") //放音乐用的库
#define w 800
#define h 400
int main()
{
int fen = 0;
long long speed=10; //速度,值越小,越快
char ss[20]="分数: 0",key;
srand(time(0));
initgraph(w, h); //建立界面
setbkmode(0); //字体背景透明
settextstyle(25, 0, "宋体"); //设置字体
mciSendString("open quick.mp3", 0, 0, 0); //播放音乐
mciSendString("play quick.mp3", 0, 0, 0);
IMAGE bjtu, A1, A2; //图形对象
loadimage(&bjtu, "1.jpg", w, h); //读入这三张图,与项目文件放在一起
loadimage(&A1, "apple0.jpg", 50, 50);
loadimage(&A2, "apple1.jpg", 50, 50);
putimage(0, 0, &bjtu); //设置背景图片
int x, y;
while (1)
{
x = rand() % 750; //随机位置产生苹果
char c = 'A' + rand() % 26; //苹果的字符随机
for (y = 0;y < h;y++) //苹果下落
{
BeginBatchDraw(); //批量画图
putimage(0, 0, &bjtu);
outtextxy(0, 0, ss);
putimage(x - 18, y - 18, &A1, SRCPAINT);
putimage(x - 18, y - 18, &A2, SRCAND);
outtextxy(x, y, c);
EndBatchDraw(); //批量画图结束,将图片输出
Sleep(speed); //屏幕静止,用来产生动态效果
if (_kbhit()) //检测是否有按键按下,有按键按下为真
{
key = _getch(); //接受按下的键值
if (key == c) { //如果按下的和字母相同
fen++; //分数更新
sprintf_s(ss, "分数: %d", fen);
break; //结束本次循环,开启下一个苹果
}else if(key=='1'){ //按1进入快速模式
mciSendString("close quick.mp3", 0, 0, 0); //切换音乐
mciSendString("open slow.mp3", 0, 0, 0);
mciSendString("play slow.mp3", 0, 0, 0);
speed = 5;
}else if (key == '2') {
mciSendString("close slow.mp3", 0, 0, 0);
mciSendString("open quick.mp3", 0, 0, 0);
mciSendString("play quick.mp3", 0, 0, 0);
speed = 15;
}
else if (key == ' ') { //按下空格暂停
outtextxy(380, 200, "空格建继续");
while (!_kbhit()) {
key = _getch();
if (key == ' ')break; //再次按下空格继续游戏
}
}
}
}
if (y == h) { //苹果到底后仍然没被按下,游戏失败
outtextxy(280, 200, "游戏结束,空格继续");//屏幕输出文字
while (!_kbhit()){
key = _getch();
if (key == ' ') {
fen = 0; //重新积分
sprintf_s(ss, "分数: %d", fen);
break;
}
}
}
}
return 0;
}
游戏截图
#资源图片:
背景
1.jpg
apple0.jpg
apple1.jpg