《金庸群侠传》C++复刻版 kys-cpp

未知
C/C++
跨平台
2017-10-29
sb500

kys-cpp

这是一个以SDL2为基础实现的2D游戏引擎。

基本按照当代游戏引擎的思路实现,但是没有使用回调,因为回调会增加初学者的使用难度。

同时相当于提供了一个使用该引擎制作DOS游戏《金庸群侠传》移植版的范例。

架构的简单说明

公用类

Engine封装了一套SDL2的主要实现,主要取自TinyPot。

File是一些读取,写入函数。包含几个简化程序的模板函数。

Save中对所有数据进行了封装,可以较为方便地调用。

TextureManger是一个纹理管理器,因为《金庸群侠传》的贴图是含偏移设置的,故有些特殊的地方。

Audio是音频类,基于Bass,可以播放mid,mp3,wav等。

Element

Element是游戏中的基本执行类,包含5个重要的虚函数:backRun,draw,dealEvent,onEnter,onExit。对应在背景中执行,如何画自身,如何处理事件,进入时的处理,退出时的处理。一般来说,衍生类应重写这些函数。

其中每个节点可以包含数个子节点,在绘图时子节点也会被自动一一绘出。需注意在画自身的部分不需要处理子节点,除非有特殊的需要。

存在一个全局的的Element栈root(实际是std::vector),引擎会从下到上依次画出每个Element。Element类有一个占满全屏的属性,表示这个类将占用全部的屏幕,因此引擎在绘制的时候,会仅找出最靠上的含有该属性的节点,并从这里开始往上画。

创建一个节点,并调用run过程即可运行此节点,注意使用run执行的节点是完全独占的,其子节点也会有事件响应。如果需要退出当前节点,在适当的地方使用setExit(true)即可,但是子节点调用是无效的,除非拥有当前运行节点的指针。

run过程的参数为一个布尔值,如果为true则会被加入到root并进行绘制,如果为false则只运行不参与绘制。但是很多节点的draw过程是空的,即使放到root中也不会参与绘制,实际利用了这一特性的仅有显示人物对话的部分。

run过程会返回一个函数值,可以利用进行一些判断,例如菜单的选择。

自己创建的节点通常需要自己销毁,但是要注意如果某个节点在其他节点的Child当中,则会被自动销毁,请注意这些问题。

部分节点使用了单例,这些节点请留给程序运行结束自动销毁。

请不要让子节点出现递归包含,这样会迅速消耗掉所有资源。



加载中

评论(3)

s
str_name_c
代码缺失,是不是有些忘上传了,编译不过,只是一部分代码,资源也没有
s
soberCoder
github 上的代码无法编译
aforbe
aforbe
好怀念,完成度咋样?有没有直接可以下载玩的exe?

暂无资讯

暂无问答

No.0 C++基础---C++经典著作列表

# C++经典著作列表 *C++入门书籍:《C++全方位学习》…… *C++进阶书籍:《C++编程思想》…… *C++高阶书籍:《C++网络编程》……

2015/07/02 21:10
37
1
C++ STL编程轻松入门 2

1.3.3 STL和GP,GP和OOP   正如前面所提到的,在STL的背后蕴含着泛型化程序设计(GP)的思想,在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的...

2015/11/21 10:30
27
0
c++ 书籍(zz)

 From:http://blog.csdn.net/is2120/article/details/44317241 下面是转载的在博客上看到的一个C++书籍阅读清单,可以参考下: 阶段 1 《Essential C++》 这是一本内容不多但很实用的C++...

2015/04/09 11:48
14
0
C++学习路线

一)语言入门: 《C++ Primer》 最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中) 适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对...

03/27 16:13
11
0
cpp extern "c" keyword

When you state that a function has extern "C" linkage in C++, the C++ compiler does not add argument/parameter type information to the name used for linkage. http://www.math-lin...

2013/01/31 02:33
36
0
50个c/c++源代码网站

C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。 1、http://snippets.dzone.com/tag/c/ --数以千计的...

2014/04/11 10:23
35
0
C++的坑真的多吗?

先说明一下,我不希望本文变成语言争论贴。希望下面的文章能让我们客观理性地了解C++这个语言。(另,我觉得技术争论不要停留在非黑即白的二元价值观上,这样争论无非就是比谁的嗓门大,比哪...

2012/08/09 10:53
84
0
用clang 重建Debian 档案

Sylvestre Ledru实行了一个用clang——一个新的C/C++/Objective-C 编译器—— 重建Debian 档案的研究。其目的是评估clang 当前对C/C++/objective-C 的支持能力。评估结果可在Debian clang we...

2012/03/07 09:34
74
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部