该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include "qiu.h"
int main()
{
initgraph(800, 600);
mciSendString("open res/彩豆森林.mp3 alias mus", NULL, NULL, NULL);//加载音乐
for(int i=0;i<200;i++)
loadimage(&img[i], "res/1.jpg",i,i);//获取不同大小的图片
srand((unsigned)time(NULL));
settextstyle(30, 0, "黑体");//这里指的彩豆大小
setbkmode(0);//去掉文字输出的背景
mciSendString("play mus repeat", NULL, NULL, NULL);//播放音乐
while (1)
{
for (int i = 0; i<300; i++)
if (sx + color[i].x - 2040 >= 400 - me.size/2 && sx + color[i].x - 2040 <= 400 + me.size/2 &&
sy + color[i].y - 2040 >= 300 - me.size/2 && sy + color[i].y - 2040 <= 300 + me.size/2)
//如果自己吃到了彩豆
{
color[i].sign = 0;//这个彩豆被吃啦,标记一下,下次不在这里了
me.sign2 = i;
sprintf(_score, "%d", ++score-20);//积分增加
switch ((score)/30)
{
case 0:break;
case 1: me.size = score; break;
case 2: me.size = (score - 60) / 2 + 60; break;
case 3:case 4:me.size = (score - 90) / 3 + 85; break;
case 5:case 6:case 7:
me.size = (score - 150) / 4 + 105; break;
case 8:case 9:case 10:case 11:case 12:case 13:
me.size= (score - 240) / 4 + 127; break;
default://哎呀呀,太麻烦了,直接一个default吧~~~~~~~
me.size = (score - 420) / 6 + 172;
break;
}//这个球长大的地方没写好,球的长大不正常
if (me.size > 199) me.size = 199;
}
if (MouseHit())//是否有鼠标消息
{
msg = GetMouseMsg();//获取鼠标消息
me.x = msg.x, me.y = msg.y;
}
draw(move());
}
}
//分裂与合并还没有写,后面再写吧
//我只是一个初学c++的新人,希望大神可以多多提下意见。。
//
#pragma once
#include
#include
#include
#include
#include
#pragma comment(lib,"winmm.lib")
#define ox 650 //操纵圆x原点
#define oy 450 //操纵圆y原点
int sx = 0, sy = 0;//移动地图基点
IMAGE img[200];
MOUSEMSG msg;
int score = 20;//得分
char _score[10];
class System
{
public:
int sign = 0;//标记
int sign2 = 0;//记录彩豆被吃的记录
int x, y;//坐标
int _cr;//颜色
int size = 30;//球的大小
int color[7] = { WHITE, RED, YELLOW, GREEN, BLUE, MAGENTA, LIGHTCYAN };
System() {};
~System() {}
};
System me;//自己
System color[300];//彩豆
bool move();
void draw(bool i);
void Colorsys();//彩豆与草
bool move()
{
if (sqrt((me.x - ox)*(me.x - ox) + (me.y - oy)*(me.y - oy)) <= 100)
{
if (sx > -2400 && sx < 2400)
sx -= (me.x - ox) / 10;
else
{
if (sx <= 0) sx++;
if (sx >= 800) sx--;
}
if (sy > -2300 && sy < 2300)
sy -= (me.y - oy) / 10;
else
{
if (sy <= 0) sy++;
if (sy >= 600) sy--;
}
return 1;
}
return 0;
}
void draw(bool i)
{
BeginBatchDraw();//批量绘制
cleardevice();
//***************这里是地形图******************
setlinecolor(RGB(40, 40, 40));//地形
setlinestyle(PS_DASHDOT, 4);
for (int i = sx - 2400; i <= 2400; i += 80)
line(i, 0, i, 600);
for (int i = sy - 2300; i <= 2300; i += 80)//地图中的虚色线
line(0, i, 800, i);
//**********************************************
setlinecolor(RED);//地图红色边界
setlinestyle(PS_SOLID, 4);
rectangle(sx - 2050, sy - 2052, sx + 2830, sy + 2630);
*************彩豆与自己**********************
Colorsys();
for (int i = 0; i < 300; i++)//这里画彩豆
if (color[i].sign == 1)//如果这里的彩豆没有被吃
{
settextcolor(color[i].color[color[i]._cr]);//彩豆颜色
outtextxy(sx + (color[i].x - 2040), sy + (color[i].y - 2040), "*");//画彩豆
}
putimage(400-me.size/2, 300-me.size/2, &img[me.size]);//这是自己
//******************操纵盘************************
setlinestyle(PS_SOLID, 1);
setlinecolor(WHITE);
circle(ox, oy, 100);
if (i)
{
circle(me.x, me.y, 10);
line(ox, oy, me.x, me.y);
line(me.x, oy, me.x, me.y);
}
line(ox - 100, oy, ox + 100, oy);
line(ox, oy - 100, ox, oy + 100);
//************************************************
settextcolor(WHITE);//积分颜色
outtextxy(5, 5, _score);//积分
EndBatchDraw();//结束批量绘制
}
void Colorsys()//彩豆相关信息
{
while (me.sign<300)
{
color[me.sign]._cr = rand() % 7;
color[me.sign].x = rand() % (2040 + 2740);
color[me.sign].y = rand() % (2040 + 2540);
color[me.sign].sign = 1;
me.sign++;
}
if (me.sign2)
{
color[me.sign2]._cr = rand() % 7;
color[me.sign2].x = rand() % (2040 + 2740);
color[me.sign2].y = rand() % (2040 + 2540);
color[me.sign2].sign = 1;
me.sign2 = 0;
}
}