同步操作将从 留天下/CollisionBall 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一个联网的趣味性小游戏,碰碰球,在游戏中通过操纵自己的小球吃掉随机产生的食物,不断壮大自己,或者撞击其它玩家,通过自己的体力和大小之间的关系和他人的体力与大小之间的关系决定谁是胜利者,还有30s一波的随机黑洞,刺激!!!项目附带自己编写的一个网络库。代码在NetLib文件夹.
玩家通过上下左右建控制自己的角色移动,按住ctrl键角色将会加速,加速时会消耗体力值,体力值为零时将不能加速,玩家通过吃掉每隔一段时间随机生成的食物来壮大自己并补充体力值,玩家间之间通过碰撞来消灭敌人,不要以为体积大的一定能消灭体积小的,没这回事,若是玩家的体力值过低,体积比自己小的敌人也能打败自己,若是体力值和体积之间的权值相等则互不能伤害。游戏中玩家可以在右上方的小地图来查看自己当前的真实位置,游戏中也有每30s一波的黑洞风暴,玩家若是靠近黑洞则会被黑洞拉扯,拉扯到黑洞内侧时玩家的体积将会飞速降低,所以千万别被黑洞拉扯到内部,否则千年道行一朝丧。
游戏中使用的UI库为本人前段时间编写的UIEngne库,该库简单使用如有兴趣可转到项目地址查看:http://git.oschina.net/lsylovews/uiengine
添加了游戏玩家名字标识的功能,同时添加了游戏其它玩家体积排行榜的功能,其它玩家取前五个体积最大的玩家列于游戏屏幕右边。自己的体积列于最下方。
该网络库主要实现了TCP协议下的服务器和客户端,还有UDP协议下的服务器和客户端。 TCP版的服务器主要包含两种网络模型select选择模型和效率、处理并发都较高(具体有多高看运行的PC性能如何)的IOCP完成端口模型 UDP版的服务器主要包含普通模型和IOCP完成端口模型。
void ServerProc(SOCKET sock, const char* buff, CTCPServer* pServer, LPVOID Param) //客户端消息回调函数
{
Do............(进行一些处理)
}
int main()
{
CUDPServer server;
if (server.StartServer(ServerProc //客户端消息回调函数,NULL //回调函数预留参数,6036//服务器端口,UMODE_IOCP //服务器模型) == true)
{
cout << "开启服务器成功" << endl;
}
else
{
cout << server.GetLastError() << endl;
}
getchar(); //防止服务器退出
return 0;
}
#include<TCPServer.h>
class SelfServer :public Net::CTCPServer
{
public:
SelfServer();
virtual ~SelfServer();
/*
*OnRecv(SOCKET sock, const char* buff)
*重写CTCPServer类中的收到客户端消息的回调函数
*@Param sock:消息来源sock
*@Param buff:消息内容
*/
virtual void OnRecv(SOCKET sock, const char* buff){ ..........}
...................
private:
...............
.............
};
#include"SelfServer.h"
int main()
{
SelfServer Server;
Server.StartServer(NULL, NULL, 6036, Net::MODE_IOCP);
getchar()//防止服务器直接退出
return 0;
}
其它网络库中的类使用方法如上的CTCPServer都有两种使用方法一种是自定义回调函数,一种是继承后重写消息回调函数
该网络库也和windows下的一样包含TCP和UDP协议下的客户端和服务端该网络模型TCP服务端包含select模型(相比于Windos下的select模型并发数要大,最优处理数在几百,最大可达2048,这里我限制它的最大为512),poll模型(select的改良版,提升并发数,效率没有很大提升),epoll模型(既提升了了并发数又提升了效率),用户可根据自身需要选择自己所需的模型。这里我使用的Linux为Ubuntu16.04 LTS
首先进入UNet文件夹,使用makefile文件编译出.so动态链接库然后在执行install.sh文件进行安装, 操作如图所示: 其中的make命令是使用makefile将代码编译为Linux下的.so共享库(和Woindows下的dll类似),安装命令主要是将生成的.so移动至Linux下的/usr/lib文件夹下,并将.h文件移动至/usr/include文件夹下,这两个文件夹书Linux内核存放用户库文件和头文件的地方。最后一个CS命令可以忽略,这个是本人自己写的Linux下的一个截屏软件,主要是在Linux下没找到一个好用的截屏软件,有兴趣可在我的项目中找到http://git.oschina.net/lsylovews/jiepingruanjian
两个文件都是使用makefile进行编译的.makefile本质上还是使用的gcc指令,只是一次性调用而已不要像传统方法一样一个指令一个指令敲
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。