精灵游戏源码-Funcode台球游戏源码(可直接复制运行)

1、实验要求

玩家通过联通球杆与单个台球碰撞。 当台球以一定的速度穿过桌子右侧相同颜色的洞时,球进入洞中,新的球重新分配在桌子右侧,开始游戏。 要求如下:

1 游戏初始界面如图所示。 一侧有一个小台球,它在x方向的位置是固定的,它在y方向的位置是随机的。 左侧有八个颜色不同、体积较大的孔。 游戏的目的是用左边的台球以一定的速度穿过左边同色的洞,即使台球进入洞内,然后重新分配新的球。

2 球杆随着鼠标移动而移动,点击球杆,台球获得前进速度,同时向前移动。 台球的前进方向有一条实线表示球的移动方向。

3 两侧的孔随着通讯的频率不断改变位置。 洞的x右侧保持不变,替换y坐标的位置,即每一轮中每个洞的位置与下一个洞相连,最底下的洞与下一个洞的位置相连第一个洞。 所有这些操作必须以一种频率完成。 因此,当游戏以一定的频率进行时精灵游戏源码,两侧的洞可以达到循环变化的效果。

4 当球击中桌子边缘时,它会以发射角度的角度弹开。

5个球进洞的判断是,当球以一定的速度穿过同颜色的洞时,台球消失,说明球已入洞,左侧随机生成一个新球。 球移动到球洞的速度不宜太快。 如果速度太快,球会直接穿过洞。 如果速度太小,球就不会进洞。

二、代码

LessonX.h:

//

//

//

//

#ifndef_LESSON_X_H_

#define_LESSON_X_H_

//

#包括

//

//游戏管理器类。负责处理游戏的主循环、游戏初始化、结束等。

CGameMain 类

私人的:

intm_iGameState;

intm_iPlayState;//操作状态,0--可以点击鼠标玩球; 1--球在运动,等待最后的踢球机会

intm_iBallNumber;//每轮从0-7随机一张彩色图片,作为本轮的球

floatm_fOldRotation;//球杆的初始方向,用于球杆重置

CSprite*m_spBall[8];//8个球精灵

CSprite*m_spBallCue;//提示精灵

intm_iHoleNumber[8];

CSprite*m_spBallHole[8];//8个孔的精灵

精灵游戏源码-Funcode台球游戏源码(可直接复制运行)

floatm_fHoleRollTime;

floatm_fRotateTime;//球杆击球时,进行一小段时间的角度旋转,模拟击球的动作

CSprite*m_spVerSide[2];//台球桌的上下边缘精灵

CSprite*m_spHorSide[2];//台球桌左右边缘精灵

民众:

CGameMain();//构造函数

~CGameMain();//析构函数

//获取方法

intGetGameState(){returnm_iGameState;}

//设置方法

voidSetGameState(constintiState){m_iGameState=iState;}

//游戏主循环等

voidGameMainLoop(floatfDeltaTime);

voidGameInit();

voidGameRun(floatfDeltaTime);

无效游戏结束();

voidOnMouseMove(constfloatfMouseX, constfloatfMouseY);//参数为键盘X、Y坐标的值

voidOnMouseClick(consttiMouseType, constfloatfMouseX, constfloatfMouseY);

voidOnSpriteColSprite(constcharszSrcName[], constcharszTarName[]);

};

//

externCGameMaing_GameMain;

#endif//_LESSON_X_H_

LessonX.cpp:

//

//

//

精灵游戏源码-Funcode台球游戏源码(可直接复制运行)

//

#ifndef_LESSON_X_H_

#define_LESSON_X_H_

//

#包括

//

//游戏管理器类。负责处理游戏的主循环、游戏初始化、结束等。

CGameMain 类

私人的:

intm_iGameState;

intm_iPlayState;//操作状态,0--可以点击鼠标玩球; 1--球在运动,等待最后的踢球机会

intm_iBallNumber;//每轮从0-7随机一张彩色图片,作为本轮的球

floatm_fOldRotation;//球杆的初始方向精灵游戏源码,用于球杆重置

CSprite*m_spBall[8];//8个球精灵

CSprite*m_spBallCue;//提示精灵

intm_iHoleNumber[8];

CSprite*m_spBallHole[8];//8个孔的精灵

floatm_fHoleRollTime;

floatm_fRotateTime;//球杆击球时,进行一小段时间的角度旋转,模拟击球的动作

CSprite*m_spVerSide[2];//台球桌的上下边缘精灵

CSprite*m_spHorSide[2];//台球桌左右边缘精灵

民众:

CGameMain();//构造函数

~CGameMain();//析构函数

//获取方法

intGetGameState(){returnm_iGameState;}

//设置方法

精灵游戏源码-Funcode台球游戏源码(可直接复制运行)

voidSetGameState(constintiState){m_iGameState=iState;}

//游戏主循环等

voidGameMainLoop(floatfDeltaTime);

voidGameInit();

voidGameRun(floatfDeltaTime);

无效游戏结束();

voidOnMouseMove(constfloatfMouseX, constfloatfMouseY);//参数为键盘X、Y坐标的值

voidOnMouseClick(consttiMouseType, constfloatfMouseX, constfloatfMouseY);

voidOnSpriteColSprite(constcharszSrcName[], constcharszTarName[]);

};

//

externCGameMaing_GameMain;

#endif//_LESSON_X_H_

主要.cpp

//------------------------------------------------ ----------------------------

//

//------------------------------------------------ ----------------------------

#include“CommonClass.h”

#include“LessonX.h”

///

//

//主函数入口

//

//

intPASCALWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

//初始化游戏引擎

if(!CSystem::InitGameEngine(hInstance,lpCmdLine))

返回0;

//Todo: 此处使用API​​修改窗口标题

CSystem::SetWindowTitle("LessonX");

//引擎主循环,处理屏幕图像刷新等工作

while(CSystem::EngineMainLoop())

// 获取两次调用的时间差,传递给游戏逻辑处理

floatfTimeDelta=CSystem::GetTimeDelta();

// 执行游戏的主循环

g_GameMain.GameMainLoop(fTimeDelta);

};

//关闭游戏引擎

CSystem::ShutdownGameEngine();

返回0;

//================================================== ================================

//

// 引擎捕获到键盘通讯消息后,会调用该函数

voidCSystem::OnMouseMove(constfloatfMouseX, constfloatfMouseY)

//这里可以添加游戏需要的响应函数

g_GameMain.OnMouseMove(fMouseX,fMouseY);

//================================================== ================================

//

// 引擎捕获到键盘点击消息后,会调用该函数

voidCSystem::OnMouseClick(consttiMouseType, constfloatfMouseX, constfloatfMouseY)

//这里可以添加游戏需要的响应函数

g_GameMain.OnMouseClick(iMouseType, fMouseX, fMouseY);

//================================================== ================================

//

// 引擎捕获到键盘弹出消息后,会调用该函数

voidCSystem::OnMouseUp(consttiMouseType, constfloatfMouseX, constfloatfMouseY)

//这里可以添加游戏需要的响应函数

//================================================== ================================

//

// 引擎捕获到鼠标按下消息后,会调用该函数

//bAltPressbShiftPressbCtrlPress是判断当前是否按下了Shift、Alt、Ctrl。比如可以判断Ctrl+E组合键

voidCSystem::OnKeyDown(consttiKey, constboolbAltPress, constboolbShiftPress, constboolbCtrlPress)

//这里可以添加游戏需要的响应函数

//================================================== ================================

//

//引擎捕获到鼠标弹出消息后,会调用该函数

voidCSystem::OnKeyUp(constintiKey)

//这里可以添加游戏需要的响应函数

//================================================== == ===============================

//

// 引擎捕获到精灵与精灵的碰撞后,调用该函数

voidCSystem::OnSpriteColSprite(constchar*szSrcName, constchar*szTarName)

g_GameMain.OnSpriteColSprite(szSrcName,szTarName);

//================================================== == ===============================

//

// 引擎捕获到精灵与世界边界的碰撞后,调用该函数。

//iColSide: 0在右边,1在右边,2在上面,3在下面

voidCSystem::OnSpriteColWorldLimit(constchar*szName, constintiColSide)

源文件下载地址:

提取码:ba59

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 游戏源码 精灵游戏源码-Funcode台球游戏源码(可直接复制运行) https://www.wkzy.net/game/180723.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务