当前位置:  编程技术>c/c++/嵌入式
本页文章导读:
    ▪字符统计算法      一、要求       给定一个字符串,从字符串中找出出现次数最多的字符。 二、实现       原理:利用数组来存储字符出现的次数,利用数组下标表示对应的字符.........
    ▪Cocos2d-x跨平台游戏开发教程1-HelloWorld!      Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于 cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2.1 及更高版本, WindowsXP & Windows7,windows phone 8.Cocos2d-X是一个开源的移.........
    ▪关于一种页游服务器的想法            这几天一直写上层逻辑,因为是sns游戏的,所以压力不是很大,但还是想做一套页游mmorpg类游戏的框架。闲暇时候就玩玩天龙八部,读读征途的代码。机缘巧合,遇见.........

[1]字符统计算法
    来源:    发布时间: 2013-10-14

一、要求

       给定一个字符串,从字符串中找出出现次数最多的字符。

 

二、实现

       原理:利用数组来存储字符出现的次数,利用数组下标表示对应的字符。

1 #include <stdio.h>
2 #include <string.h>
3
4
5 //要统计的字符串
6 char *s = "aaffcsdf23aaaaa41678hjjmrfaaaaa";
7
8
9 int main(void)
10 {
11 int len,i;
12 int char_count;
13 char c;
14 //字符串中每个字符出现的次数,最多能表示128种字符(7位ASCII码)
15 char times[128]={0};
16
17 char_count = 0;
18 //字符串长度
19 len= strlen(s);
20
21 //统计字符串各个字符出现的次数
22 for(i=0;i<len;i++)
23 times[s[i]]++;
24
25 //找出出现次数最多的那一个字符
26 for(i=0;i<128;i++)
27 {
28 if(times[i]>char_count)
29 {
30 char_count = times[i];//出现次数,始终保存当前出现次数的最大值
31 c = (char)i;//是哪一个字符
32 }
33 }
34
35 printf("出现最多的字符是:%c ,出现的次数为:%d次\n",c,char_count);
36
37 return 0;
38 }

运行结果:

 

本文链接


    
[2]Cocos2d-x跨平台游戏开发教程1-HelloWorld!
    来源:    发布时间: 2013-10-14

Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于 cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2.1 及更高版本, WindowsXP & Windows7,windows phone 8.

Cocos2d-X是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ cocos2d-iPhone项目的版本。cocos2d-X发展的重点是围绕cocos2d跨平台。cocos2d-X提供的框架外,手机游戏,可以写在C+ +或者Lua中,使用API是cocos2d-iPhone完全兼容。cocos2d-X项目可以很容易地建立和运行IOS,Android的三星Bada,黑莓Blackberry操作系统和更多。cocos2d-X还支持Windows、Mac和Linux等桌面操作系统,因此,我们可以编写的源代码很容易在桌面操作系统中编辑和调试。

和学习任何其他语言,我们首先从helloworld开始,cocos2d-x工程中自带helloworld项目,我们就可以通过这个项目来看出cocos2d-x的基本结构。

开发逻辑相关的即是Classes和Resource文件夹,Classes文件夹放置代码,Resource放置资源(图片,声音,图片配置文件等)

程序结构:

在win32平台上,就是win32文件夹中的内容和Classes当中的内容,win32文件夹内就是main类,而Classes中是平台配置文件和我们的helloworld场景类

main类就算是win32平台的一个入口类启动程序

AppDelegate是应用真正的入口,在这里有平台的适配参数,找到导演类,启动我们的场景。

在AppDelegate除了构建函数和析构函数之外,就是处理暂停和重新开始的函数,initInstance函数处理不同平台的问题,在applicationDidFinishLaunching中就是处理导演类和

场景开始代码很易懂包括设置导演类帧每秒等参数。

 

然后是用摄像机的runWithScene开始场景

最后就是HelloWorldScene场景类,构建方法主要是建层等,关键的方法是init(),主要是构建场景中的

代码也很易懂,每次创建元素后将其使用this-〉addchild函数插入,即放入此场景,第二个参数就是绘制的顺序。

其中构建关掉程序的方法中传入了menuCloseCallback方法,即是本类中的menuCloseCallback方法,这样就完成了第一个程序helloworld

 

 

本文链接


    
[3]关于一种页游服务器的想法
    来源:    发布时间: 2013-10-14

      这几天一直写上层逻辑,因为是sns游戏的,所以压力不是很大,但还是想做一套页游mmorpg类游戏的框架。闲暇时候就玩玩天龙八部,读读征途的代码。机缘巧合,遇见了之前天龙八部的服务器引擎工程师,交流了很久才知道,现在网上流传的天龙八部的版本已经很老很老了。据他说现在的天龙八部的服务器框架也加上了网关的设计,负责网络均衡;添加了消息队列,分离了通信和逻辑处理。

      不过我仍然觉得旧框架可以负载现在的页游服务器,旧的线程机制是这样,每个线程负责一个地图,并且负责这个地图上面玩家的与客户端的通信、逻辑处理,负责这个地图上面的怪物AI。搜集了一些数据。

 

                send && recv 是系统函数,每秒大概可以执行18w次。(听一个主程讲座记录)

                线程每秒可以执行处理15w条消息(前项目所得数据)

                线程每秒跑50帧,一帧大概20ms,这20ms可以驱动4k只怪物的AI(查询一个在线游戏所得)

      

      现在我们假设一个线程负责一个地图,这张地图上面,大概有400只怪物,1000人,每人每秒大概3次操作。也就是说要处理大概3k条消息,驱动400只怪物,大概要有6k次的系统调用。发送处理,我们做这样的处理,不能实时的发送给客户端,每个连接每秒发送三次。

     这样消息处理占用了20ms,send && recv的系统调用占用了33ms,抛去这些消耗,剩下的CPU资源完全可以驱动这400只怪物。

     当然我们的每个线程一定要做成可以配置的,比如对于开服时候的新手村,一定要用独立的线程去负责,其他的70级-80级的地图我们可以让一个线程去负责2-3张地图。那么我们的页游服务器就可以这样设计:

      

    
最新技术文章:
▪C++单例模式应用实例
▪C++设计模式之迭代器模式
▪C++实现动态分配const对象实例
▪C++设计模式之中介者模式
▪C++设计模式之备忘录模式
▪C++插入排序算法实例
▪C++冒泡排序算法实例
▪C++选择排序算法实例
▪C++归并排序算法实例
▪C++设计模式之观察者模式
▪C++中复制构造函数和重载赋值操作符总结
▪C++设计模式之状态模式
▪C++设计模式之策略模式
▪C++设计模式之访问者模式
▪C++设计模式之模板方法模式
▪C++实现下载的代码
▪C++模板之特化与偏特化详解
▪C++实现查壳程序代码实例
▪C语言、C++内存对齐问题详解
▪C语言、C++中的union用法总结
▪C++基于CreateToolhelp32Snapshot获取系统进程实例
▪C++中memcpy和memmove的区别总结
▪C++通过TerminateProess结束进程实例
▪C++内存查找实例
▪C++实现CreatThread函数主线程与工作线程交互的...
▪C++设计模式之桥接模式
▪C++中关键字Struct和Class的区别
▪C++设计模式之组合模式
▪C++ COM编程之什么是组件?
▪C++ COM编程之什么是接口?
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3