球球大作战php源码,球球大作战,源码分享

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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;

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值