关于图片资源,可以自己找对应的图片替换
#include <QApplication>
#include <QObject>
#include <QString>
#include <graphics.h>
#include <conio.h>
#include <time.h>
#pragma comment(lib,"Winmm.lib")
#define length 1000//游戏画面宽度
#define high 640//游戏画面高度
struct yu
{
double position_x;//横坐标
double position_y;//纵坐标
double v_x;//水平速度
double v_y;//竖直速度
};
yu player;//玩家
yu timer;//闹钟
yu zhadan;//炸弹
yu food1,f_food1;//1号鱼
yu food2,f_food2;//2号鱼
yu food3,f_food3;//3号鱼
yu food4,f_food4;//4号鱼
yu food5,f_food5;//5号鱼
IMAGE img_p1;//玩家图片
IMAGE img_p1bei;
IMAGE img_bk;//背景图片
IMAGE img_bk0;//进入界面图
IMAGE imgTEXTime;
IMAGE imgTEXTimebei;//闹钟图片
IMAGE img_zha;
IMAGE img_zhabei;//图片
IMAGE img_f1,img_f_f1;
IMAGE img_f1bei,img_f_f1bei;//1号鱼图片
IMAGE img_f2,img_f_f2;
IMAGE img_f2bei,img_f_f2bei;//2号鱼图片
IMAGE img_f3,img_f_f3;
IMAGE img_f3bei,img_f_f3bei;//3号鱼图片
IMAGE img_f4,img_f_f4;
IMAGE img_f4bei,img_f_f4bei;//4号鱼图片
IMAGE img_f5,img_f_f5;
IMAGE img_f5bei,img_f_f5bei;//5号鱼图片
char input;//定义变量便于使用
double p1size;//定义一个变量来储存玩家鱼的尺寸
double start_p1size;//定义一个变量来储存玩家的初始大小
int score_p1;//分数
int startTime;//计时
int endTime;//计时
double resttime;//剩余时间
int timelong=150;//时间限制
int yuhead=0; //判断鱼头朝向
static int shengming = 3;//玩家生命
int gameStatus=0; // 游戏状态,0为初始菜单界面,1为正常游戏,2为结束游戏状态,3为游戏暂停
void startMenu()
{
putimage(0, 0, &img_bk0);//显示背景
settextcolor(RGB(123,90,254));//设置文本颜色
settextstyle(70,0, TEXT("华文琥珀"));
outtextxy(length*0.36, high*0.19, TEXT("大鱼吃小鱼"));
setbkmode(TRANSPARENT);//设置模式
settextcolor(RGB(106,0,0));//设置文本颜色
settextstyle(37,0, TEXT("幼圆"));
outtextxy(length*0.35, high*0.36, TEXT("1 新游戏"));
outtextxy(length*0.35, high*0.44, TEXT("2 退出游戏"));
settextcolor(RGB(64,0,128));//设置文本颜色
settextstyle(30,0, TEXT("微软雅黑"));
outtextxy(length*0.36, high*0.55, TEXT("ESC键返回主菜单"));
settextcolor(RGB(64,0,128));//设置文本颜色
settextstyle(25,0, TEXT("微软雅黑"));
outtextxy(length*0.36, high*0.65, TEXT("方向键控制移动吃掉小鱼"));
outtextxy(length*0.36, high*0.7, TEXT("在限时内达到目标分"));
outtextxy(length*0.36, high*0.75, TEXT("闹钟增加时间 炸弹减少时间"));
outtextxy(length*0.36, high*0.8, TEXT("三条生命 撞大鱼失去一条"));
FlushBatchDraw();
Sleep(2);
if(kbhit()) // 判断是否有输入
{
input = getch(); // 根据用户的不同输入来移动,不必输入回车
if (input == '1')
gameStatus = 1;
else if (input == '2')
{
gameStatus = 2;
exit(0);
}
}
}
void pauseMenu() // 游戏暂停后菜单界面,一般按ESC键后启动该界面
{
putimage(0, 0, &img_bk0);//显示背景
settextcolor(RGB(123,90,254));
settextstyle(70,0, TEXT("华文琥珀"));
outtextxy(length*0.36, high*0.19, TEXT("大鱼吃小鱼"));
setbkmode(TRANSPARENT);
settextcolor(RGB(106,0,0));
settextstyle(37,0, TEXT("幼圆"));
outtextxy(length*0.35, high*0.36, TEXT("1 新游戏"));
outtextxy(length*0.35, high*0.44, TEXT("2 退出游戏"));
settextcolor(RGB(64,0,128));
settextstyle(30,0, TEXT("微软雅黑"));
outtextxy(length*0.36, high*0.55, TEXT("ESC键返回主菜单"));
settextcolor(RGB(64,0,128));
settextstyle(25,0, TEXT("微软雅黑"));
outtextxy(length*0.36, high*0.65, TEXT("方向键控制移动吃掉小鱼"));
outtextxy(length*0.36, high*0.7, TEXT("在限时内达到目标分"));
outtextxy(length*0.36, high*0.75, TEXT("闹钟增加时间 炸弹减少时间"));
outtextxy(length*0.36, high*0.8, TEXT("三条生命 撞大鱼失去一条"));
FlushBatchDraw();
Sleep(2);
if(kbhit()) // 判断是否有输入
{
input = getch(); // 根据用户的不同输入来移动,不必输入回车
if (input == '1')
gameStatus = 1;
else if (input == '2')
{
gameStatus = 2;
exit(0);
}
}
}
void startup()
{
mciSendString(TEXT("open resource/music.mp3 alias bkmusic"), NULL, 0, NULL);//打开背景音乐
mciSendString(TEXT("play bkmusic repeat"), NULL, 0, NULL); // 循环播放
initgraph(length,high);
// 获取窗口句柄
HWND hwnd = GetHWnd();
// 设置窗口标题文字
SetWindowText(hwnd, TEXT("大鱼吃小鱼"));
score_p1=0;
p1size=40;//玩家初始大小为40
start_p1size=p1size;
srand((unsigned) time(NULL));//随机数
//是否调整 IMAGE 的大小以适应图片
loadimage(&img_bk0, TEXT("resource/enter.jpg"),1000,640,true);//进入界面
loadimage(&img_bk, TEXT("resource/background.jpg"),1000,640,true);//背景
loadimage(&imgTEXTime, TEXT("resource/time.jpg"),35,35,true);
loadimage(&imgTEXTimebei, TEXT("resource/timebei.jpg"),35,35,true);//闹钟
loadimage(&img_zha, TEXT("resource/zhadan1.jpg"),40,40,true);
loadimage(&img_zhabei, TEXT("resource/zhadan1bei.jpg"),40,40,true);//炸弹
loadimage(&img_f1, TEXT("resource/food1.jpg"),40,30,true);
loadimage(&img_f1bei, TEXT("resource/food1bei.jpg"),40,30,true);//1号鱼
loadimage(&img_f_f1, TEXT("resource/f_food1.jpg"),40,30,true);
loadimage(&img_f_f1bei, TEXT("resource/f_food1bei.jpg"),40,30,true);//1号鱼反向
loadimage(&img_f2, TEXT("resource/food2.jpg"),65,40,true);
loadimage(&img_f2bei, TEXT("resource/food2bei.jpg"),65,40,true);//2号鱼
loadimage(&img_f_f2, TEXT("resource/f_food2.jpg"),65,40,true);
loadimage(&img_f_f2bei, TEXT("resource/f_food2bei.jpg"),65,40,true);//2号鱼反向
loadimage(&img_f3, TEXT("resource/food3.jpg"),80,80,true);
loadimage(&img_f3bei, TEXT("resource/food3bei.jpg"),80,80,true);//3号鱼
loadimage(&img_f_f3, TEXT("resource/f_food3.jpg"),80,80,true);
loadimage(&img_f_f3bei, TEXT("resource/f_food3bei.jpg"),80,80,true);//3号鱼反向
loadimage(&img_f4, TEXT("resource/food4.jpg"),120,110,true);
loadimage(&img_f4bei, TEXT("resource/food4bei.jpg"),120,110,true);//4号鱼
loadimage(&img_f_f4, TEXT("resource/f_food4.jpg"),120,110,true);
loadimage(&img_f_f4bei, TEXT("resource/f_food4bei.jpg"),120,110,true);//4号鱼反向
loadimage(&img_f5, TEXT("resource/food5.jpg"),250,125,true);
loadimage(&img_f5bei, TEXT("resource/food5bei.jpg"),250,125,true);//5号鱼
loadimage(&img_f_f5, TEXT("resource/f_food5.jpg"),250,125,true);
loadimage(&img_f_f5bei, TEXT("resource/f_food5bei.jpg"),250,125,true);//5号鱼反向
player.position_x=length/2.0;//玩家横坐标
player.position_y=high/2.0;//玩家纵坐标
player.v_x=0.4;//玩家水平速度
player.v_y=0.4;//玩家竖直速度
timer.position_x=-2000;//闹钟横坐标
timer.position_y=rand()%500;//闹钟纵坐标随机设定
timer.v_x=0.6;//闹钟速度
zhadan.position_x=length+500;//横坐标
zhadan.position_y=rand()%500;//纵坐标随机设定
zhadan.v_x=0.6;//速度
food1.position_x=0;//1号鱼横坐标
food1.position_y=rand()%400;//1号鱼纵坐标随机设定
food1.v_x=0.45;//1号鱼速度
f_food1.position_x=length+(rand()%10)*100;//反向1号鱼横坐标
f_food1.position_y=rand()%400;//反向1号鱼纵坐标随机设定
f_food1.v_x=0.45;//反向1号鱼速度
food2.position_x=-200;//2号鱼横坐标
food2.position_y=rand()%400;//2号鱼纵坐标随机设定
food2.v_x=0.45;//2号鱼速度
f_food2.position_x=length+length+(rand()%15)*100;//反向2号鱼横坐标
f_food2.position_y=rand()%400;//反向2号鱼纵坐标随机设定
f_food2.v_x=0.45;//反向2号鱼速度
food3.position_x=-500;//3号鱼横坐标
food3.position_y=rand()%400;//3号鱼纵坐标随机设定
food3.v_x=0.43;//3号鱼速度
f_food3.position_x=length+length+(rand()%20)*100;//反向3号鱼横坐标
f_food3.position_y=rand()%400;//反向3号鱼纵坐标随机设定
f_food3.v_x=0.43;//反向3号鱼速度
food4.position_x=-800;//4号鱼横坐标
food4.position_y=rand()%400;//4号鱼纵坐标随机设定
food4.v_x=0.42;//4号鱼速度
f_food4.position_x=length+length+(rand()%20)*150;//反向4号鱼横坐标
f_food4.position_y=rand()%400;//反向4号鱼纵坐标随机设定
f_food4.v_x=0.42;//反向4号鱼速度
food5.position_x=-10000;//5号鱼横坐标
food5.position_y=rand()%400;//5号鱼纵坐标随机设定
food5.v_x=0.4;//5号鱼速度
f_food5.position_x=length+length+(rand()%10)*1000;//反向5号鱼横坐标
f_food5.position_y=rand()%400;//反向5号鱼纵坐标随机设定
f_food5.v_x=0.4;//反向5号鱼速度
initgraph(length,high);//画面大小
BeginBatchDraw();
while (gameStatus==0)
startMenu();//初始菜单界面
startTime=clock();
}