最新最全手机游戏下载!
首页 游戏资讯 游戏攻略 c++代码(c++编译器)

c++代码(c++编译器)

时间: 来源:网络 编辑:2u手游网小编 浏览:36

关键词:《金庸群侠传》 C复刻版

这是一个基于SDL2的2D游戏框架,相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版的例子。在Windows下可以用Visual Studio编译,在其他系统下可以用CMake在src目录下生成Makefile,用GCC或者Clang编译,至少要支持C 14。VS是x64版本,需要x86版本请自行修改。

安装架构的简要描述。

1.公共部分1。Engine封装了一组SDL2的主要实现,类似于SmallPot。如果改变绘图引擎,只需要修改这部分即可。

2.所有数据都封装在Save中,可以方便调用。

3.TextureManger是一个纹理管理器。因为《金庸群侠传》的纹理包含偏移设置,所以有一些特殊的地方。

4.Audio是一个音频类,基于BASS或者SDL_mixer,可以播放mid、mp3、wav等格式。

5.PotConv封装了iconv的实现。

二。RunNode的基本执行类描述RunNode是游戏中的基本执行类,包含五个重要的虚函数:backRun、draw、dealEvent、onEnter、onExit。后台对应执行,自己怎么画,事件怎么处理,进入时处理,退出时处理。通常,派生类应该重写这些函数。每个元素可以包含几个子元素,绘制时会自动将子节点一个一个的绘制出来。注意,除非有特殊需要,否则不需要处理需要自己绘制的部分中的子节点。

1.有一个全局的RunNode栈根(实际是std:vector),每个节点会从下往上画。RunNode类有一个全屏属性,这意味着这个类将占据所有的屏幕。所以引擎在绘制的时候,只会找出具有该属性的顶层节点,从这里向上绘制。

2.创建一个节点并调用run过程来运行该节点。注意,用run执行的节点是完全排他的,它的子节点也将有事件响应。如果需要退出当前节点,在适当的地方使用setExit(true)就可以了,但是子节点调用是无效的,除非你有当前运行节点的指针。

3.运行流程的参数是一个布尔值。如果是真的,就加到根,画出来。如果为false,则只运行,不参与绘图。但是很多节点的绘制过程是空的,即使放入root也不会参与绘制。实际上,唯一利用该功能的部分是显示人们对话的部分。

4.运行过程会返回一个函数值,可以用来做一些判断,比如菜单选择。

5.规定所有节点使用共享指针,可以自由的互相包含。请不要让子节点有递归包含,这样会快速消耗所有资源。一般来说,大部分游戏引擎都需要全局标记和回调来控制剧情的执行。这个框架采用了元素的run设计,使得事件以一种阻塞的方式顺序执行,而绘图仍然不阻塞地执行,使得事件可以顺序执行而不需要额外的标记。

三。视频这是作者写的一个视频播放器,可以作为SDL2的插件编译成动态库,用于视频切穿。如果难以处理,可以从预处理定义宏中删除WITH_SMALLPOT。默认情况下,Mac和Linux不会打开。

四。音频音频播放可以从低音或SDL混音器中选择,低音的音质更好。SDL混合器之前有一个严重的跳出问题,目前尚不清楚当前版本是否已经解决。由于BASS是商业库,所以使用SDL _混音器作为替代,编译时可以添加宏USE _ SDL _混音器_音频。选项不单独处理。而vsgcc,如果不使用某个库的函数,即使包含在链接选项中,也不会参与实际的链接。

五:abc项目与资源保存abc项目用于转换之前的数据。建议自行调整代码后使用调试模式。

主要功能是把存档的R部分翻一倍。即16位整数全部转换为32位整数,这意味着表示范围从32767扩大到2 ^ 31-1,对于通常的数值来说已经足够了。与此同时,原来的字符串已经扩展到原来长度的两倍。比如原角色的名字有五个汉字长,但实际上最多只能用四个字。换算后可以用九个字(不建议你用九个字)。转换后的文件名变为r.grp32。

1.文件的文本编码只是cp950(BIG5)的初始存档,这是向后兼容所要求的,但内部会使用cp936(GBK),存档保存后会转换成cp936。

2.存档的基础数据可以保存为sqlite数据库格式。可以通过读取和保存来转换现有的档案。

3.游戏的资源文件以单幅图片的形式放在每个资源目录中。每张图片的偏移量保存在index.ka中,格式为每张图片两个16位整数,连续存储。目前没有设计包装格式。

4.在战图文件中,每个人的帧数,以前是用fightframe.ka保存在hugebase(水浒传)帧中,现在用fightframe.txt保存是格式索引(0~4),每个方向的数字。如果不写,则视为0。

5.前作用的列表文件只保留了升级体验列表和出发列表,改成了txt格式。并不是所有的文档都转换为32位,部分原因是为了节省资源。上面提到的所有数据,除了文本文件,都可以被真正强大的新版upedit修改(修改器并不完美)。

不及物动词使用的其他开发库。1.以下库推荐在Windows下用vcpkg或msys2安装,也可以在官网下载。请自行选择。在Linux下编译时

则应优先考虑使用系统的包管理器(例如apt等)自动安装的库,在Mac下可以使用homebrew来安装。

SDL https://www.libsdl.org/

SDL_image https://www.libsdl.org/projects/SDL_image/

SDL_ttf https://www.libsdl.org/projects/SDL_ttf/

SDL_mixer https://www.libsdl.org/projects/SDL_mixer/

libiconv https://www.gnu.org/software/libiconv/

lua https://www.lua.org/

PicoSHA2 https://github.com/okdshin/PicoSHA2

sqlite3 https://www.sqlite.org/

2、以下库已包含在本工程中:

hanz2piny https://github.com/yangyangwithgnu/hanz2piny

zip https://github.com/kuba--/zip

BASS, BASSMIDI http://www.un4seen.com/

OpenCC https://github.com/BYVoid/OpenCC

Fast C++ CSV Parser: https://github.com/ben-strasser/fast-cpp-csv-parser

smallpot: https://github.com/scarsty/smallpot

4、以下为间接使用,通常包管理器会自动处理。

freetype https://www.freetype.org/

FFmpeg https://www.ffmpeg.org/

zlib https://zlib.net/

libass https://github.com/libass/libass

fribidi https://www.fribidi.org/

libpng http://www.libpng.org/pub/png/libpng.html

harfbuzz https://github.com/harfbuzz/harfbuzz

fontconfig https://www.freedesktop.org/wiki/Software/fontconfig

5、备注:SDL及相关的扩展均是2.0版本。汉字转拼音和压缩文件并非Linux发行版的常见库,故直接使用了源码。PicoSHA2和CSV库仅需要头文件,如果文件不在包含目录中,请注意将它们复制到适合的位置。除BASS和BASSMIDI为闭源,但可以免费用于非商业项目之外,其他均为开源工程。

七:common 功能集合下载

common是作者所写的一个通用功能集合,被多个工程使用。其中包含了ini文件读写库,修改自以下工程:ini Reader https://github.com/benhoyt/inih

相关攻略

猜你喜欢