
技术交流
sssxueren
这个作者很懒,什么都没留下…
展开
-
游戏资源破解
2001年,从云风那儿得知了IDA这种好东东,看到他在解恺撒的游戏资源,觉得好玩,也开始自己解一些东东,当时一口气解了一些游戏的资源,当然,都不是很复杂的,主要是台湾和日本的 后来在主页上放过一段时间,记得感兴趣的朋友还挺多的,一直没时间说,现在大概聊一下做法吧:)工具当然是IDA+SoftIce,要自己写解压程序的话,还要有习惯的编辑器,我当然是用VC了:)其实,资源破解,并不是原创 2004-10-10 22:39:00 · 2429 阅读 · 0 评论 -
俄罗斯方块的简单实现
也是很早很早的东西了:P 这是我几年以前写的《Seven Puzzles》(该游戏为DOS版,可在鄙人主页http://ssscomic.yeah.net内找到)里的俄罗斯方块的实现方法,当时接触编程仅半年而已,希望可以给初学者一点帮助。几乎没有写什么代码,而且后阶段方块旋转、消去方面更是只大致介绍了一点方法,不过应该还是可以让人明白的。本人才疏学浅,如有不当之处,还望原创 2005-01-24 22:45:00 · 1951 阅读 · 0 评论 -
俄罗斯方块的人工智能
和上一篇是同期作品 我写的第一个C游戏就是一款俄罗斯方块游戏——《seven puzzles》,带一个很迅猛的AI,水平不怎么样,只考虑当前一个方块,是快攻型的,关于AI的做法,和大伙聊聊吧!我们大伙玩俄罗斯方块是基于一个什么原则呢?可以数学公式化的一个简单的原则?如果有兴趣的话,可以先想想,不要急着看下去,因为规则那么简单那么具体化的游戏要想用一个公式来代替它的规则实原创 2005-01-24 22:46:00 · 3882 阅读 · 0 评论 -
用完成端口开发大响应规模的Winsock应用程序(转载)
用完成端口开发大响应规模的Winsock应用程序 通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接纳少则一个,多则数千个连接的网络应用程序。本文将讨论如何通过Winsock2在Windows NT? 和 Windows 2000上开发高扩展能力的Winsock原创 2005-01-24 22:47:00 · 1694 阅读 · 1 评论 -
剑芒罗曼史2解图片程序
剑芒罗曼史2解图片程序 mcg文件file head 40h---------------------------10h palette offset1ch width20h height---------------------------palette 400h---------------------------BMPs palette-------------------原创 2005-01-24 22:48:00 · 6339 阅读 · 2 评论 -
Original War
当年汉化过的一款游戏的分析记录,由于项目关系,这个游戏没有上市,当然,我也没拿到钱,所以共享出来,应该不算违法吧 源码,也有,以后有机会或者谁敢兴趣,我再贴吧当然,如果有人认为以下内容侵犯了他的利益,请和我联系,如果确实是我不对,我会及时更正的!:)owar.exe游戏菜单owar.exe run直接运行游戏*********************************原创 2005-01-24 22:47:00 · 1569 阅读 · 0 评论 -
link 2005 错误
在vc 2003下,如果使用了静态库,很有可能会发生link 2005的连接错误,主要是由于crt 库引起的,CRT 库对 new、delete 和 DllMain 函数使用弱外部链接,如果我们改变一下库的连接顺序,就可以解决这个错误解决方案解决该问题有两种方法:第一种解决方案涉及到强制链接程序按照正确的顺序链接库。第二种解决方案是让您查找导致问题的模块并纠正它。 解决方案一:强制链接程序按照正确原创 2005-03-19 14:46:00 · 1540 阅读 · 0 评论 -
vc静态变量构造析构顺序
class E{};class B{static E e;};class A{static B b;};class C{static B b;};在vc中,B::E、A::B、C::B 3个静态成员的析构顺序,竟然是B::E、A::B、C::B如何控制静态成员析构顺序呢?Singleton?研究了一下loki的singleton,发现它竟然在atexit的时候做了一些全局的内存释放工作,而atex原创 2005-08-03 11:44:00 · 3303 阅读 · 1 评论 -
atexit
ExampleThis program pushes four functions onto the stack of functions to be executed when atexit is called. When the program exits, these programs are executed on a last in, first out basis.// crt_ate原创 2005-08-03 11:45:00 · 2239 阅读 · 1 评论 -
python脚本
python脚本 boost支持python真是很简单,比lua那些脚本好用多了,现在最麻烦的问题是脚本的调试,比较痛苦:(,不过也可以出一个dll,直接在python里面调试,不过那样的话,某些情况就比较麻烦了至于例子,其实大家可以去codesampler找找,很简单的,有时间我把我封装的一个贴上来大家看看:)www.codesampler.com有些地方可能连不了,下面是一个例子的代码,大家可原创 2005-04-18 14:43:00 · 1618 阅读 · 0 评论 -
单根结构
MFC就是典型的单根结构,所有类都从CObject继承过来,java也是的。 就我个人而言,我不太喜欢单根结构,首先是觉得没必要,为什么所有的东西都从Object派生?而且,单根结构对于多重继承,特别是多菱形的多重继承,会有些麻烦(当然,也可能是我自己的问题)。但是不用单根结构,很多时候又会突然发现有一个共同的基类,运行期会很方便。真是矛盾啊我目前的做法是,底层类库不使用单根结构,上层逻辑,才开始原创 2005-11-08 15:37:00 · 2608 阅读 · 0 评论 -
关注c++编译速度
早在今年的9月,我的一个项目,就面临着编译时间超长的问题,昨天我做过编译速度测试,使用 vc7.1,cl.exe在Rebuild过程中,cpu时间消耗近10分钟,整个项目多大呢?仅仅8000多行代码(当然,不包括一些底层库),而自己的另外一个近6万行代码的项目,rebuild一次也只需要3分钟左右的时间。其实原因自己也很清楚,使用了过多的template,include了很多不必要的头文件,等等但原创 2005-12-03 13:12:00 · 2971 阅读 · 3 评论 -
关于c++类成员函数覆盖
如以下代码:class A{public: void func(void);};class B : public A{public: void func(int);};B b;b.finc(1); //! 可以正常编译通过b.func(); //! 不可以编译通过,因为func被B重载了我们要怎样才能使用A::func() 呢class B : public A{public: usi原创 2005-12-03 12:49:00 · 1719 阅读 · 8 评论 -
关于前面提到的 vc bug 有误
不好意思,我仔细分析了一下,我最初的判断错了,原因判断错了应该是 由于 这个项目是一个 静态 lib 项目,lib 本来就是弱 link 的,所以 lib 里面的 弱 link 的 工厂模式下面的 obj 没有被 vc link 到最终的 exe 里面去。说实话,c++用得越多,就越来越觉得c++问题很大!原创 2006-03-02 16:14:00 · 1697 阅读 · 1 评论 -
屏蔽WebBrower控件右键菜单技巧合集
1.常被人鄙视的方法(PreTranslateMessage) 经常见到有人问怎么屏蔽html的右键菜单,有人答用PreTranslateMessage函数拦截wm_rbuttondown消息,于是总会有人说这种方法怎么烂,@_@,我真不知道为什么,不过我想这也是一种方法呀,而且非常简单,所以还是列出来吧:)BOOL CPreTranslateMsgView::PreTranslate原创 2005-01-24 22:42:00 · 2402 阅读 · 0 评论 -
sqlserver 链接数据库
exec sp_addlinkedserver [ServerName],,SQLOLEDB,[ip]exec sp_serveroption [ServerName], rpc out, true exec sp_serveroption [ServerName], rpc, trueexec sp_addlinkedsrvlogin [ServerN原创 2005-01-24 22:41:00 · 864 阅读 · 0 评论 -
如何访问WebBrowser的滚动条
WebBrowser的滚动条不是一般的Windows滚动条,用GetScrollPos或GetScrollInfo等API是不能访问的。下面的代码演示了在VC中如何通过HTML接口来访问浏览器的滚动条。 HRESULT hr; IDispatch *pDisp = GetHtmlDocument(); ASSERT( pDisp ); //if NULL, we failed原创 2005-01-24 22:42:00 · 1419 阅读 · 0 评论 -
仿函数
class Func{public:void operator()(const char* str) { ......}}; ......Func func;func("abc");......stl中有很多类似的实现,就是重载()符号,可以实现类似函数的形式原创 2004-10-12 10:06:00 · 906 阅读 · 0 评论 -
char_traits
c++标准库中,有一个string,这个相信大家都知道,其实它是一个basic_string的一个typedef,其实在msdn这些地方,查string查不到什么太多东西,需要了解内部接口,得查basic_string 至于char_traits,是base_string的一个模板参数,它主要负责关于字符的属性和方法,譬如 eq、lt、compare、find 这些,比较字符大小,查找字符原创 2004-10-14 22:08:00 · 4729 阅读 · 0 评论 -
过滤非法字符 三
实现文件:#include "stdafx.h"#include #include #include #include #include "WordLib.h"#include "_string.h"namespace WordLib{typedef std::basic_string __String;typedef std::vector __WordList;stat原创 2004-10-19 18:52:00 · 1151 阅读 · 0 评论 -
avatar的实现
avatar从程序角度来看主要是2方面的工作,一是web,这儿负责购买、更换服装等功能,二是客户端程序(如果需要的话),这儿主要负责下载更新和程序显示 当然,其实可以统一使用web来实现,不需要程序负责,程序仅仅调用web控件或者别的什么方式,把最终的现实直接交给web来完成web的实现,没太大难度,如果要兼容性扩展性很好,比较简单的方法,是每次在用户更换服装以后,服务器生成一张最终的原创 2004-10-21 14:23:00 · 1389 阅读 · 0 评论 -
过滤非法字符 一
一直都不怎么喜欢贴代码的,觉得没什么意思,这次好在功能比较简单,没什么太多东西要解释,贴上来让大家看看吧:) 头文件:#pragma once#ifndef _FLYINGMAGIC_2_CUT_WORD_EXPORT# pragma comment(lib, "..//Lib//WordLib.lib")#endif // _FLYINGMAGIC_2_CUT_WORD_EXPO原创 2004-10-19 18:50:00 · 1304 阅读 · 0 评论 -
过滤非法字符 二
大小写不敏感的字符串,头文件 #pragma once#include #include namespace WordLib{struct ChatTraintsEx : public std::char_traits {static bool eq(const char ch1, const char ch2) {return _strnicmp(&ch1, &ch2, 1)原创 2004-10-19 18:51:00 · 886 阅读 · 0 评论 -
placement new(定位new)
定位放置new(placement new)有很多作用。最简单的用处就是将对象放置在内存中的特殊位置。这是依靠 new表达式部分的指针参数的位置来完成的: #include // 必须 #include 这个,才能使用 "placement new" #include "Fred.h" // class Fred 的声明 void someCode() {原创 2004-10-25 13:09:00 · 1141 阅读 · 0 评论 -
DirectSound
读大学的时候翻译的DirectSound文档,收藏一下:)(费话篇)关于DirectSound DirectSound是DirectX API的音频(waveaudio)组件之一,它可以提供快速的混音、硬件加速功能,并且可以直接访问相关设备,当然,最主要的是它提供的功能与现有的(?将来的呢?)设备驱动程序保持兼容性。DirectSound允许进行波型声音的捕获、重放,也可以通过控制硬件和原创 2004-11-11 09:17:00 · 1916 阅读 · 0 评论 -
vc6 & vc7
这几天把一个vc6下面的庞大的引擎转到vc7.1下,发现vc6的很多语法更合理 譬如class A : public B, C, D { ... };这种语法,在vc7下面,C、D就是 private 方式继承的,其实从习惯上看,应该是 public吧,这个和int a,b,c; 类似才对阿还有,vc6 支持函数指针带缺省参数typedef void (原创 2004-12-21 09:44:00 · 1105 阅读 · 0 评论 -
iostream 实现中的差异
从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。 标准 C++ 库和以前的运行时库之间的主要差异在于 iostream 库。iostream 实现的具体细节已经更改,如果想链接标准 C++ 库,可能有必要重写代码中使用 iostream 的部分。必须移除任何包含在代码中的旧 iostream 头文件(fstream.h、iomanip.原创 2004-12-29 14:56:00 · 2703 阅读 · 0 评论 -
stl port & ms stl
目前,除了有些接口上的差异外,我发现了2个地方,对代码移植上会有差异 一是 earse 接口,ms stl 好像所有容器的 earse 接口都会返回一个 iterator ,指向下一个 iterator,stlport 好像就只有 list这些是这样的,其他的都是 void二是 元素的比较问题ms stl 里面,只要 定义一个 class 的原创 2004-12-29 14:53:00 · 1098 阅读 · 0 评论 -
socks代理
http://www.cesdn.net/document/show.aspx?sn=00000000000000000001 穿透代理服务器编程在网络程序设计过程中,我们经常要与各种类型的代理服务器打交道,比如在企业内部网通过代理去访问Internet网上的服务器等等,一般代理服务器支持几种常见的代理协议标准,如Socks4,Socks5,Http代理,其中Socks5需要用户验证,原创 2004-12-29 14:55:00 · 1385 阅读 · 0 评论 -
无默认库生成的早期项目
选择 /NODEFAULTLIB 可以生成没有默认库的项目。如果以前的项目是用无默认库生成的并且想进行 iostream 调用,必须给新的标准 C++ 运行时库(Libcp.lib、Libcpmt.lib、Msvcprt.lib 等等)或者旧 iostream 运行时库(Libci.lib、Libcimt.lib、Msvcirt.lib 等等)中的一个命名,以便可以链接适当的库。 在 Vi原创 2004-12-29 14:56:00 · 1019 阅读 · 0 评论 -
今天发现一个 vc 的大 bug
遇到一个 vc 的大 bug一个项目在 A 和 B 目录下 分别有一个相同的 person.cpp编译的时候,如果不重新编译,而且其中只有一个文件需要重新编译,vc 只是检查 是否存在 person.obj 如果存在而且是否最新(这个怎么检查的不太清楚)就跳过了 一个 person.cpp 的编译如果这个是 一个弱link的项(譬如 工厂模式的object),就根本无法在编译链接期获知原创 2006-03-02 15:51:00 · 1973 阅读 · 0 评论