回 帖 发 新 帖 刷新版面

主题:打砖块游戏……请多多指教(源码)

/*07年3月更新,作者:贾胜华,此非最新版本,算法有多处更新没有添加,
有任何建议或意见和联系:xiajia_1981@163.com 或者 QQ:39970763*/
//---------------------------------------------------------------------------------------------
/*DZ2.h文件内容如下*/
/*定义必要结构体*/
/*
程序默认定义:砖块的最慢设计为8行8列,即最多64个砖块,相邻砖块必须紧贴着,不能有间隙;
球的大小不能在游戏过程中改变,在游戏开始之前就必须确定球的大小,因为改变球变大将会造成意想不到的碰撞;
*/
struct _Point
{
 double x; //横坐标
 double y; //纵坐标
};

struct _Area
{
 double Xmin;
 double Xmax;
 double Ymin;
 double Ymax;
};

struct _Ball
{
 double BallR; //球的半径
 struct _Point CenterPoint; //球心坐标
 short Color; //球的颜色
 short type; //球的类型
 double RadArph; //球的运动方向角:垂直向上运动时,这个值为0
 double Speed; //球的运动速度
 int HitNO;  //用于记录上一次碰撞的砖块编号
};

struct _Brick
{
 double Longth; //砖块的长
 double Higth; //砖块的高
 struct _Point CenterPoint; //砖块的中心坐标
 short Color; //砖块的颜色
 short Type;  //砖块的类型 -1:表示该砖块无效,即该砖块不参与碰撞判断
 int HitTimes; //砖块的被打击次数
};

struct _Baffle
{
 double Longth; //挡板的长度
 double Higth; //挡板的高度
 struct _Point CenterPoint; //挡板的中心坐标
 short Color; //挡板的颜色
 short Type; //挡板的类型
 int HitTimes; //挡板的击球次数
 int MoveDirection; //挡板的移动方向 0:没有移动 1:向左移动 2:向右移动
 int Speed;
};

struct _Wall
{
 struct _Area Area;
};

/*定义适当的方法*/


//********************************************************
//判断球在是否发生碰撞
//********************************************************
int IsInHitArea(struct _Ball Ball,struct _Brick *Brick,struct _Baffle Baffle,struct _Wall Wall,int * HitNumble,int BrickSum);//用于判断球是否在某个砖块或者墙面的碰撞范围内
/*参数说明:
Ball 球的信息
Brick 砖块的信息(砖块用数组存储)
Baffle 挡板的信息
Wall 墙面的信息
HitNumble 这是一个数组用于存储参与碰撞的对象的信息
-1:该数组有效数据结束的标记
0-99:参与碰撞的砖块的编号
100:挡板参与碰撞
101:墙面参与碰撞
BrickSum:游戏中有效的砖块数量
函数返回值为参与碰撞的次数*/


//*******************************************************
//处理球与相应砖块碰撞的过程
//(主要计算碰撞之后球的运动路线和对相应砖块进行标记)
//*******************************************************
int BrickCrashProc(struct _Ball * Ball,struct _Brick * Brick,int HitNumble);
/*参数说明:
*Ball 指向球的指针,求得相关信息将会在这里被修改
*Brick 指向砖块数组的指针,砖块的信息将会在这里被修改
HitNumble 参与处理的砖块的编号
返回碰撞是否产生 0:没有碰撞进行 1:有碰撞进行
*/

//*******************************************************
//处理球与挡板的碰撞的过程
//(主要计算碰撞之后球的运动路线和挡板进行标记)
//*******************************************************
int BaffleCrashProc(struct _Ball * Ball,struct _Baffle *Baffle);
/*参数说明:
*Ball 指向球的指针,球的相关信息将会在这里被修改
*Baffle 指向挡板的指针,挡板的信息将会在这里被修改
返回碰撞是否产生 0:没有碰撞进行 1:有碰撞进行
*/

//*******************************************************
//处理球与墙面的碰撞过程
//(主要计算碰撞之后球的运动路线)
//*******************************************************
int WallCrashProc(struct _Ball * Ball,struct _Wall Wall);
/*参数说明:
*Ball 指向球的指针,球的相关信息将会在这里被修改
Wall 墙面的信息
返回碰撞是否产生 0:没有碰撞进行 1:有碰撞进行
*/

//*******************************************************
//挡板的移动函数
//*******************************************************
void BaffleMoveLeft(struct _Baffle *Baffle,struct _Wall Wall);
void BaffleMoveRight(struct _Baffle *Baffle,struct _Wall Wall);
void BaffleNoMove(struct _Baffle *Baffle);
/*参数说明:
*Baffle 指向挡板的指针,挡板的信息将会在这里被修改
Wall 墙面的信息
*/

//*******************************************************
//改变球大小的函数:注意游戏过程中,球变大的操作要谨慎,
//极有可能做成程序错误,因为球变大将会造成不可预计的碰撞
//*******************************************************
void BallChangeSize(struct _Ball *Ball,double r);
/*参数说明:
*Ball 指向球的指针
r 改变后求得半径
*/

//*******************************************************
//改变球的运动速度
//*******************************************************
void BallChangeSpeed(struct _Ball *Ball, double Speed);
/*参数说明:
*Ball 指向球的指针
Speed 改变后的运动速度
*/

//*******************************************************
//改变挡板的长度
//*******************************************************
void BaffleChangeLongth(struct _Baffle *Baffle, double Longth,struct _Wall Wall);
/*参数说明:
*Baffle 指向挡板的指针
Longth 挡板改变后的长度
Wall 墙壁的数据
*/

//***********************************
//数学处理函数
//***********************************
double AngleChange(double x); 
double Square(double x);
/*
AngleChange() 繁角化简角的函数
Square() 计算平方的函数
*/

//***********************************
//下面是一些描绘界面的函数
//***********************************
void DrawBrick(struct _Brick Brick);//描绘一个砖块
void DrawBall(struct _Ball Ball);//描绘一个球
void DrawBaffle(struct _Baffle Baffle);//描绘挡板
void DrawWall(struct _Wall Wall);//描绘墙壁
//檫图操作
void KillDrawBrick(struct _Brick Brick);//描绘一个砖块
void KillDrawBall(struct _Ball Ball);//描绘一个球
void KillDrawBaffle(struct _Baffle Baffle);//描绘挡板
void KillDrawWall(struct _Wall Wall);//描绘墙壁

//*********************************************
//下面是程序调适函数
//*********************************************
void ErrerProc();
/*
ErrerProc() 错误处理函数
*/

回复列表 (共1个回复)

沙发

……代码太长了,发布过来了……
访问:blog.csdn.net/xiajia/

我来回复

您尚未登录,请登录后再回复。点此登录或注册