├── .github └── FUNDING.yml ├── picture └── voronoi.gif ├── voronoi_cui ├── Source.cpp ├── voronoi_cui.vcxproj.filters └── voronoi_cui.vcxproj ├── voronoi ├── voronoi.vcxproj.filters ├── Source.cpp ├── DungeonRandom.hpp ├── SimpleVoronoiIsland.hpp ├── DungeonTemplateOutput.hpp ├── DungeonNoise.hpp └── voronoi.vcxproj ├── README.md ├── voronoi.sln ├── .gitattributes ├── .gitignore └── LICENSE /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: AsPJT 2 | -------------------------------------------------------------------------------- /picture/voronoi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AsPJT/VoronoiIsland/HEAD/picture/voronoi.gif -------------------------------------------------------------------------------- /voronoi_cui/Source.cpp: -------------------------------------------------------------------------------- 1 | #include "SimpleVoronoiIsland.hpp" 2 | #include "DungeonTemplateOutput.hpp" 3 | #include "DungeonNoise.hpp" 4 | #include 5 | #include 6 | 7 | int main() { 8 | std::array, 64> dungeon{ {} }; 9 | dtl::SimpleVoronoiIsland dungeon_creater(dungeon, 100, 0.5); 10 | dtl::noiseShoreBool(dungeon, 0.5); 11 | dtl::dungeonStringOutputBool(dungeon, "*", " "); 12 | } -------------------------------------------------------------------------------- /voronoi_cui/voronoi_cui.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | ソース ファイル 20 | 21 | 22 | -------------------------------------------------------------------------------- /voronoi/voronoi.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | ソース ファイル 20 | 21 | 22 | 23 | 24 | ヘッダー ファイル 25 | 26 | 27 | ヘッダー ファイル 28 | 29 | 30 | ヘッダー ファイル 31 | 32 | 33 | ヘッダー ファイル 34 | 35 | 36 | -------------------------------------------------------------------------------- /voronoi/Source.cpp: -------------------------------------------------------------------------------- 1 | #define NOMINMAX 2 | #include "SimpleVoronoiIsland.hpp" 3 | #include "DungeonTemplateOutput.hpp" 4 | #include "DungeonNoise.hpp" 5 | #include 6 | #include 7 | #include 8 | 9 | //横画面サイズ 10 | constexpr std::int_fast32_t window_map_size_x{ 256 }; 11 | 12 | //縦画面サイズ 13 | constexpr std::int_fast32_t window_map_size_y{ 256 }; 14 | 15 | //出力 16 | template 17 | constexpr void output(const STL_& stl_) noexcept { 18 | for (size_t y{}; y < stl_.size(); ++y) { 19 | for (size_t x{}; x < stl_[y].size(); ++x) { 20 | if (stl_[y][x]) DrawPixel((int)x, (int)y, GetColor(63, 155, 76));//63, 155, 76//119,103,52 21 | else DrawPixel((int)x, (int)y, GetColor(47, 104, 173));//97, 154, 223//208, 187 - rnd(20), 122 - rnd(20) 22 | } 23 | } 24 | } 25 | //メインループ 26 | bool mainLoop() noexcept { 27 | return (ScreenFlip() == 0 && ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0); 28 | } 29 | 30 | void VMain() noexcept { 31 | //ボロノイ図を線画 32 | dtl::SimpleVoronoiIsland diagram; 33 | //マップ格納配列 34 | std::array, window_map_size_y> col{ {} }; 35 | //更新時間 36 | constexpr std::int_fast32_t max_time{ 20 }; 37 | std::int_fast32_t now_time{ max_time }; 38 | while (mainLoop()) { 39 | if (++now_time < max_time) continue; 40 | diagram.init(); 41 | diagram.create(col, 200, 0.3); 42 | dtl::noiseShoreBool(col, 0.4); 43 | output(col); 44 | now_time = 0; 45 | } 46 | } 47 | 48 | //前処理関数 49 | int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, std::int_fast32_t) { 50 | SetOutApplicationLogValidFlag(FALSE); 51 | ChangeWindowMode(TRUE); 52 | SetGraphMode(window_map_size_x, window_map_size_y, 32); 53 | DxLib_Init(); 54 | SetDrawScreen(DX_SCREEN_BACK); 55 | SetMainWindowText("Voronoi"); 56 | VMain(); 57 | return DxLib_End(); 58 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Voronoi Island (Dungeon Template Library) ](https://github.com/AsPJT/DungeonTemplateLibrary) 2 | 3 | [![Logo-GIF](https://raw.githubusercontent.com/AsPJT/DungeonPicture/master/Picture/Logo/logo_color800_2.gif)](https://github.com/AsPJT/DungeonTemplateLibrary) 4 | 5 | --- 6 | 7 | # Supported Compilers 🔧 8 | 9 | |Compiler|Pass_C++14|Test| 10 | |:---|:---|:---| 11 | |MSVC|![cl](https://img.shields.io/badge/cl%2014.10-passing-brightgreen.svg)|None| 12 | |GCC|![gcc](https://img.shields.io/badge/gcc%205.1.0-passing-brightgreen.svg)|[Wandbox](https://wandbox.org/permlink/ptNcR2SIufjeWZJp)| 13 | |Clang|![clang](https://img.shields.io/badge/clang%203.5.0-passing-brightgreen.svg)|[Wandbox](https://wandbox.org/permlink/oWqCZambD9Kx0H0g)| 14 | 15 | --- 16 | 17 | # License 18 | 19 | These codes are licensed under CC0. 20 | 21 | [![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg "CC0")](http://creativecommons.org/publicdomain/zero/1.0/deed.en) 22 | 23 | --- 24 | 25 | # Related Items 🎮 26 | 27 | [![DTL](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/dungeon_template_library.png)](https://github.com/AsPJT/DungeonTemplateLibrary) 28 | [![AsLib](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/aslib.png)](https://github.com/AsPJT/AsLib) 29 | [![GenkaiSyuraku](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/genkai_syuraku.png)](https://github.com/AsPJT/GenkaiSyuraku) 30 | [![MayaGlyph](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/maya_glyph.png)](https://github.com/AsPJT/Maya-Glyph) 31 | [![WhackAMole](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/whack_a_mole.png)](https://github.com/AsPJT/Whack-A-Mole) 32 | [![Roguelike](https://raw.githubusercontent.com/AsPJT/AsPJT/master/Picture/roguelike.png)](https://github.com/AsPJT/Roguelike) 33 | -------------------------------------------------------------------------------- /voronoi/DungeonRandom.hpp: -------------------------------------------------------------------------------- 1 | #ifndef INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_RANDOM 2 | #define INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_RANDOM 3 | //:::::----------::::::::::----------:::::// 4 | // Dungeon Template Library // 5 | // Made by Gaccho. // 6 | // This code is licensed under CC0. // 7 | //:::::----------::::::::::----------:::::// 8 | 9 | #include 10 | #include 11 | 12 | //Dungeon Template Library Namespace 13 | namespace dtl { 14 | 15 | class Rand { 16 | public: 17 | //コンストラクタ(初期化) 18 | explicit Rand() { mt.seed(rd()); } 19 | private: 20 | //32ビット版メルセンヌ・ツイスタ 21 | std::mt19937 mt; 22 | //非決定論的な乱数 23 | std::random_device rd; 24 | 25 | public: 26 | //初期値 27 | void seed() noexcept { 28 | mt.seed(rd()); 29 | } 30 | void seed(const std::uint_fast32_t seed_) noexcept { 31 | mt.seed(seed_); 32 | } 33 | 34 | //通常の乱数 35 | std::uint_fast32_t operator()() noexcept { 36 | return mt(); 37 | } 38 | //0~最大値-1 (余りの範囲の一様分布乱数) 39 | std::int_fast32_t operator()(const std::int_fast32_t max_) noexcept { 40 | std::uniform_int_distribution<> uid(0, ((max_ > 0) ? max_ - 1 : 0)); 41 | return uid(mt); 42 | } 43 | //最小値~最大値 44 | std::int_fast32_t operator()(const std::int_fast32_t min_, const std::int_fast32_t max_) noexcept { 45 | std::uniform_int_distribution<> uid((min_ <= max_) ? min_ : max_, (min_ <= max_) ? max_ : min_); 46 | return uid(mt); 47 | } 48 | //確率 49 | bool randBool(const double probability_) noexcept { 50 | std::bernoulli_distribution uid(probability_); 51 | return uid(mt); 52 | } 53 | bool randBool() noexcept { 54 | std::uniform_int_distribution<> uid(0, 1); 55 | return ((uid(mt)) ? true : false); 56 | } 57 | }; 58 | static thread_local Rand rnd; 59 | 60 | } 61 | 62 | #endif //Included Dungeon Template Library -------------------------------------------------------------------------------- /voronoi.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.102 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "voronoi", "voronoi\voronoi.vcxproj", "{ADF29D8E-3996-43B6-9819-1C247CFFAC98}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "voronoi_cui", "voronoi_cui\voronoi_cui.vcxproj", "{E35EDDBD-2905-4B88-BC1B-04A814659840}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Debug|x64.ActiveCfg = Debug|x64 19 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Debug|x64.Build.0 = Debug|x64 20 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Debug|x86.ActiveCfg = Debug|Win32 21 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Debug|x86.Build.0 = Debug|Win32 22 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Release|x64.ActiveCfg = Release|x64 23 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Release|x64.Build.0 = Release|x64 24 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Release|x86.ActiveCfg = Release|Win32 25 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98}.Release|x86.Build.0 = Release|Win32 26 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Debug|x64.ActiveCfg = Debug|x64 27 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Debug|x64.Build.0 = Debug|x64 28 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Debug|x86.ActiveCfg = Debug|Win32 29 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Debug|x86.Build.0 = Debug|Win32 30 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Release|x64.ActiveCfg = Release|x64 31 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Release|x64.Build.0 = Release|x64 32 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Release|x86.ActiveCfg = Release|Win32 33 | {E35EDDBD-2905-4B88-BC1B-04A814659840}.Release|x86.Build.0 = Release|Win32 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | GlobalSection(ExtensibilityGlobals) = postSolution 39 | SolutionGuid = {EB2ADD8C-FCAC-433D-8720-C771A7806EB6} 40 | EndGlobalSection 41 | EndGlobal 42 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /voronoi/SimpleVoronoiIsland.hpp: -------------------------------------------------------------------------------- 1 | #ifndef INCLUDED_DUNGEON_TEMPLATE_LIBRARY_SIMPLE_VORONOI_ISLAND 2 | #define INCLUDED_DUNGEON_TEMPLATE_LIBRARY_SIMPLE_VORONOI_ISLAND 3 | //:::::----------::::::::::----------:::::// 4 | // Dungeon Template Library // 5 | // Made by Gaccho. // 6 | // This code is licensed under CC0. // 7 | //:::::----------::::::::::----------:::::// 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "DungeonRandom.hpp" 14 | 15 | //Dungeon Template Library Namespace 16 | namespace dtl { 17 | 18 | template 19 | constexpr std::int_fast32_t distanceSqrd(const Point_& point_, std::int_fast32_t x_, std::int_fast32_t y_) noexcept { 20 | x_ -= (std::int_fast32_t)point_.first; 21 | y_ -= (std::int_fast32_t)point_.second; 22 | return (x_ * x_) + (y_ * y_); 23 | } 24 | 25 | template 26 | class SimpleVoronoiIsland { 27 | public: 28 | //コンストラクタ 29 | SimpleVoronoiIsland() = default; 30 | template 31 | constexpr explicit SimpleVoronoiIsland(STL_& stl_, const std::size_t count_ = 100, const double rbool_ = 0.4, const Int_ land_ = 1, const Int_ sea_ = 0) { 32 | create(stl_, count_, rbool_, land_, sea_); 33 | } 34 | template 35 | constexpr void operator()(STL_& stl_, const std::size_t count_ = 100, const double rbool_ = 0.4, const Int_ land_ = 1, const Int_ sea_ = 0) const noexcept { 36 | create(stl_, count_, rbool_, land_, sea_); 37 | } 38 | 39 | //ボロノイ図を作る 40 | template 41 | constexpr void create(STL_& stl_, const std::size_t count_ = 100, const double rbool_ = 0.4, const Int_ land_ = 1, const Int_ sea_ = 0) noexcept { 42 | for (std::size_t i{}; i < count_; ++i) { 43 | createPoint((stl_.empty()) ? 0 : stl_.front().size(), stl_.size(), rbool_, land_, sea_); 44 | } 45 | createSites(stl_, (stl_.empty()) ? 0 : stl_.front().size(), stl_.size()); 46 | } 47 | constexpr void init() noexcept { 48 | point.clear(); 49 | color.clear(); 50 | } 51 | private: 52 | std::vector> point; 53 | std::vector color; 54 | 55 | constexpr bool isMakeIsland(const std::size_t w_, const std::size_t h_, const std::size_t numerator_, const std::size_t denominator_) const noexcept { 56 | return (point.back().first > (w_ * numerator_ / denominator_) && point.back().first < (w_ * (denominator_ - numerator_) / denominator_)) && (point.back().second > (h_ * numerator_ / denominator_) && point.back().second < (h_ * (denominator_ - numerator_) / denominator_)); 57 | } 58 | //原点の場所と陸地を決定する 59 | constexpr void createPoint(const std::size_t w_, const std::size_t h_, const double rbool_, const Int_ land_, const Int_ sea_) noexcept { 60 | point.emplace_back((std::size_t)rnd(static_cast(w_)), (std::size_t)rnd(static_cast(h_))); 61 | if (isMakeIsland(w_, h_, 2, 5) || (rnd.randBool(rbool_) && isMakeIsland(w_, h_, 1, 5))) 62 | color.emplace_back(land_); 63 | else color.emplace_back(sea_); 64 | } 65 | //図形を線画 66 | template 67 | constexpr void createSites(STL_& stl_, const std::size_t w_, const std::size_t h_) const noexcept { 68 | std::int_fast32_t ds{}, dist{}; 69 | for (std::size_t hh{}, ind{}; hh < h_; ++hh) 70 | for (std::size_t ww{}; ww < w_; ++ww) { 71 | ind = std::numeric_limits::max(); 72 | dist = std::numeric_limits::max(); 73 | for (std::size_t it{}; it < point.size(); ++it) { 74 | const std::pair& p{ point[it] }; 75 | if ((ds = distanceSqrd(p, static_cast(ww), static_cast(hh))) >= dist) continue; 76 | dist = ds; 77 | ind = it; 78 | } 79 | if (ind != std::numeric_limits::max()) stl_[hh][ww] = color[ind]; 80 | } 81 | } 82 | }; 83 | 84 | } 85 | 86 | #endif //Included Dungeon Template Library -------------------------------------------------------------------------------- /voronoi/DungeonTemplateOutput.hpp: -------------------------------------------------------------------------------- 1 | #ifndef INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_OUTPUT 2 | #define INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_OUTPUT 3 | //:::::----------::::::::::----------:::::// 4 | // Dungeon Template Library // 5 | // Made by Gaccho. // 6 | // This code is licensed under CC0. // 7 | //:::::----------::::::::::----------:::::// 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | //Dungeon Template Library Namespace 15 | namespace dtl { 16 | //数値出力 17 | template 18 | constexpr void dungeonNumberOutput(const STL_& stl_) noexcept { 19 | for (std::size_t i{}; i < stl_.size(); ++i) { 20 | for (std::size_t j{}; j < stl_[i].size(); ++j) 21 | std::cout << stl_[i][j]; 22 | std::cout << std::endl; 23 | } 24 | } 25 | template 26 | constexpr void dungeonNumberOutput_RangeBasedFor(const STL_& stl_) noexcept { 27 | for (const auto& i : stl_) { 28 | for (const auto& j : i) 29 | std::cout << j; 30 | std::cout << std::endl; 31 | } 32 | } 33 | template 34 | constexpr void dungeonNumberOutput(const STL_& stl_, const char* const string_) noexcept { 35 | if (string_ == nullptr) return; 36 | for (std::size_t i{}; i < stl_.size(); ++i) { 37 | for (std::size_t j{}; j < stl_[i].size(); ++j) 38 | std::cout << stl_[i][j] << string_; 39 | std::cout << std::endl; 40 | } 41 | } 42 | template 43 | constexpr void dungeonNumberOutput_RangeBasedFor(const STL_& stl_, const char* const string_) noexcept { 44 | if (string_ == nullptr) return; 45 | for (const auto& i : stl_) { 46 | for (const auto& j : i) 47 | std::cout << j << string_; 48 | std::cout << std::endl; 49 | } 50 | } 51 | //文字出力 52 | template 53 | constexpr void dungeonStringOutputBool(const STL_& stl_, const char* const true_, const char* const false_) noexcept { 54 | if (true_ == nullptr || false_ == nullptr) return; 55 | for (std::size_t i{}; i < stl_.size(); ++i) { 56 | for (std::size_t j{}; j < stl_[i].size(); ++j) { 57 | if (stl_[i][j]) std::cout << true_; 58 | else std::cout << false_; 59 | } 60 | std::cout << std::endl; 61 | } 62 | } 63 | template 64 | constexpr void dungeonStringOutputBool_RangeBasedFor(const STL_& stl_, const char* const true_, const char* const false_) noexcept { 65 | if (true_ == nullptr || false_ == nullptr) return; 66 | for (const auto& i : stl_) { 67 | for (const auto& j : i) { 68 | if (j) std::cout << true_; 69 | else std::cout << false_; 70 | } 71 | std::cout << std::endl; 72 | } 73 | } 74 | 75 | bool dungeonStringOutput_String(std::vector& string_) noexcept { return string_.empty(); } 76 | template 77 | constexpr void dungeonStringOutput_String(std::vector& string_vector_, const First_& first_, const Args_&... args_) noexcept { 78 | string_vector_.emplace_back(std::string(first_)); 79 | dungeonStringOutput_String(string_vector_, args_...); 80 | } 81 | template 82 | void dungeonStringOutput(const STL_& stl_, const First_& first_, const Args_&... args_) noexcept { 83 | std::vector string_vector; 84 | string_vector.emplace_back(std::string(first_)); 85 | dungeonStringOutput_String(string_vector, args_...); 86 | 87 | for (std::size_t i{}; i < stl_.size(); ++i) { 88 | for (std::size_t j{}; j < stl_[i].size(); ++j) { 89 | if ((std::size_t)stl_[i][j] >= string_vector.size()) continue; 90 | std::cout << string_vector[((std::size_t)stl_[i][j])]; 91 | } 92 | std::cout << std::endl; 93 | } 94 | } 95 | template 96 | void dungeonStringOutput_RangeBasedFor(const STL_& stl_, const First_& first_, const Args_&... args_) noexcept { 97 | std::vector string_vector; 98 | string_vector.emplace_back(std::string(first_)); 99 | dungeonStringOutput_String(string_vector, args_...); 100 | 101 | for (const auto& i : stl_) { 102 | for (const auto& j : i) { 103 | if ((std::size_t)j >= string_vector.size()) continue; 104 | std::cout << string_vector[((std::size_t)j)]; 105 | } 106 | std::cout << std::endl; 107 | } 108 | } 109 | 110 | 111 | 112 | } 113 | 114 | #endif //Included Dungeon Template Library -------------------------------------------------------------------------------- /voronoi/DungeonNoise.hpp: -------------------------------------------------------------------------------- 1 | #ifndef INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_NOISE 2 | #define INCLUDED_DUNGEON_TEMPLATE_LIBRARY_DUNGEON_NOISE 3 | //:::::----------::::::::::----------:::::// 4 | // Dungeon Template Library // 5 | // Made by Gaccho. // 6 | // This code is licensed under CC0. // 7 | //:::::----------::::::::::----------:::::// 8 | 9 | #include 10 | #include "DungeonRandom.hpp" 11 | 12 | //Dungeon Template Library Namespace 13 | namespace dtl { 14 | 15 | template 16 | constexpr void noiseBool(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 17 | for (std::size_t i{}; i < stl_.size(); ++i) 18 | for (std::size_t j{}; j < stl_[i].size(); ++j) { 19 | if (!rnd.randBool(rbool_)) continue; 20 | if (stl_[i][j]) stl_[i][j] = false_tile_; 21 | else stl_[i][j] = true_tile_; 22 | } 23 | } 24 | 25 | template 26 | constexpr void noiseBool_RangeBasedFor(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 27 | for (auto&& i : stl_) 28 | for (auto&& j : i) { 29 | if (!rnd.randBool(rbool_)) continue; 30 | if (j) j = false_tile_; 31 | else j = true_tile_; 32 | } 33 | } 34 | 35 | //ノイズを発生させる 36 | template 37 | constexpr void noiseShoreBool(STL_& stl_, const double rbool_) noexcept { 38 | for (std::size_t i{ 1 }; i < stl_.size(); ++i) 39 | for (std::size_t j{ 1 }; j < stl_[i].size(); ++j) { 40 | if (!rnd.randBool(rbool_) || (stl_[i][j] == stl_[i][j - 1] && stl_[i][j] == stl_[i - 1][j])) continue; 41 | if (stl_[i][j]) stl_[i][j] = false; 42 | else stl_[i][j] = true; 43 | } 44 | } 45 | template 46 | constexpr void rnoiseShoreBool(STL_& stl_, const double rbool_) noexcept { 47 | for (std::size_t i{ stl_.size() - 1 }; i >= 1; --i) 48 | for (std::size_t j{ stl_[i].size() - 1 }; j >= 1; --j) { 49 | if (!rnd.randBool(rbool_) || (stl_[i - 1][j - 1] == stl_[i][j - 1] && stl_[i - 1][j - 1] == stl_[i - 1][j])) continue; 50 | if (stl_[i - 1][j - 1]) stl_[i - 1][j - 1] = false; 51 | else stl_[i - 1][j - 1] = true; 52 | } 53 | } 54 | 55 | template 56 | constexpr void noiseShoreBothBool(STL_& stl_, const double rbool_) noexcept { 57 | noiseShoreBool(stl_, rbool_); 58 | rnoiseShoreBool(stl_, rbool_); 59 | } 60 | template 61 | constexpr void noiseShoreBothBool(STL_& stl_, const double rbool1_, const double rbool2_) noexcept { 62 | noiseShoreBool(stl_, rbool1_); 63 | rnoiseShoreBool(stl_, rbool2_); 64 | } 65 | template 66 | constexpr void rnoiseShoreBothBool(STL_& stl_, const double rbool_) noexcept { 67 | rnoiseShoreBool(stl_, rbool_); 68 | noiseShoreBool(stl_, rbool_); 69 | } 70 | template 71 | constexpr void rnoiseShoreBothBool(STL_& stl_, const double rbool1_, const double rbool2_) noexcept { 72 | rnoiseShoreBool(stl_, rbool1_); 73 | noiseShoreBool(stl_, rbool2_); 74 | } 75 | 76 | template 77 | constexpr void noiseShore(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 78 | for (std::size_t i{ 1 }; i < stl_.size(); ++i) 79 | for (std::size_t j{ 1 }; j < stl_[i].size(); ++j) { 80 | if (!rnd.randBool(rbool_) || (stl_[i][j] == stl_[i][j - 1] && stl_[i][j] == stl_[i - 1][j])) continue; 81 | if (stl_[i][j]) stl_[i][j] = false_tile_; 82 | else stl_[i][j] = true_tile_; 83 | } 84 | } 85 | template 86 | constexpr void rnoiseShore(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 87 | for (std::size_t i{ stl_.size() - 1 }; i >= 1; --i) 88 | for (std::size_t j{ stl_[i].size() - 1 }; j >= 1; --j) { 89 | if (!rnd.randBool(rbool_) || (stl_[i - 1][j - 1] == stl_[i][j - 1] && stl_[i - 1][j - 1] == stl_[i - 1][j])) continue; 90 | if (stl_[i - 1][j - 1]) stl_[i - 1][j - 1] = false_tile_; 91 | else stl_[i - 1][j - 1] = true_tile_; 92 | } 93 | } 94 | 95 | template 96 | constexpr void noiseShoreOver(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 97 | for (std::size_t i{ 1 }; i < stl_.size(); ++i) 98 | for (std::size_t j{ 1 }; j < stl_[i].size(); ++j) { 99 | if (!rnd.randBool(rbool_) || (stl_[i][j] == stl_[i][j - 1] && stl_[i][j] == stl_[i - 1][j])) continue; 100 | if (stl_[i][j] >= true_tile_) stl_[i][j] = false_tile_; 101 | else stl_[i][j] = true_tile_; 102 | } 103 | } 104 | template 105 | constexpr void rnoiseShoreOver(STL_& stl_, const double rbool_, const Int_ true_tile_ = 1, const Int_ false_tile_ = 0) noexcept { 106 | for (std::size_t i{ stl_.size() - 1 }; i >= 1; --i) 107 | for (std::size_t j{ stl_[i].size() - 1 }; j >= 1; --j) { 108 | if (!rnd.randBool(rbool_) || (stl_[i - 1][j - 1] == stl_[i][j - 1] && stl_[i - 1][j - 1] == stl_[i - 1][j])) continue; 109 | if (stl_[i - 1][j - 1] >= true_tile_) stl_[i - 1][j - 1] = false_tile_; 110 | else stl_[i - 1][j - 1] = true_tile_; 111 | } 112 | } 113 | 114 | } 115 | 116 | #endif //Included Dungeon Template Library -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /voronoi_cui/voronoi_cui.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {E35EDDBD-2905-4B88-BC1B-04A814659840} 24 | voronoicui 25 | 10.0.17763.0 26 | 27 | 28 | 29 | Application 30 | true 31 | v141 32 | MultiByte 33 | 34 | 35 | Application 36 | false 37 | v141 38 | true 39 | MultiByte 40 | 41 | 42 | Application 43 | true 44 | v141 45 | MultiByte 46 | 47 | 48 | Application 49 | false 50 | v141 51 | true 52 | MultiByte 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Level4 76 | MaxSpeed 77 | true 78 | true 79 | true 80 | true 81 | C:\Users\wafuu\Source\Repos\voronoi\voronoi;%(AdditionalIncludeDirectories) 82 | stdcpplatest 83 | 84 | 85 | true 86 | true 87 | Console 88 | 89 | 90 | 91 | 92 | Level4 93 | Disabled 94 | true 95 | true 96 | C:\Users\wafuu\Source\Repos\voronoi\voronoi;%(AdditionalIncludeDirectories) 97 | stdcpplatest 98 | 99 | 100 | Console 101 | 102 | 103 | 104 | 105 | Level4 106 | Disabled 107 | true 108 | true 109 | C:\Users\wafuu\Source\Repos\voronoi\voronoi;%(AdditionalIncludeDirectories) 110 | stdcpplatest 111 | 112 | 113 | Console 114 | 115 | 116 | 117 | 118 | Level4 119 | MaxSpeed 120 | true 121 | true 122 | true 123 | true 124 | C:\Users\wafuu\Source\Repos\voronoi\voronoi;%(AdditionalIncludeDirectories) 125 | stdcpplatest 126 | 127 | 128 | true 129 | true 130 | Console 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /voronoi/voronoi.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {ADF29D8E-3996-43B6-9819-1C247CFFAC98} 24 | saisai 25 | 10.0.16299.0 26 | 27 | 28 | 29 | Application 30 | true 31 | v141 32 | MultiByte 33 | 34 | 35 | Application 36 | false 37 | v141 38 | true 39 | MultiByte 40 | 41 | 42 | Application 43 | true 44 | v141 45 | MultiByte 46 | 47 | 48 | Application 49 | false 50 | v141 51 | true 52 | MultiByte 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Level3 76 | Disabled 77 | true 78 | true 79 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalIncludeDirectories) 80 | MultiThreadedDebug 81 | 82 | 83 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalLibraryDirectories) 84 | Windows 85 | 86 | 87 | 88 | 89 | Level3 90 | Disabled 91 | true 92 | true 93 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalIncludeDirectories) 94 | MultiThreadedDebug 95 | 96 | 97 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalLibraryDirectories) 98 | Windows 99 | 100 | 101 | 102 | 103 | Level3 104 | MaxSpeed 105 | true 106 | true 107 | true 108 | true 109 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalIncludeDirectories) 110 | MultiThreaded 111 | 112 | 113 | true 114 | true 115 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalLibraryDirectories) 116 | Windows 117 | 118 | 119 | 120 | 121 | Level3 122 | MaxSpeed 123 | true 124 | true 125 | true 126 | true 127 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalIncludeDirectories) 128 | MultiThreaded 129 | 130 | 131 | true 132 | true 133 | C:\プロジェクトに追加すべきファイル_VC用;%(AdditionalLibraryDirectories) 134 | Windows 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | --------------------------------------------------------------------------------