![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
码农CGGG
现在是一个游戏开发者
展开
-
一段我和同学有意思的争论
面向对象最简单的问题, 网上甚至一些教材却给了形形色色的回答。 关于私有成员和继承之间的关系的问题。 今天我和同学在网上就这个问题争论了一下, 最终发现咱们俩的理解都是对的。 哈哈。 记录一下这段有意义的对话。 我是 “一头猪”…… 2009-07-17 21:46:08 WL我常常在想要有个技术牛人一直教你 2009原创 2009-07-17 23:33:00 · 1552 阅读 · 2 评论 -
VC编写windows服务程序
昨天一同学入职考核,需要用C/C++写一个服务程序,从XML读取配置,定期运行指定程序/脚本/命令……同学无解。。向我求助,然后我也没写过windows服务程序,于是琢磨了一下,弄出一个很简单的DEMO。 先从网上掏了一个VC6的程序叫 memorystatus ,其功能主要为启动一个服务定期向文件内写入当前剩余内存。然后看了一下windows自带一个sc.exe 用于管理服务。...原创 2010-08-27 11:48:25 · 292 阅读 · 0 评论 -
C++模板元编程
昨天WL发给我一段我觉得很“奇怪”的C++代码。。当时没看太懂,后来问了才知道是叫做模板元编程。 template <unsigned long N> struct binary { static unsigned const value = binary<N/10>::value << 1 ...原创 2010-08-27 12:56:14 · 115 阅读 · 0 评论 -
WIN平台下应用程序利用批处理更新自身
今天又碰到需要做一个简单的自动升级的客户端程序,客户端程序在拿到升级包并且解压之后,怎样自更新并再启动呢?这里我封装了一个类,利用批处理,将升级文件覆盖掉本地文件,然后重启动应用程序。 #ifndef KILL_MYSELF_H_#define KILL_MYSELF_H_#include <iostream>#include <vector>...2010-08-27 12:56:47 · 228 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(一)
前段时间和朋友一起做了一个类似于电驴、迅雷 + MSN工具的毛坯模型,基本上所有功能都是从socket通信级别向上实现。整体架构为C/S架构,使用MFC实现。技术上都是很老的东西,此文主要介绍类似于 电驴 的这样一个软件的设计思路和部分代码框架。我们实现的代码不是很优化,仅为设计思路的佐证。 我最初做这个小软件的想法是,方便一个小型网络中大家的资源共享和交流。每个人都能共享出自...原创 2010-08-27 13:00:19 · 407 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(二)
继续上次说的,其实任务调度宏观上普遍分为两种,实现上总的来说就是一个串行、一个并行,上次我们介绍的TCP传送服务我们是使用并行的实现的(任务池),这次我们再来一个串行的,这就简单多了,就是一个队列,FIFO,我们用它来实现下载任务(假设我们下载任务只能单独进行)。 我们用一个NS_Download_Pool类来封装对其的管理。 #ifndef NETSHARE_DOWNLOAD_P...2010-08-27 13:00:56 · 124 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(三)
需要共享资源,则需要探测本地资源分布情况。此处我们用的算法比较2……不过还是说说吧。 下面使用MFC的CFileFind实现一个本地文件递归收集器,以jason格式存储文件路径和文件大小: #ifndef COLLECTER_H_#define COLLECTER_H_#include<iostream>#include<vector>...原创 2010-08-27 13:01:18 · 100 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(四)
现在我们的整个系统基本可用了,还缺少什么?—— 客户端自动升级。 当我们把整个系统部署下去之后,如果打补丁、升级版本等,都需要让用户重新下载的话,肯定用户会觉得很厌烦。所以我们应该要开发一个loader,客户端能够自动检测更新、升级,并可以在服务器端打包升级流及升级流信息下发。 在此系统中,我直接是服务器下发一条升级信息(带版本号),然后与客户端当前版本号进行配对,若高于客...2010-08-27 13:01:40 · 143 阅读 · 0 评论 -
SDL小尝试,是男人就坚持20秒
今天在电脑里掏出来自己以前试着使用SDL游戏引擎的时候做的一个简单版 是男人就坚持20秒的小游戏。。 玩家通过键盘WSAD操作人物躲避四面八方来的物体,看最终能坚持多长时间。 图片是随便在网上找的或者自己画的。 GAME OVER 简单的贴一下代码~ #pragma comment(lib, "sdl/lib/SDL.lib") ...2010-08-27 13:03:52 · 105 阅读 · 0 评论 -
一个简单的游戏引擎核心状态机的C++实现
这个是我之前做的一个2D游戏(未完成)中的一部分,实现的整个游戏的状态机引擎部分框架,在此分享一下我的代码。 众所周知,一个游戏(或者一个应用程序),我们都可以把各部分界面切分为不同的状态,然后整个系统过程就是一个有限状态机。 我这里做的工作就是实现这个状态机框架以及具体的调度过程。 游戏主引擎类头文件 /* * CopyRight 2009 - 2010 ...原创 2010-08-27 13:04:32 · 105 阅读 · 0 评论 -
HGE引擎GUI对象的扩展
HGE引擎提供一个基本的GUI控件类,其不实现任何功能,但是提供一套虚函数和属性供派生类使用。开发者可以在此基础之上开发属于自己的控件,总的来说还是比较方便的。 我在开发自己的游戏框架过程中,吸取了许多经验教训。建议HGE引擎的使用者们不要直接在渲染过程中使用HGE提供的图形函数,而应该将他们全部都封装在GUI控件派生类中,这样有几大好处。 1. 更贴近面向对象,使得...原创 2010-08-27 13:05:11 · 128 阅读 · 0 评论 -
对HGE游戏引擎的一次封装
HGE游戏引擎是一个开源2D游戏引擎,基于directX。 它的渲染及逻辑是基于帧回调的框架模式, 其提供一些基本的图像操作和输入控制功能。 我在之前写一个2D游戏的时候对它整个框架进行了一次封装,很多地方写得比较恶心,请原谅我在变量上命名的不规范。 在此分享出来,主要可以参考一下大体框架吧。 HGE游戏引擎基于帧的回调让我很不爽,因为咱的游戏逻辑一般是连续的,跟具体帧无关,所以我把整个HGE跑在...2010-08-27 13:05:55 · 167 阅读 · 0 评论 -
C++子结构间接自杀实验
之前在写一个TCP/UDP通信程序的时候, 我想试验这样一个结构: 子结构通过父结构的的STL函数间接自杀。。 结果当时得出了一个结论,是可行的。 后来又在其他平台上报错,总之各种危险,以后还是不要写这种跟编译器、平台相关的危险代码。 后来的经验是,对于STL里的类实例(或者大STRUCT)最好都用指针统一管理。具体管理方法我将会另外写篇经验心得。 附上代码: //为了试验在子结构中能否...原创 2010-08-27 13:06:32 · 205 阅读 · 0 评论 -
C++类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程实验
当时为了测试类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程,自己写了个小程序。直接强制结束还是很危险的,很可能由于互斥锁而导致死锁。还可能会导致线程的资源无法释放,存在内存垃圾。OK。贴一下,供需要的人参考[code="c++"]//结论:类静态成员函数可以被多线程多次启用,互不干涉//运行过程中可以强制结束线程,但是要慎用!很...原创 2010-08-27 13:07:26 · 230 阅读 · 0 评论 -
简单的makefile框架
在LINUX下搭建一个C/C++工程,我的同事们都喜欢用bjam工具,我到是觉得用MAKEFILE也不错。如果对于小型工程,其实我们可以写一个简单的makefile来快速的组建工程。我自己用到的makefile框架如下CXX=g++CXXFLAGS = -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U_原创 2012-11-28 12:51:20 · 2839 阅读 · 0 评论 -
重操旧业,POJ开始A题~
POJ还没做过的,今天偶然看到网易有道有个topcoder编程比赛,过几天就是入围赛了,赶紧报了个名,拿不到名次拿件T恤也好。正好也自己练练手~今天抽点时间做了两道POJ的弱题,慢慢恢复手感ing 发现用C++还是比以前在学校时用纯C要好,STL很强大。以后将长期A题玩~ 1003 枚举,典型的先生成表,然后根据数据查表。产表O(N) 查表O(1)题目:How原创 2010-05-27 00:36:00 · 1544 阅读 · 0 评论 -
windows服务程序亲密接触~
昨天一同学入职考核,需要用C/C++写一个服务程序,从XML读取配置,定期运行指定程序/脚本/命令……同学无解。。向我求助,然后我也没写过windows服务程序,于是琢磨了一下,弄出一个很简单的DEMO。 先从网上掏了一个VC6的程序叫 memorystatus ,其功能主要为启动一个服务定期向文件内写入当前剩余内存。然后看了一下windows自带一个sc.exe 用于管理服务。原创 2010-05-15 00:58:00 · 973 阅读 · 0 评论 -
一个关于全局变量位置的问题
前几天WL跟我说了他在上海一家外企给他的一个面试题目,一般全局变量时写在.h文件还是.cpp文件中的?他说当时他答得很含糊。我也对这个很含糊,不过我印象中应该是放在CPP文件中其他地方要使用的时候extern一下的。具体为什么,我也说不清楚。今天无意中看到篇文章里有介绍这个,嗯,用自己的话总结总结吧。假如放在.h文件中,那么你要使用这个全局变量,就要include这个.h文件。原创 2009-07-21 15:48:00 · 1305 阅读 · 4 评论 -
大话C、C++之 关于void的一点哲学思考
从今天开始本菜鸟将就编程里我遇到的一些有意思的东西写点点看法~ 取名叫“大话C、C++” 系列吧 早就想自己总结一下关于C、C++里一点关于void的思考了。发现几个非常有意思的地方。 void在C、C++里的意思是“空”。最常用的是,当一个函数不需要返回值的时候,就给它的返回值定义成void。或者一个函数不需要输入参数的时候,也将其定义为void。 “原创 2009-08-10 14:22:00 · 1108 阅读 · 1 评论 -
【原创】大话C、C++之 危险的拷贝构造函数
小A在图书馆借了一本非常好看的书,小B说:“哇!你的书太好看啦!也借我看看吧!” 小A说:“没问题啊,咱一起看吧!” 然后这本书就放那儿,谁想看就过去拿着看。 有一天图书馆管理员说:“小A啊,你赶紧还书啊,到时间了”,于是小A把书还了。 第二天小B过来想看书,一看傻眼了,书怎么没了?!尴尬ing ===============================原创 2009-08-11 11:37:00 · 1096 阅读 · 1 评论 -
一个SDL的实验——模拟分子的运动
今天(周六)加班。。。给别的公司做技术支持,于是乎必须呆着,但是没事的时候自己安排。于是学学SDL,我用它写了一个可视化的C随机函数发生器的小程序。刚开始所有点都位于同一点,然后随机的向周围移动。模拟分子的运动情况。很有意思,这里分享一下代码,用的两个线程(一个线程刷新屏幕,一个线程用于计算)——这也是一个游戏采用的结构。 代码,貌似TAB缩进出了点问题。。原创 2010-01-28 14:14:00 · 2113 阅读 · 0 评论 -
一个简单的游戏引擎核心状态机的C++实现
这个是我之前做的一个2D游戏(未完成)中的一部分,实现的整个游戏的状态机引擎部分框架,在此分享一下我的代码。 众所周知,一个游戏(或者一个应用程序),我们都可以把各部分界面切分为不同的状态,然后整个系统过程就是一个有限状态机。 我这里做的工作就是实现这个状态机框架以及具体的调度过程。 游戏主引擎类头文件 /* * CopyRight 2009 - 2010原创 2010-02-12 13:25:00 · 5271 阅读 · 1 评论 -
C++类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程实验
当时为了测试类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程,自己写了个小程序。 直接强制结束还是很危险的,很可能由于互斥锁而导致死锁。还可能会导致线程的资源无法释放,存在内存垃圾。 OK。贴一下,供需要的人参考 //结论:类静态成员函数可以被多线程多次启用,互不干涉//运行过程中可以强制结束线程,但是要慎用!很可能由于互斥锁导致死锁//网上说原创 2010-02-09 19:25:00 · 4111 阅读 · 1 评论 -
C++子结构间接自杀实验
之前在写一个TCP/UDP通信程序的时候,我想试验这样一个结构: 子结构通过父结构的的STL函数间接自杀。。结果当时得出了一个结论,是可行的。后来又在其他平台上报错,总之各种危险,以后还是不要写这种跟编译器、平台相关的危险代码。 后来的经验是,对于STL里的类实例(或者大STRUCT)最好都用指针统一管理。具体管理方法我将会另外写篇经验心得。 附上代码:原创 2010-02-09 19:31:00 · 1002 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(一)
前段时间和朋友一起做了一个类似于电驴、迅雷 + MSN工具的毛坯模型,基本上所有功能都是从socket通信级别向上实现。整体架构为C/S架构,使用MFC实现。技术上都是很老的东西,此文主要介绍类似于 电驴 的这样一个软件的设计思路和部分代码框架。我们实现的代码不是很优化,仅为设计思路的佐证。 我最初做这个小软件的想法是,方便一个小型网络中大家的资源共享和交流。每个人都能共享出自原创 2010-03-11 21:12:00 · 1752 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(三)
需要共享资源,则需要探测本地资源分布情况。此处我们用的算法比较2……不过还是说说吧。 下面使用MFC的CFileFind实现一个本地文件递归收集器,以jason格式存储文件路径和文件大小: #ifndef COLLECTER_H_#define COLLECTER_H_#include#include#include "StdioFileEx/Std原创 2010-03-15 22:50:00 · 1163 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(四)
现在我们的整个系统基本可用了,还缺少什么?—— 客户端自动升级。 当我们把整个系统部署下去之后,如果打补丁、升级版本等,都需要让用户重新下载的话,肯定用户会觉得很厌烦。所以我们应该要开发一个loader,客户端能够自动检测更新、升级,并可以在服务器端打包升级流及升级流信息下发。 在此系统中,我直接是服务器下发一条升级信息(带版本号),然后与客户端当前版本号进行配对,若高于客原创 2010-03-15 23:11:00 · 1077 阅读 · 0 评论 -
一个基于socket的资源共享平台的实现(二)
继续上次说的,其实任务调度宏观上普遍分为两种,实现上总的来说就是一个串行、一个并行,上次我们介绍的TCP传送服务我们是使用并行的实现的(任务池),这次我们再来一个串行的,这就简单多了,就是一个队列,FIFO,我们用它来实现下载任务(假设我们下载任务只能单独进行)。 我们用一个NS_Download_Pool类来封装对其的管理。 #ifndef NETSHARE_DOWNLOAD_P原创 2010-03-15 22:21:00 · 1202 阅读 · 0 评论 -
WIN平台下应用程序利用批处理更新自身
今天又碰到需要做一个简单的自动升级的客户端程序,客户端程序在拿到升级包并且解压之后,怎样自更新并再启动呢?这里我封装了一个类,利用批处理,将升级文件覆盖掉本地文件,然后重启动应用程序。 #ifndef KILL_MYSELF_H_#define KILL_MYSELF_H_#include #include class UpdateMyself{pu原创 2010-03-30 18:41:00 · 1472 阅读 · 0 评论 -
C++模板元编程
昨天WL发给我一段我觉得很“奇怪”的C++代码。。当时没看太懂,后来问了才知道是叫做模板元编程。 template struct binary { static unsigned const value = binary::value << 1 // prepend higher bits | N%原创 2010-04-01 13:59:00 · 1536 阅读 · 1 评论 -
一次失败的总结,HGE引擎该如何用?
大概三个月前,我在试着用几款2D游戏引擎。 第一款是SDL,这是同事推荐给我的一款跨平台的2D游戏引擎。这款引擎评价很高,总的来说是因为它够底层,实现的功能非常基本,又提供了一套平台无关的接口。所以开发人员在此之上可以天马行空的开发。不过我不是那么热衷底层……于是我在写了几个实验性的程序之后放弃了他。呵呵,当时研究它主要是因为自己也在做嵌入式,对跨平台很感兴趣。但是当时看一个老外,...2010-08-27 13:09:38 · 293 阅读 · 0 评论