/Synthetic-Game

完全由C++编写的合成大西瓜

Primary LanguageC++GNU General Public License v3.0GPL-3.0

合成大西瓜 - By YYYCZ

近日见合成大西瓜在网上掀起一阵腥风血雨,多有人血压高涨,苦不堪言。 又见有人尝试修改,修改源码,做玩法上的创新,也是实在有趣。 于此情此景,我也来了兴致,想要用 C++ 来续写一波合成大西瓜的故事。

因此,便有了这不长不短三千行代码的,完全由 C++ 编写而成的“合成大西瓜”。

玩法

与原版合成大西瓜一样,这版的合成大西瓜也确实是合成大西瓜,用的也是和原版的图片。 合成也是优先往下合成。 但是注意,尺寸等参数都是本人自己设置的,与原版有所出入。 并且计分规则也有所不同(比如扔球就可以加分,有连击加成等)。 还有就是合成啊、之后会说到的功能球生效等等都是以碰撞作为判断基础,而不是接触。 还还有就是合成是破坏两个旧球或多个旧球,生成一个新球。 根据上面一句话你可以知道这里保留了多合成,通俗来讲就是“三合一”,当然只要能做到你也可以“四合一”、“五合一”等等。

此外,如刚才所说,这版在原来的基础上加入了五种道具球(也可以叫功能球)。

  1. 变换球:与任意一个基础普通球(即任何一种给你直接扔的普通球,比如柠檬、猕猴桃这些)碰撞后变成相同的球(其实这样作用就相当于低级别的万用球)。
  2. 破坏球:破坏任一碰撞到的球,同时自己也被破坏。
  3. 随机球:扔下该球三秒后,随机变成场上存在的一个普通球(数量越多,变成某种球的概率越大),若场上没有普通球,变成最低级的球。
  4. 反重力球:碰撞到任一普通球后,将自己破坏,然后被碰撞到的球直至其被破坏为止,都无视重力。
  5. 融合球:碰撞到任一普通球后,若场上有与其相同的普通球,其与之其中一个进行合成(合成位置优先往下),然后自己被破坏。

以上就是五种普通球。 当然,如果你不满足于此的话,改源码罢! 我提供给了道具球非常易于添加、删减和替换的接口。 相应部分也有较为详尽的注释。

特效和核心部分酌情修改,因为我没有任何注释(滑稽)。

图片 & 音效

随便改,替换了就完事了。

这里其实还可以添加背景音乐和死亡音效,放到 Sound 目录下对应名称为 background.wavdead.wav 就行了。

觉得还不够爽可以去改源码,自己额外加图片和音效。

另外小声说一句——其实没有任何图片和音频也是能正常玩,没关系的。

源码

这里使用了 olcPixelGameEngine 进行游戏界面的绘制和 box2d 来作为物理引擎。

合成大西瓜总体我也就分成了三板块:参数、引擎和道具球。 当然引擎细分还有特效、画图、物理引擎设置等等啥的,这些都不是重点。

使用前需在 Release x64 下包含include文件夹,并且需要加 lib 文件夹下的 lib 添加到附加依赖项。 main.cpp 中给出的两块代码可以用于测试你使用的图片和音频能否被正常加载(音频只能wav,图片推荐png和位图)。