From 03f0f7859efc174cc9c007c85173ac7af83c7c81 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 17 Feb 2025 16:51:45 +0100 Subject: [PATCH 1/2] UNFINISHED Implemented procedural dice generation. Way too hard --- .../.idea.DiceProbabilities/.idea/.gitignore | 13 + .../.idea/indexLayout.xml | 8 + .../.idea.DiceProbabilities/.idea/vcs.xml | 6 + .../DiceProbabilitesPrinter/Program.cs | 4 + .../net9.0/DiceProbabilitesPrinter.deps.json | 39 + .../Debug/net9.0/DiceProbabilitesPrinter.dll | Bin 0 -> 5120 bytes .../Debug/net9.0/DiceProbabilitesPrinter.exe | Bin 0 -> 145920 bytes ...DiceProbabilitesPrinter.runtimeconfig.json | 12 + .../bin/Debug/net9.0/DiceProbabilities.dll | Bin 0 -> 6144 bytes .../DiceProbabilities/RollFourSumTwo.cs | 129 ++ .../DiceProbabilities.deps.json | 47 + .../netstandard2.0/DiceProbabilities.dll | Bin 0 -> 6656 bytes DiceProbabilities/Roll4Add2.txt | 13 + DiceProbabilities/Roll4Add2AddOther2.txt | 145 ++ .../DungeonMapConsolePrinter/Program.cs | 1 + .../bin/Debug/net9.0/DiceProbabilities.dll | Bin 0 -> 6656 bytes .../net9.0/DungeonMapConsolePrinter.deps.json | 14 + .../Debug/net9.0/DungeonMapConsolePrinter.dll | Bin 5632 -> 6144 bytes .../Debug/net9.0/DungeonMapConsolePrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DungeonMapGenerator.dll | Bin 25600 -> 28672 bytes .../DungeonMapGenerator/DungeonGenerator.cs | 5 +- .../DungeonLockPopulator.cs | 130 ++ .../DungeonMapGenerator/DungeonMap.cs | 10 +- .../DungeonMapGenerator/Lock.cs | 53 + .../DungeonMapGenerator/Room.cs | 12 +- .../netstandard2.0/DiceProbabilities.dll | Bin 0 -> 6656 bytes .../DungeonMapGenerator.deps.json | 14 + .../netstandard2.0/DungeonMapGenerator.dll | Bin 25600 -> 28672 bytes Dungeons/dungeon03.json | 2010 +++++++++++++++++ Dungeons/dungeon04.json | 1878 +++++++++++++++ Dungeons/dungeon05.json | 1872 +++++++++++++++ Dungeons/dungeon06.json | 1918 ++++++++++++++++ Dungeons/dungeon08.json | 1738 ++++++++++++++ Dungeons/dungeon09.json | 1823 +++++++++++++++ Dungeons/dungeon10.json | 1986 ++++++++++++++++ .../Assets/Plugins/DiceProbabilities.dll | Bin 0 -> 6656 bytes .../Assets/Plugins/DiceProbabilities.dll.meta | 2 + .../Assets/Plugins/DungeonMapGenerator.dll | Bin 25600 -> 28672 bytes .../Assets/Resources/Rooms/BossRoom.prefab | 15 - .../Assets/Resources/Rooms/MonsterRoom.prefab | 15 - .../Assets/Resources/Rooms/Room.prefab | 15 - .../DungeonGenerator/DungeonMapLoader.cs | 34 + .../Assets/Scripts/Rooms/Locks/NumberLock.cs | 5 + 43 files changed, 13909 insertions(+), 57 deletions(-) create mode 100644 DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/.gitignore create mode 100644 DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/indexLayout.xml create mode 100644 DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/vcs.xml create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/Program.cs create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.deps.json create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.dll create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.exe create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.runtimeconfig.json create mode 100644 DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilities.dll create mode 100644 DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs create mode 100644 DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.deps.json create mode 100644 DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll create mode 100644 DiceProbabilities/Roll4Add2.txt create mode 100644 DiceProbabilities/Roll4Add2AddOther2.txt create mode 100644 DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DiceProbabilities.dll create mode 100644 DungeonMapGenerator/DungeonMapGenerator/DungeonLockPopulator.cs create mode 100644 DungeonMapGenerator/DungeonMapGenerator/Lock.cs create mode 100644 DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DiceProbabilities.dll create mode 100644 Dungeons/dungeon03.json create mode 100644 Dungeons/dungeon04.json create mode 100644 Dungeons/dungeon05.json create mode 100644 Dungeons/dungeon06.json create mode 100644 Dungeons/dungeon08.json create mode 100644 Dungeons/dungeon09.json create mode 100644 Dungeons/dungeon10.json create mode 100644 PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll create mode 100644 PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll.meta diff --git a/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/.gitignore b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/.gitignore new file mode 100644 index 0000000..c2fb36f --- /dev/null +++ b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/modules.xml +/contentModel.xml +/.idea.DiceProbabilities.iml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/indexLayout.xml b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/vcs.xml b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/DiceProbabilities/.idea/.idea.DiceProbabilities/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DiceProbabilities/DiceProbabilitesPrinter/Program.cs b/DiceProbabilities/DiceProbabilitesPrinter/Program.cs new file mode 100644 index 0000000..a2c9afc --- /dev/null +++ b/DiceProbabilities/DiceProbabilitesPrinter/Program.cs @@ -0,0 +1,4 @@ +using DiceProbabilities; + +Console.WriteLine(DiceRollProbability.RollFourPickTwoPickTwoAgainOdds()); + diff --git a/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.deps.json b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.deps.json new file mode 100644 index 0000000..64768f5 --- /dev/null +++ b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.deps.json @@ -0,0 +1,39 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v9.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v9.0": { + "DiceProbabilitesPrinter/1.0.0": { + "dependencies": { + "DiceProbabilities": "1.0.0" + }, + "runtime": { + "DiceProbabilitesPrinter.dll": {} + } + }, + "DiceProbabilities/1.0.0": { + "runtime": { + "DiceProbabilities.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "DiceProbabilitesPrinter/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "DiceProbabilities/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.dll b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.dll new file mode 100644 index 0000000000000000000000000000000000000000..6afb7daac1381a4b13aa271173d14fcd976b6b91 GIT binary patch literal 5120 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

M168aUZ<7;m8l0afcVX$gw)Ckp& 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 K|1kd>5%@Pqi^^gE literal 0 HcmV?d00001 diff --git a/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs b/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs new file mode 100644 index 0000000..4786421 --- /dev/null +++ b/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DiceProbabilities +{ + public static class RollFourSumTwo + { + public static readonly Dictionary ResultOddsmapping = new Dictionary() + { + {"=", .6296f }, + {"2", .1319f}, + {"3", .2330f}, + {"4", 3557f}, + {"5", .4475f}, + {"6", .5610f}, + {"7", .6435f}, + {"8", .5610f}, + {"9", .4475f}, + {"10", .3557f}, + {"11", .2340f}, + {"12", .1319f} + + }; + + public static float GetProbalityOfAtleastOneUnlocking(List options) + { + float probabilityNoDiceWillSumToLocks = 1; + foreach (var option in options) + { + if (ResultOddsmapping.TryGetValue(option, out var value)) + { + probabilityNoDiceWillSumToLocks *= (1 - value); + } + else + { + throw new ArgumentException($"{option} is not a valid result for the sum of two dice."); + } + } + + return 1 - probabilityNoDiceWillSumToLocks; + } + + public static string RollFourPickTwoPickTwoAgainOdds() + { + // Total number of rolls (6^4 = 1296 possible outcomes) + int possibleDiceCombosCount = 0; + + // Counter for the possible sums + Dictionary<(string, string), int> selectionsCounts = new Dictionary<(string, string), int>(); + double diceEqualCount = 0; + + // Generate all possible rolls of 4 dice + for (int d1 = 1; d1 <= 6; d1++) + { + for (int d2 = 1; d2 <= 6; d2++) + { + for (int d3 = 1; d3 <= 6; d3++) + { + for (int d4 = 1; d4 <= 6; d4++) + { + // Get all possible pairs of dice + var possibleDiceSlections = new List<((int, int), (int, int))> + { + ((d1, d2), (d3, d4)), ((d1, d3), (d2, d4)), ((d1, d4), (d2, d3)), + ((d2, d3), (d1, d4)), ((d2, d4), (d1, d3)), + ((d3, d4), (d1, d2)) + }; + + foreach (((int, int), (int, int)) selections in possibleDiceSlections) + { + possibleDiceCombosCount++; + var firstSelection = selections.Item1; + var secondSelection = selections.Item2; + string firstSelectionResult; + string secondSelectionResult; + if (firstSelection.Item1 == firstSelection.Item2) + { + firstSelectionResult = "="; + if (secondSelection.Item1 == secondSelection.Item2) + { + secondSelectionResult = "="; + IncrementSelectionsCounts(selectionsCounts, (firstSelectionResult, secondSelectionResult)); + } + + secondSelectionResult = (secondSelection.Item1 + secondSelection.Item2).ToString(); + IncrementSelectionsCounts(selectionsCounts, (firstSelectionResult, secondSelectionResult)); + } + + firstSelectionResult = (firstSelection.Item1 + firstSelection.Item2).ToString(); + if (secondSelection.Item1 == secondSelection.Item2) + { + secondSelectionResult = "="; + IncrementSelectionsCounts(selectionsCounts, (firstSelectionResult, secondSelectionResult)); + } + + secondSelectionResult = (secondSelection.Item1 + secondSelection.Item2).ToString(); + IncrementSelectionsCounts(selectionsCounts, (firstSelectionResult, secondSelectionResult)); + + } + } + } + } + } + + StringBuilder sb = new StringBuilder(); + sb.Append("Sum\tProbability (%)" + Environment.NewLine); + + // sb.Append($"=\t{diceEqualCount / possibleDiceCombosCount * 100:F2}%{Environment.NewLine}"); + foreach (var selections in selectionsCounts.Keys) + { + double probability = (double)selectionsCounts[selections] / possibleDiceCombosCount * 100; + sb.Append($"{selections}\t{probability:F2}%{Environment.NewLine}"); + } + + return sb.ToString(); + } + + private static void IncrementSelectionsCounts(Dictionary<(string, string), int> dict, (string, string) key) + { + if (!dict.ContainsKey(key)) + { + dict[key] = 0; + } + + dict[key]++; + } + } +} \ No newline at end of file diff --git a/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.deps.json b/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.deps.json new file mode 100644 index 0000000..a3b254e --- /dev/null +++ b/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.deps.json @@ -0,0 +1,47 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "DiceProbabilities/1.0.0": { + "dependencies": { + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "DiceProbabilities.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + } + } + }, + "libraries": { + "DiceProbabilities/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll b/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..919def5da635e65ba885b2e889e6e24838323c42 GIT binary patch literal 6656 zcmeHLYiwM_6+UzK>GgW;yX!|noUlo3aAIfiJ9bEd9ltO*wuv_(p)SeY-5Y1gdhhDq zyACEQO=+o01QApfNFXXAwNhWAl%kRXeIP1Pi3X^sR253a50H>5mHq(rK}q_Zxx4H2 z11cnbv{J{OGjkqu=A1KU9(VWOazD9<$c=jWGSLOJTm~fkWN-%T(3Q`G=&6c}n=goo zi<{#o(pEHQ8gr&LA5Ci6tYJqJdeqEkqv>pPcxom(Z>02CRaKy=pn7_QXhOK?m8Z|1 zFV6NBZHZQjcA_vSUWa-^2ihp=04h<9>?@AlOkn$EIRgkf7Z)A7n??D5sV$&PLiqsG zOmSy`=$9ObmE{;w5VXHuLlj@h`y@O{e(JF+`>MfQ7UQRBkQ$7Ho*P`)&n~8X}&)Jx<5l*XVS7eIIfttO&+5 zt8Ud}A@~8+tNLWessm=!0}yk)4%f3b*BPRE3S!H~7Ku=@hUTKe(iF?a7L6&HSH_L_ zN%b2IFfdZl7lbR}iWa0rAQB*N!{LA$IK7^+N_4K^PEf5py#XCGjc6{3NVQtsmLOBZ zazv`spu-IoxixA{+xh}Gak^uSw*U^;c&#K`Wi1O^@u}6jqG~=Bb<>c0vGYB-U7W= zt=;vSq+Y?92kQEJv8uw+ zdNnI@v_ee_upLjp*@jE?*p)?RD~xTd{|fA&E4B}IJIBYrkoZ?3Wj0_d$c+S?cg0fx zakPFca*-ZscN30M0!bysWndcy5Ve4}trBRx(Fz=+U6su~X@Ah?Z#e8wxAWNFV=Nb| z4T8-w+qRtAvH3b<2M=sEzYp)Wyj0`cTO|CD3HLpeEfIdq1e(5eq$u$;6E19erzG(# z6P|pux}@|MOt|g2rV`*#`Y2VBZ`$XYX z1j)7d$TCEmwwdJFB=gERCypL2(8 z9XmKa4BFekzr|zsWsC%HE$(|T#Qcti2hISC)6??FoBRYq;G=bu!HVL}{KcL+bw$WhbjyCX>`zGf zpORPU6T?#TJyP5AbQjj}9-5^A(L{S)qaqG%pBJ-ITN5=awm46duG65fJ(|?eMCV-R zARmJzjZ#k|EcpO4Rnm(hMiF`ya09&uxRw46*h&LRjJoJ%z-uW1I79~EjgmeCSVxEG z%VG;6x0^1~ALuXi5!H$gag#V9+-IEZ!vYjaK*qm_5q(1>myn6HWgqLHaa*4U%-UU@ zbV$qO^>{v)(T{b~a5`zHjjU!a0%566+P&XM`| z?B7J*)@jhP^!Y?)F`l-|$#KnuhEY70^;3p0?>{6;!--$pgEVH z*R%G>?MXeyL8b%9l~E&a&gAFgrwnqY-Iq^iQo6}bjbt$Zfi_HvB^@Z6LaGg?wYjWe z+3BQJQZ=1Uo`kMKGdQQEv+P^RI47paQeG|HoYBn%cxe@q4DKVH8C~f*8Pa46yCP}o z?8b~<%<~}wS}hqEcx(|eB&pdnDwBz(61QPLPzqazMzRZO)5!90DL#}pP44eE7W7H} zekphs=RVZfFyDesI*E#MG)if*C`wr}$VRK7E&yggPoZy;4t^dubB{yHL~GLt(4&$w zkJbQ(si)A3VqBV%;Ky)b?IF5)2IJ?cf~GOnpairhAi*=(vumbMyV56Gcaz+)rs1Liu=UXgW8L_6SWT&SG1>tUpIjGTmpnN%Gql!{v&mF^U&Ad zm=w>Qy!a})qeA#yQ4$_>RF%?2zeyK9mP57tqb=k zp`bsiC=sfO2oEWtPzbt|1>XigGwakrko;BQ5kCqmVhUGa1-NGo+De%v`A|qv{0f&k zb$?O6Gfh>fvTV-UwPy1=llr0xJc)=JMvHdv92|oP)v}8#SuSscP=!<>y$s=)4`D=j zBosh&!sCcSM8JmeqFqdel@58yTyIoFFpZDgp-^LEW5DMs4uCdD`+svfa{1zpH*fM4 zBTOPFSD}^^QRXAt2vczX_(kE%eG@+`;!6F^rk0yDvZaF{e!?_PSuE!hoCjlq*2gAC z;xmPtqOEXV?OEuIwL?RwwsgevC6Un)ox&*}}(yD76No}Xro=mm(b#-<2b|rg~TKCTW&W_%m&QwQ#e{XNEp6n>zoTnbH zewxI7er(ZM)L|$a#z%3nuv7TnrK?e22JhuE9?R4)C@TkMhG%~MO2unm{pR%GL(Q(U zb?R&Hu#TZ!vj;8QUJ}llIxf%I>HHmcWb`rkKfB7+H7G{nwpr=>Y}rkWP^}h?o?ENJ>>uM<72*!*u}-Nll##kw!AI=IO0%`4jJZfCbJ)h z9L-xv!_;+o!xY9`Zibqbp;@l)zaA6P0sKC2X1S@(mkUy16`keyx1+-YL@Df^VoC8y zikIFD9R(br1L%$8m$pgZvV7pJ|>L5Sbt@}XbAxfw17U7Ww4BzsS@7z#p-AHM9mkn(v!!enwr9#b_|J33a0_SfN4Q-T=$e3@ zIjM!ClEb~rQJup*ZbK%D8kciU73dssp0nsbV@~uw&D_p9IFU)=6_CVipLQMYqHAFP zavdupxD>xu_^IIykObU`+Kyfdu#dX%*GavAN$QdOZbI`0JH_I%HT6 smp-|EgIF^Q`sa~l8ToSgcsqDKKcfOg{CmVi*^&4eY5u>O|A7en8y}Pp!~g&Q literal 0 HcmV?d00001 diff --git a/DiceProbabilities/Roll4Add2.txt b/DiceProbabilities/Roll4Add2.txt new file mode 100644 index 0000000..7faa589 --- /dev/null +++ b/DiceProbabilities/Roll4Add2.txt @@ -0,0 +1,13 @@ +Sum Probability (%) += 62.96% +2 13.19% +3 23.30% +4 35.57% +5 44.75% +6 56.10% +7 64.35% +8 56.10% +9 44.75% +10 35.57% +11 23.40% +12 13.19% \ No newline at end of file diff --git a/DiceProbabilities/Roll4Add2AddOther2.txt b/DiceProbabilities/Roll4Add2AddOther2.txt new file mode 100644 index 0000000..14584fb --- /dev/null +++ b/DiceProbabilities/Roll4Add2AddOther2.txt @@ -0,0 +1,145 @@ +Sum Probability (%) +(=, =) 2.78% +(=, 2) 0.46% +(2, =) 0.46% +(2, 2) 0.08% +(=, 3) 0.93% +(2, 3) 0.15% +(3, =) 0.93% +(3, 2) 0.15% +(=, 4) 1.39% +(2, 4) 0.23% +(4, =) 1.39% +(4, 2) 0.23% +(=, 5) 1.85% +(2, 5) 0.31% +(5, =) 1.85% +(5, 2) 0.31% +(=, 6) 2.31% +(2, 6) 0.39% +(6, =) 2.31% +(6, 2) 0.39% +(=, 7) 2.78% +(2, 7) 0.46% +(7, =) 2.78% +(7, 2) 0.46% +(3, 3) 0.31% +(3, 4) 0.46% +(4, 3) 0.46% +(3, 5) 0.62% +(5, 3) 0.62% +(3, 6) 0.77% +(6, 3) 0.77% +(=, 8) 2.31% +(2, 8) 0.39% +(3, 7) 0.93% +(7, 3) 0.93% +(8, =) 2.31% +(8, 2) 0.39% +(4, 4) 0.69% +(4, 5) 0.93% +(5, 4) 0.93% +(4, 6) 1.16% +(6, 4) 1.16% +(=, 9) 1.85% +(2, 9) 0.31% +(4, 7) 1.39% +(7, 4) 1.39% +(9, =) 1.85% +(9, 2) 0.31% +(5, 5) 1.23% +(5, 6) 1.54% +(6, 5) 1.54% +(=, 10) 1.39% +(2, 10) 0.23% +(5, 7) 1.85% +(7, 5) 1.85% +(10, =) 1.39% +(10, 2) 0.23% +(6, 6) 1.93% +(=, 11) 0.93% +(2, 11) 0.15% +(6, 7) 2.31% +(7, 6) 2.31% +(11, =) 0.93% +(11, 2) 0.15% +(=, 12) 0.46% +(2, 12) 0.08% +(7, 7) 2.78% +(12, =) 0.46% +(12, 2) 0.08% +(3, 8) 0.77% +(8, 3) 0.77% +(3, 9) 0.62% +(4, 8) 1.16% +(8, 4) 1.16% +(9, 3) 0.62% +(3, 10) 0.46% +(5, 8) 1.54% +(8, 5) 1.54% +(10, 3) 0.46% +(3, 11) 0.31% +(6, 8) 1.93% +(8, 6) 1.93% +(11, 3) 0.31% +(3, 12) 0.15% +(7, 8) 2.31% +(8, 7) 2.31% +(12, 3) 0.15% +(4, 9) 0.93% +(9, 4) 0.93% +(4, 10) 0.69% +(5, 9) 1.23% +(9, 5) 1.23% +(10, 4) 0.69% +(4, 11) 0.46% +(6, 9) 1.54% +(9, 6) 1.54% +(11, 4) 0.46% +(4, 12) 0.23% +(7, 9) 1.85% +(9, 7) 1.85% +(12, 4) 0.23% +(5, 10) 0.93% +(10, 5) 0.93% +(5, 11) 0.62% +(6, 10) 1.16% +(10, 6) 1.16% +(11, 5) 0.62% +(5, 12) 0.31% +(7, 10) 1.39% +(10, 7) 1.39% +(12, 5) 0.31% +(6, 11) 0.77% +(11, 6) 0.77% +(6, 12) 0.39% +(7, 11) 0.93% +(11, 7) 0.93% +(12, 6) 0.39% +(7, 12) 0.46% +(12, 7) 0.46% +(8, 8) 1.93% +(8, 9) 1.54% +(9, 8) 1.54% +(8, 10) 1.16% +(10, 8) 1.16% +(8, 11) 0.77% +(11, 8) 0.77% +(8, 12) 0.39% +(12, 8) 0.39% +(9, 9) 1.23% +(9, 10) 0.93% +(10, 9) 0.93% +(9, 11) 0.62% +(11, 9) 0.62% +(9, 12) 0.31% +(12, 9) 0.31% +(10, 10) 0.69% +(10, 11) 0.46% +(11, 10) 0.46% +(10, 12) 0.23% +(12, 10) 0.23% +(11, 11) 0.31% +(11, 12) 0.15% +(12, 11) 0.15% +(12, 12) 0.08% diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs index be2ab01..4a3e8e2 100644 --- a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs +++ b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs @@ -15,6 +15,7 @@ class Program // Call the method you want to run DungeonMap map = generator.GenerateDungeon(25, .5f); + DungeonLockPopulator.PopulateLocksOfDungeon(map); DungeonMapSerializer.SerializeToFile(map, SAVED_DUNGEONS_PATH, DUNGEON_NAME ); // Print the map to the console (assuming it returns a string or something printable) diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DiceProbabilities.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DiceProbabilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..919def5da635e65ba885b2e889e6e24838323c42 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.deps.json b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.deps.json index 85a08c5..6742d84 100644 --- a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.deps.json +++ b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.deps.json @@ -23,8 +23,17 @@ } }, "System.Numerics.Vectors/4.6.0": {}, + "DiceProbabilities/1.0.0": { + "runtime": { + "DiceProbabilities.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, "DungeonMapGenerator/1.0.0": { "dependencies": { + "DiceProbabilities": "1.0.0", "Newtonsoft.Json": "13.0.3", "System.Numerics.Vectors": "4.6.0" }, @@ -57,6 +66,11 @@ "path": "system.numerics.vectors/4.6.0", "hashPath": "system.numerics.vectors.4.6.0.nupkg.sha512" }, + "DiceProbabilities/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, "DungeonMapGenerator/1.0.0": { "type": "project", "serviceable": false, diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll index ae9c7e23800a096ab4fbbcd91dcde61ac175f846..a4713b160ff412a80ed8ae4a883197223c48edd4 100644 GIT binary patch delta 1097 zcmY+DZEQ?g7{~wT%&R*!rlv!^Bs=Y}b7?WtnNCd+R?C`Y*EHRRE?>r-AySlj3lSZH zARF1~NrdoWS9YzIO(Y}BCN@Drh-5?Jo7h$e5`x4hU+}+2MVy=Sd!FZip7We@&%LKu zUyS{7uqHcL|0{;u5NhEQF`$Bi@lkwN>R%@Ml@L+aNfY={)yR6)DWZncP6)GCsKcU8 z_|@McD#ob)MQ!-Ol#g>4(MY&(foab?fMCq-R#$y7m6cBMgX)lVNi$%t=IPDtl4a@e#ZsmX(Ju& zNV);8fylQVnO53X#=onPj%bKwxx>%h-eE{(9Fuz=OE>-$HrL^<90e!qyU~y9!i^(h zA$6DLHQ4^3=1Q&fX@8QQyH&FYyH2$uC=HyJ7s=(CCCy!=AM+8kH=@soR8JkD-T|}~ z4GbU~wns`BFaP5BfQ}AS-)2pFia^jY0=K0=CF#aE(!dllfVgH_^Bc{KW}9ZGW{wnC zONOvXa}Vjpo?d(rl(l1m=;mu$XMYa&ocO+sPJK_?c|$LZ289XYtdi@MU$g_}U{r z1+*>rPDl3F``j+-^ZX*Oyuj5gM`gP=Ze5q#QdrV$b!}d{T5b3IRAKwWdbhgi845h= zx*mK#`$@~`KdgJcb62X>C9mmrL5R@{%0u3yFblc3m21kytbA-{BGHgaSdCUL*_3XG zry3jb@pL+sN)@cQrDhuw#{y^H&bS5feb(MoANy-wrq^n{G1j%0w`H$7WJCfxPyM&Z zyK-CROeLCJrGIj9#9c$#0NA15%`gMm?TnMw(ijY9no)UYbuzKLzHn TPT3O>PKoAnWz{QDig`W&*VE5m delta 1076 zcmY+DS!h#16o&tqW@(cc6VtkbX`@XvMQ@VQn?!tYYhAIiEmHI)u|cZhQWsFcM$zJi z+6)CNf}j=a212Cxpf7@guLV&M)Hfd#pF{*j{AY-Y=W@O|^UutgxwDk4Qp@EtjneyK z5>@+vCU}JfcqnM6O$^`JBJxUzsIxl;bgM?$qIyNt^Q4ZgVY)}16LH~F6Cx_=)jQD? z9$844wuUa@#QiWZ?gj+wbe9VHEY&F;qC@q_c*_8_eFHfn7SQv$_Xb(Srs+5qBAXXA z$ymLvE>e%={AFngM2-VvEWhfw>)=5Do*f669#@<|AInHj7k)BkMnpP#)~;gda{<>> zLrt`SS-G-*u2)vCay1JEA4?Z*3(eiQC8y#IySZ=&&xH#Y#S-dH!)MU(d&6x;DVun{ z8GFdE1fA!z3`q};%JbxM!y@U&3WW3$%&utaH3Za;nyG_h$dx=8LuXjG4`a5x&DNWy zHZ=1(bLxQtA7ve`OMxKi!YtB*g=7E;!;Il_!?lJv!(PKYDbP#3*yTaczwt+va@7o_+rV`GE(0Q|e|LK)pXI84a z?#(J#`#R9|?B$zdCts|%w{vpTx=~50@3pZ?b6u+#OsCsYwpB=`tV|(YY)iE!>{Op! zOt;zjq-7_qjGa#<5`_YI-1=llTCLzu{yOJM}8c^l`qA@#?eDo%9fW(W3M$ zpG5ZGSoPL3EAVC2wQPK8^ZFt8)^h*ht3KuMo=#T9PwiEalLU{qf4?;6SNGH0x`(4@ zt8a@raZ|_P;l}A=L``~6Rs8b%7 diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.exe b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.exe index 9fd248caae9dafa9972a7c4272fc2dee86078b45..c62ad19ff1a8d45e17d8aa5402c0da0f34f9dd78 100644 GIT binary patch delta 99 zcmZqp!qEUkEsR^3R+##yG9)q>G9&{@b09VVvQmJg1%ojV8Znpw$z%pou)GOSg(XnT d5GZO2q*H(_OCU4@!&IOepgG&Wn=)~-001fa5{du- delta 99 zcmZqp!qEUkEsR^3R+#!*Fjz2{F&HzLGZ-)=F&F_^1`L)!mIXs9Slooc5GZHNkOCxA h!D`JJ5`pRrfP4^X38WK&@`gZ|#E`W8yD1YV3jpXt5u^YB diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll index 89765e91a53461f50b3c35cbfa000d0a9430fdae..22457299ee0e0778ad21f1ce105b180c20538cbe 100644 GIT binary patch literal 28672 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 c)kd|(2aoN4;WMdzYrw#<Px# literal 25600 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 pointRoomMapping = dungeon.GetPointRoomIdMapping(); + Dictionary pointRoomMapping = dungeon.GetPointRoomIdMapping(); foreach (var room in dungeon.GetAllRooms()) { foreach ((Point p, RoomSide side) in room.GetAdjacentPoints()) { if (pointRoomMapping.ContainsKey(p)) { - int idForRoomPointIsIn = pointRoomMapping[p]; - room.AddAdjacentRoomId(idForRoomPointIsIn); + room.AddAdjacentRoom(pointRoomMapping[p]); } } } diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonLockPopulator.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonLockPopulator.cs new file mode 100644 index 0000000..86bf5f4 --- /dev/null +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonLockPopulator.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using DiceProbabilities; + +namespace DungeonMapGenerator +{ + public static class DungeonLockPopulator + { + private const float ACCEPTABLE_ERROR = .1319f; + public static void PopulateLocksOfDungeon(DungeonMap dungeon) + { + Random random = new Random(); + float desiredSuccessChance = .80f; + + List currentRooms = dungeon.GetEntranceRooms(); + HashSet seenRooms = new HashSet(currentRooms); + + // Set entrance room locks to 2 - 12 + Shuffle(currentRooms); + int entranceRoomLock = 1; + foreach (Room entranceRoom in currentRooms) + { + entranceRoom.Lock = new Lock((entranceRoomLock + 1.ToString())); + } + + while (currentRooms.Count > 0) + { + List locklessRooms = new List(); + List adjacentRooms = new List(); + + // Get all adjacent rooms that haven't been locked at + foreach (Room room in currentRooms.ToList()) + { + foreach (Room adjacentRoom in room.GetAdjacentRooms()) + { + if (!seenRooms.Contains(adjacentRoom)) + { + adjacentRooms.Add(adjacentRoom); + seenRooms.Add(adjacentRoom); + } + } + } + + // Get the odds of locks already set. + foreach (Room adjacentRoom in adjacentRooms.ToList()) + { + List odds = new List(); + if (adjacentRoom.Lock != null) + { + odds.Add(adjacentRoom.Lock.GetOdds()); + } + else + { + locklessRooms.Add(adjacentRoom); + } + } + + if (locklessRooms.Count > 0) + { + // Add locks to the rooms with odds adding to within the difficulty range + List locks = GenerateLocks(locklessRooms.Count, desiredSuccessChance); + for (int i = 0; i < locklessRooms.Count; i++) + { + locklessRooms[i].Lock = locks[i]; + } + } + + currentRooms = adjacentRooms; + } + } + + private static List GenerateLocks(int numLocks, float successChance) + { + List locks = new List(); + if (FindCombination(locks, numLocks, successChance, Lock.PossibleLocks)) + { + return locks; + } + + return null; + } + + private static bool FindCombination(List generatedLocks, int numLocks, float successChance, List lockOptions) + { + if (generatedLocks.Count == numLocks) + { + List locksAsStrings = generatedLocks.Select(_lock => _lock.GetLock()).ToList(); + + // Return true if given the current locks the chance of being able to open one is close to difficulty + float probalityOfAtleastOneUnlocking = RollFourSumTwo.GetProbalityOfAtleastOneUnlocking(locksAsStrings); + return probalityOfAtleastOneUnlocking >= successChance - ACCEPTABLE_ERROR + && probalityOfAtleastOneUnlocking <= successChance + ACCEPTABLE_ERROR; + } + + Shuffle(lockOptions); + + foreach (Lock _lock in lockOptions.ToList()) + { + // if adding the lock won't bring us over the threshold difficulty. + List locksAsStrings = generatedLocks.Select(l => l.GetLock()).ToList(); + locksAsStrings.Add(_lock.GetLock()); + if (RollFourSumTwo.GetProbalityOfAtleastOneUnlocking(locksAsStrings) <= successChance) + { + generatedLocks.Add(new Lock(_lock.GetLock())); + if (FindCombination(generatedLocks, numLocks, successChance, lockOptions)) + { + return true; + } + // This combination didn't work. Remove the last one and try the next lock. + generatedLocks.RemoveAt(generatedLocks.Count - 1); + } + } + + return false; + } + + private static void Shuffle(List list) + { + Random random = new Random(); + + int n = list.Count; + for (int i = n - 1; i > 0; i--) + { + int j = random.Next(i + 1); + (list[i], list[j]) = (list[j], list[i]); + } + } + } +} \ No newline at end of file diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs index d48f158..42fcfa9 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs @@ -33,15 +33,15 @@ namespace DungeonMapGenerator .Select(y => new Point(x,y)))); } - public Dictionary GetPointRoomIdMapping() + public Dictionary GetPointRoomIdMapping() { - var pointRoomMap = new Dictionary(); + var pointRoomMap = new Dictionary(); foreach (var room in GetAllRooms()) { foreach (var point in room.GetPointsInRoom()) { - pointRoomMap[point] = room.Id; + pointRoomMap[point] = room; } } @@ -200,8 +200,8 @@ namespace DungeonMapGenerator public List GetNodeRooms() { List nodeRooms = new List(); - nodeRooms.AddRange(_monsterRooms.SelectMany(room => room.GetAdjacentRooms())); - nodeRooms.AddRange(_bossRoom.GetAdjacentRooms()); + nodeRooms.AddRange(_monsterRooms.SelectMany(room => room.GetAdjacentRoomsDict().Values.SelectMany(roomList => roomList))); + nodeRooms.AddRange(_bossRoom.GetAdjacentRoomsDict().Values.SelectMany(roomList => roomList)); return nodeRooms; } diff --git a/DungeonMapGenerator/DungeonMapGenerator/Lock.cs b/DungeonMapGenerator/DungeonMapGenerator/Lock.cs new file mode 100644 index 0000000..9a5b2f6 --- /dev/null +++ b/DungeonMapGenerator/DungeonMapGenerator/Lock.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using DiceProbabilities; +using Newtonsoft.Json; + +namespace DungeonMapGenerator +{ + public class Lock + { + public static readonly List PossibleLocks = new List() + { + new Lock("="), + new Lock("2"), + new Lock("3"), + new Lock("4"), + new Lock("5"), + new Lock("6"), + new Lock("7"), + new Lock("8"), + new Lock("9"), + new Lock("10"), + new Lock("11"), + new Lock("12"), + }; + + [JsonProperty("LockType")] + private string _lockType; + + public Lock() + { + + } + + public Lock(string lockType) + { + _lockType = lockType; + } + + public void SetLockType(string lockType) + { + _lockType = lockType; + } + + public string GetLock() + { + return _lockType; + } + + public float GetOdds() + { + return RollFourSumTwo.ResultOddsmapping[_lockType]; + } + } +} \ No newline at end of file diff --git a/DungeonMapGenerator/DungeonMapGenerator/Room.cs b/DungeonMapGenerator/DungeonMapGenerator/Room.cs index 2921659..9d992db 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/Room.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/Room.cs @@ -27,6 +27,7 @@ namespace DungeonMapGenerator private static int _nextId = 1; public RoomType TypeOfRoom { get; set; } + public Lock Lock { get; set; } public int Height { get; set; } public int Width { get; set; } public Point PositionOfTopLeft { get; set; } @@ -34,8 +35,9 @@ namespace DungeonMapGenerator [JsonProperty("AdjacentRoomIds")] private HashSet _adjacentRoomIds = new HashSet(); + private List _adjacentRooms = new List(); private readonly Dictionary> _adjacentRoomsBySide = new Dictionary>(); - + public Room() { @@ -50,10 +52,12 @@ namespace DungeonMapGenerator PositionOfTopLeft = positionOfTopLeft; } - public void AddAdjacentRoomId(int id) + public void AddAdjacentRoom(Room room) { - _adjacentRoomIds.Add(id); + _adjacentRooms.Add(room); + _adjacentRoomIds.Add(room.Id); } + public HashSet GetAdjacentRoomIds() { @@ -108,7 +112,7 @@ namespace DungeonMapGenerator public IEnumerable GetAdjacentRooms() { - return _adjacentRoomsBySide.Values.SelectMany(roomList => roomList); + return new List(_adjacentRooms); } public Dictionary> GetAdjacentRoomsDict() diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DiceProbabilities.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DiceProbabilities.dll new file mode 100644 index 0000000000000000000000000000000000000000..919def5da635e65ba885b2e889e6e24838323c42 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.deps.json b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.deps.json index 530e5d4..33440ce 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.deps.json +++ b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.deps.json @@ -9,6 +9,7 @@ ".NETStandard,Version=v2.0/": { "DungeonMapGenerator/1.0.0": { "dependencies": { + "DiceProbabilities": "1.0.0", "NETStandard.Library": "2.0.3", "Newtonsoft.Json": "13.0.3", "System.Numerics.Vectors": "4.6.0" @@ -38,6 +39,14 @@ "fileVersion": "4.600.24.56208" } } + }, + "DiceProbabilities/1.0.0": { + "runtime": { + "DiceProbabilities.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } } } }, @@ -74,6 +83,11 @@ "sha512": "sha512-t+SoieZsRuEyiw/J+qXUbolyO219tKQQI0+2/YI+Qv7YdGValA6WiuokrNKqjrTNsy5ABWU11bdKOzUdheteXg==", "path": "system.numerics.vectors/4.6.0", "hashPath": "system.numerics.vectors.4.6.0.nupkg.sha512" + }, + "DiceProbabilities/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" } } } \ No newline at end of file diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll index 89765e91a53461f50b3c35cbfa000d0a9430fdae..22457299ee0e0778ad21f1ce105b180c20538cbe 100644 GIT binary patch literal 28672 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 c)kd|(2aoN4;WMdzYrw#<Px# literal 25600 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 literal 0 HcmV?d00001 diff --git a/PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll.meta b/PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll.meta new file mode 100644 index 0000000..c7691da --- /dev/null +++ b/PuzzleGameProject/Assets/Plugins/DiceProbabilities.dll.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a9fb44c02fd9e0043a5a54660bfc4a95 \ No newline at end of file diff --git a/PuzzleGameProject/Assets/Plugins/DungeonMapGenerator.dll b/PuzzleGameProject/Assets/Plugins/DungeonMapGenerator.dll index c96440939056946ff1e5c99b49bea377080686a1..cc09e97adc4f2efc96703a56cc23a3aa3198273e 100644 GIT binary patch literal 28672 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 literal 25600 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 diff --git a/PuzzleGameProject/Assets/Resources/Rooms/BossRoom.prefab b/PuzzleGameProject/Assets/Resources/Rooms/BossRoom.prefab index bb9c304..1f857ed 100644 --- a/PuzzleGameProject/Assets/Resources/Rooms/BossRoom.prefab +++ b/PuzzleGameProject/Assets/Resources/Rooms/BossRoom.prefab @@ -86,7 +86,6 @@ GameObject: - component: {fileID: 9187907134033443523} - component: {fileID: 3406749035128918688} - component: {fileID: 4547043864789539458} - - component: {fileID: 3534050844455123390} - component: {fileID: 1770509300873928573} - component: {fileID: 4019891345885281529} m_Layer: 0 @@ -150,20 +149,6 @@ MonoBehaviour: diamonds: 0 damage: 0 chest: 0 ---- !u!114 &3534050844455123390 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2435349004046080434} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0f021f4903d50cb4b8bea2c40701ad58, type: 3} - m_Name: - m_EditorClassIdentifier: - blockingRoom: {fileID: 0} - number: 7 --- !u!212 &1770509300873928573 SpriteRenderer: m_ObjectHideFlags: 0 diff --git a/PuzzleGameProject/Assets/Resources/Rooms/MonsterRoom.prefab b/PuzzleGameProject/Assets/Resources/Rooms/MonsterRoom.prefab index 565c3fc..6460e9a 100644 --- a/PuzzleGameProject/Assets/Resources/Rooms/MonsterRoom.prefab +++ b/PuzzleGameProject/Assets/Resources/Rooms/MonsterRoom.prefab @@ -86,7 +86,6 @@ GameObject: - component: {fileID: 9187907134033443523} - component: {fileID: 3406749035128918688} - component: {fileID: 4547043864789539458} - - component: {fileID: 3914409103375474668} - component: {fileID: 1770509300873928573} - component: {fileID: 4019891345885281529} - component: {fileID: -1465197196826248026} @@ -151,20 +150,6 @@ MonoBehaviour: diamonds: 0 damage: 0 chest: 0 ---- !u!114 &3914409103375474668 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2435349004046080434} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0f021f4903d50cb4b8bea2c40701ad58, type: 3} - m_Name: - m_EditorClassIdentifier: - blockingRoom: {fileID: 0} - number: 7 --- !u!212 &1770509300873928573 SpriteRenderer: m_ObjectHideFlags: 0 diff --git a/PuzzleGameProject/Assets/Resources/Rooms/Room.prefab b/PuzzleGameProject/Assets/Resources/Rooms/Room.prefab index ae18ecd..154192b 100644 --- a/PuzzleGameProject/Assets/Resources/Rooms/Room.prefab +++ b/PuzzleGameProject/Assets/Resources/Rooms/Room.prefab @@ -11,7 +11,6 @@ GameObject: - component: {fileID: 9187907134033443523} - component: {fileID: 849256457500513523} - component: {fileID: 6904757263627452010} - - component: {fileID: 840456052578583509} - component: {fileID: 1770509300873928573} - component: {fileID: 4019891345885281529} - component: {fileID: -1465197196826248026} @@ -74,20 +73,6 @@ MonoBehaviour: diamonds: 0 damage: 0 chest: 0 ---- !u!114 &840456052578583509 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2435349004046080434} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0f021f4903d50cb4b8bea2c40701ad58, type: 3} - m_Name: - m_EditorClassIdentifier: - blockingRoom: {fileID: 0} - number: 7 --- !u!212 &1770509300873928573 SpriteRenderer: m_ObjectHideFlags: 0 diff --git a/PuzzleGameProject/Assets/Scripts/DungeonGenerator/DungeonMapLoader.cs b/PuzzleGameProject/Assets/Scripts/DungeonGenerator/DungeonMapLoader.cs index 83b0737..535f2d5 100644 --- a/PuzzleGameProject/Assets/Scripts/DungeonGenerator/DungeonMapLoader.cs +++ b/PuzzleGameProject/Assets/Scripts/DungeonGenerator/DungeonMapLoader.cs @@ -28,12 +28,14 @@ namespace DungeonGenerator GameObject bossRoomGO = PrefabUtility.InstantiatePrefab(bossRoomPrefab, gameObject.transform) as GameObject; bossRoomGO.transform.position = ConvertToUnityPosition(map.GetBossRoom().GetCenterOfRoom(), map.Width, map.Height); + AddLockToRoomObject(bossRoomGO, map.GetBossRoom().Lock.GetLock()); _roomIdToGameObject[map.GetBossRoom().Id] = bossRoomGO; foreach (var monsterRoom in map.GetMonsterRooms()) { GameObject monsterRoomGO = PrefabUtility.InstantiatePrefab(monsterRoomPrefab, gameObject.transform) as GameObject; monsterRoomGO.transform.position = ConvertToUnityPosition(monsterRoom.GetCenterOfRoom(), map.Width, map.Height); + AddLockToRoomObject(monsterRoomGO, monsterRoom.Lock.GetLock()); _roomIdToGameObject[monsterRoom.Id] = monsterRoomGO; } @@ -41,6 +43,7 @@ namespace DungeonGenerator { GameObject normalRoomGO = PrefabUtility.InstantiatePrefab(normalRoomPrefab, gameObject.transform) as GameObject; normalRoomGO.transform.position = ConvertToUnityPosition(normalRoom.GetCenterOfRoom(), map.Width, map.Height); + AddLockToRoomObject(normalRoomGO, normalRoom.Lock.GetLock()); _roomIdToGameObject[normalRoom.Id] = normalRoomGO; } @@ -49,6 +52,7 @@ namespace DungeonGenerator GameObject entranceRoomGO = PrefabUtility.InstantiatePrefab(normalRoomPrefab, gameObject.transform) as GameObject; entranceRoomGO.transform.position = ConvertToUnityPosition(entranceRoom.GetCenterOfRoom(), map.Width, map.Height); entranceRoomGO.GetComponent().IsEntrance = true; + AddLockToRoomObject(entranceRoomGO, entranceRoom.Lock.GetLock()); _roomIdToGameObject[entranceRoom.Id] = entranceRoomGO; } @@ -70,5 +74,35 @@ namespace DungeonGenerator return new Vector3(newX, newY, 0f); } + + private void AddLockToRoomObject(GameObject room, string lockString) + { + NumberLock _lock; + switch (lockString) + { + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": + case "9": + case "10": + case "11": + case "12": + _lock = room.AddComponent(); + _lock.SetNumber(Int32.Parse(lockString)); + break; + case "=": + room.AddComponent(); + break; + case null: + Debug.Log("Lock for room was null when imported. Using 1 as lock"); + _lock = room.AddComponent(); + _lock.SetNumber(1); + break; + } + } } } diff --git a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs index 28009e1..d25775d 100644 --- a/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs +++ b/PuzzleGameProject/Assets/Scripts/Rooms/Locks/NumberLock.cs @@ -14,6 +14,11 @@ public class NumberLock : Lock return false; } + public void SetNumber(int num) + { + number = num; + } + public int GetNumber() { return number; From 8de86aa1ac16ec74098e13b501a72345d566ff05 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 18 Feb 2025 11:20:54 +0100 Subject: [PATCH 2/2] Increased desired chance of success for lock population --- .../DiceProbabilitesPrinter/Program.cs | 11 ++++++++++- .../Debug/net9.0/DiceProbabilitesPrinter.dll | Bin 5120 -> 5632 bytes .../Debug/net9.0/DiceProbabilitesPrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DiceProbabilities.dll | Bin 6144 -> 6656 bytes .../DiceProbabilities/RollFourSumTwo.cs | 2 +- .../netstandard2.0/DiceProbabilities.dll | Bin 6656 -> 6656 bytes 6 files changed, 11 insertions(+), 2 deletions(-) diff --git a/DiceProbabilities/DiceProbabilitesPrinter/Program.cs b/DiceProbabilities/DiceProbabilitesPrinter/Program.cs index a2c9afc..9d28364 100644 --- a/DiceProbabilities/DiceProbabilitesPrinter/Program.cs +++ b/DiceProbabilities/DiceProbabilitesPrinter/Program.cs @@ -1,4 +1,13 @@ using DiceProbabilities; -Console.WriteLine(DiceRollProbability.RollFourPickTwoPickTwoAgainOdds()); +string input = Console.ReadLine(); +while (input != "") +{ + + List? inputtedOptions = input?.Split(',').ToList(); + float odds = RollFourSumTwo.GetProbalityOfAtleastOneUnlocking(inputtedOptions); + Console.WriteLine(odds); + input = Console.ReadLine(); +} + diff --git a/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.dll b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.dll index 6afb7daac1381a4b13aa271173d14fcd976b6b91..d0dd18b9e0f12c599c0c1957876e3de40fe6207f 100644 GIT binary patch delta 1566 zcmZuxZ)jUp6#w0q^yN>}ENPccH@c>OSd*m-sclKhYE9RI1Hm3wGLwTJ*t66T=v1~9E?rkv(bP=%X*AZ7yueGb+5 z-Vu4VE@Htzh42PySjHI&K|N;KA9AaW?ezgSsQ|M>)wY0#w#y#yQlXLywZPb1pq5mP zId|PSh(dxHa|(<6qXQ!J_QatokyY*^_89YDls!IcgE%AF>(5;Bv?yowxy7ysCY#f zii!=1>sV9vVUzP!e1rQ!#TC)bs9)k8nD!%yi<0?F+AqktD=_OkR>F!C2havL#tdScl8fjtzV#;^d1+ zkgv16jCq;ahSv}mVN^py7`JgDdNLPo=rdB)e) zM%$>Ko*K&JHt$-;#lWCm94X`{)7eaMDLLI=%M|l<2MpmjU`(k;4vli{Q~6RMRhk`J%*_({wtDK^e_KW6p{3^7 zMsiMekL2Xr+z2FxvAnroJ2(E;uO+rdgVzr(ZG2^n*nE9X zo7L^BeO|a-3LmoD=2sfr7H?voM+lQX3}5XTqQxoPb_kbDwL%D26%@s7%-XibBc0Qc z>1eFGN1xU@qFtKSqeUW7E!N!;?M!RY^mMFKquas%g82dMf*0;z5?i0Y1Tj2fe&G)| zy7+_aavCf4dUc!Tw$u2?-t1Zb?aw=?@YHZr}XX8+@`($h7_Crh26zXng2cG~%9%n{MYdOESVMK8*-R6ft!3#p<**zPu>9 ss5LSg;}QCr%rGOJyoMTenz=E0rfo($Hvg#cS(SLtrnmN?C`WAn0Jj7oW&i*H delta 1224 zcmZ9LUuaWT9LK-sHvdezG;OR@2AVd~bk>!d+%`2+#7^lSYDhI!uw!HCy_fFJw81vT z^+8kd&xVY#a8Vd@pzL8~FM9|`Yf(@{d~<_6h=}aXy~v=0F}6PJdrq=4c9P%c{C?ki z&hPxr;hg1t%ROIy);0Bb^D-Lk7jz*cbRa+>SQj5As^6aq&nAGJ6b=Krui6=H{t#$p zY;^-C-A-+vds-xdPyCc(w19g}^opQ+M`%-kpZZm^yqcja(d=vvVy?|g$^SQ@E zdPl0~4KCahmaFgW(t28y1Gp>Np2`aji(g;{4fvcE&zI+&xtRqfz|S6lf5a#Act$58 z{gKJBqwIfWyj{+Hw^*8HEE}hbk#=C44E_=ZcGN48^Y~4ftc(SyZPKrxi2?A9kRMnv zqM}#x!B(8apP~ihoa@6fE(srwi6`U>NPeYwN6}Eaqx`=iGrXgCR(l|V_(Yr1!q|xi zY7tc)k4FZT2-etVR5%fnB~9oywuijc>InxykB%W*J8v)0U$r=1bFsX{YFvmsA-mo7dt^ z{E#BggllnXsdjbtMUyunw$}($tO5W z4FC6xsYT#+2iqd+>ofYunOE7bXU(g(`oGoO(cr~YL%jE|$hG|0n~8Pf>EhT8T)B0< z@vfN$KS)1T?cAZ=PPoy~xmvjSMpMp4fw#^i2WdJzi`>r(Vj#uKV^A4T-}^ZtLoG>l gfW1X8!(UqcY>r``+V3sx9_`U!t#$ivqN@A<0is{l=>Px# diff --git a/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.exe b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilitesPrinter.exe index 7f5bc66b81f1ef4dec0de0aa0a4facc1723e9ca8..bd8a0d84d6948804f23dd4cb3b0a63547eb105ea 100644 GIT binary patch delta 99 zcmZqp!qEUkEsR^3rkMI0Fc>qWF&F@`IfDg*DT5_LDv+JbUG9&{@b09VVvQmJg1%ojV8Znpw$z%pou)GOSg(XnT d5GZO2q*H(_OCU4@!&IOepgG$gn=;9=001K15_SLp diff --git a/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilities.dll b/DiceProbabilities/DiceProbabilitesPrinter/bin/Debug/net9.0/DiceProbabilities.dll index 9d172029c2bb5ee68c130d3f5ecc32cd50cdbab4..c67c4a17d5203ddcf578288c7ae47e048ab71834 100644 GIT binary patch delta 3013 zcmb_eZEPG@6+LfucXmCyp52-8u5Iju^;crocDh?T*d|VDtIlT=oWw~Qw{FX3V>brd z6YZ`Of}xwH{79oZsx?)SfCM5@sg#HUsY*YPAgV+WrB#tYK%u2bMJg%~gc5;->Tup$ zubWu;$w=?Kd(XY^-aB{hjOJwOWcL%N8#_*Z^fZ>P_t2OOixgm!&`acw^un_T%xffv zB{2Z})VI*!L_P~dsQ>eJV4v5Zb$Fv655Z>i@Pq8lL!!cR}V4)E>d8Yx*4Fg8FeWNW}naYUZVVeCR+viqNb^MmU z!-TH9D@N}%&~77?qs!4&llFX+@I~-&j6&zj??!F0n9zVamsJ}0qdKUMI)Qequ>!X- zIUO}bv163Lt1cBlvrlp?Dq-YpZ(8drIy~HB`K>^{ijt*UK_%ql)ZB!OEUkLU8o0H! zbi@iQx!rWOOftwVA_s~~>~fBq4wtK0uI~n`6M_|Tt68B_(Hmi(?26VJsTt6#4;q#+ zS1YwJg-=K!Vuk1GC~&LiwkVva740YL2|4GVje3IpS`h&&m*EuT{i;2+3vjQtv zeb5P7!Ful-{(Fi^I#yQX#^tOv$Xk>H=W?KoH3+&*QfVeQ)$LpD>Q+v=;nW~#)wpXY zPU%zk(M4XP1NS<$6}frFv1%T#U_Pt%aXtl6in>+?Dn(_OR%)H!XKB^3#ROlC@*G#V zZQiNCmLl71LG!tsWFxUC480>vHQ}~X=MekCEkTt(5)4%zEU~vaDL;N&ss;HDI<}~X z+jzXQ;ZCR@;&ZN`$zEWAi%dDO2HF!L>y`4fz3(Uncmu7zAvL zY^jp@Ae2qofv8s6b@YorXgba+d;ULdUGwMC&SrZ$rxeRyd}ZXO+C) z*Q4o0G+-l-3E~Dkp+Z!F1{AeZz8>r*bN3P-(j@rfu5gdSQH2rAYptllbdmR1kBj0iT)A#Mp)T==CEae(gh4GqL2M2Ev>u`nGg#QrRF`%tO7w#c$z#-yYaEW(gU>mm)n&UWt zM@1u>*N->wd;9|*p-QC19&tqYPnJfI&tT~?)FUWsz>^~DMUCo9oyK|5xi5EO>v-Wn zW@>gE6n5v_Lz$_`!inLD!NSydCSMqy8Q(uMis!9mK@AIG&?;$Q`r24?D)~bq&tJX?$p#4cQ!XNJH79?>-9(O_bx^Tbyr!v4%6(jM~c6D>z(=2-;D2k?p$xzmEwcj;7@+Bbx6f8@sW+bRb;?_oCnh`A$h}(U_ z3?(5M2LWa9C;6cCxV>I8BcY_GIfywT0L?T_#?p=j>q62Pw+2atD(%f7UJO(el9G$+ z5^lT&x6f;CNOoXN6F1x?<9QdNFKteBO{6Azde`@jPh`_Q-Pvqk zHkInh_O4I&bY-$VnTg)6EY+poOstCUcphSx{669g*AV|;hivbBETO+i@lD%%Io25a z`Pyef>-+w+>-oQ4JTw2ZJI;H5i+%ZyCGypm};c=D2IH~NNC=;D;7xO&iw_2}b-PH;}s)VsN7$z*9yQO_z5Y3bs- ikma7CZ!a||OKaLI#!pqSaQV}{GkwWQToDVY;Qs)WzS>X# delta 2662 zcmb_eTWlQF8UD_!clJKs+1ZO-JFr>X$u@DEU9Y{4n?}L4Nr;@(NzBC|L1evNkc*QI zyACv%b{*&q6bZ}#;sK-<(T7%Q)yPq$aH){!0~LvoxIeV1ky^DCNC;8d3RMo@IkR5u z$d8=$`Og1;|8>rs8P9y*eCF|=rSAQ#b{6%qgj6yhGC-Jw?vPiuFZ}veYYhqVOCRr!5yH;l#HP!^Lbkpc>mDTdX^p;I_X!&*oc~KEx zIwCbc^u&bU^v_vR3s8tkA!r8XVidTTgZF3)_uY+4OP2p9ptXaFJXvB@2t!(F8|6IO$^-6QZ zw;Xr#2$a7;4u6K}NlaKC)6;Hux^Jtskqr4NbU2l6r<~qEC|^g|1W);TsU!(jV(Z>W zBE3fiP| zww4Gl$Guw^*4b zyzlgaYMPE+>gJ~W@6Uaw{7o6yRT*V>sa^i@p%r3G5_jG8VuKi$MD4eGjYiCEk^yoJ z;;0jIyg}S4iQM9RgD76>ard=3?vcdmD)*`!xtCNU&9c|~CFAsJ-{IN5>k>Dm3j`7*b^vS!c@{*tBe$R95xMdve9_L-tvGDO~+FTpTl>xW?W#Xj@Pj$bUY~Bw00`|5K>-NSX9h; zCF`zbq1TYc2*cVy1zlRsrL)`!hLLBw0VIf{O4bomKKCh%$Y8uFBtAq&Hn&p(qvbCQ z1FvaWC7%^xjJX_5LmX$dIdL#4eSgwY8)9z)$CUas3R;L)_-cnVF5q45VQT+(w3fZv zGs4-a5El)jE+2+8!9yu?v=aT?xgjl#tinNsLkjmPJf!f5!U9o8u%?!%!gk^XbSjME zPFzM5Iqhw9<2u);2y^)OiHFGsB}T>c9j_LxwwG+D&2mzbpbsH z;91cF3%?|`;g7@)M)Y7SVptMST2Bl~m8+(=@U2KU$&nJ?Xj0a4@5_%izR6~SSe2y zCZ}hnXV1WX$v9if|MamJ9(-$QY~j7|^x;p3K0;Gc2(K#%;ih1kQZ?@Lw0UEZel2DW zYKGwrMRs{PVv!*s89Axd@y2zyYkj`*uNj7>c{Mp==7E(0PMweuSXDH-UOC;V>Pc$C zf+fOIU1>xXk=J0sn?%gKkwR21YkYd>)Rg3HcIj#gmC-P`0di`53=B7T(FRjRcG(MI zt3~aBU* zIw^BM|HZ{Ee{cHm)bn$1-EqGDy(Lq>A?4)4#<=#%cKdqk=%Nu#xyDK;@Rd*`4sd2D zO%ZqSG0CA9d18@Ivb6WnV~|{yY(Lj2N`w66)vrV!=CNyuhkQxrt8i)eqS^9^Sjc$3 E1o|nM{r~^~ diff --git a/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs b/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs index 4786421..1c50aca 100644 --- a/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs +++ b/DiceProbabilities/DiceProbabilities/RollFourSumTwo.cs @@ -11,7 +11,7 @@ namespace DiceProbabilities {"=", .6296f }, {"2", .1319f}, {"3", .2330f}, - {"4", 3557f}, + {"4", .3557f}, {"5", .4475f}, {"6", .5610f}, {"7", .6435f}, diff --git a/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll b/DiceProbabilities/DiceProbabilities/bin/Debug/netstandard2.0/DiceProbabilities.dll index 919def5da635e65ba885b2e889e6e24838323c42..c67c4a17d5203ddcf578288c7ae47e048ab71834 100644 GIT binary patch delta 247 zcmZoLX)u}4!J^afcj?9+XEqjpxovivFSBKG2;8`Ex3^=ysL%Sj7RK-E<2^R}@K-V! z8yKewpm>QZJCnlRGrdb##1G$C_5Fjh+wPo@T!2p31 z>MJ-*E${nodAX*m_n6VV$q_=e3Q)nhU!Z~@)q!C`Z(qlK3g*_f=H2{N$eP99fWep{ zjllqj%^55hOc^X0Qi1Gb216j<1V|?XMUsK?20(r?SOrMNm?06!GY67sKrv%58zgJE Jxn8`H2>|vVNs#~m delta 247 zcmZoLX)u}4!E%0k*TRiG&TK3U0dcOIFSBKG2z2S6{h89L>OASTALE|vvllk|@K-V! zrzRRECz>Z3B&Qfy7#kaz87G@2Cz_aB8X20I8l@OoTAG=er6wCDGeAK3EdK42e+UK$ z>^skSxouv6<8)Q#E>XeDPbWtR)ha**55fdNsvC4p-0e!A&hdJkJNxFZLe?z)sSJq> zh78F-(j15lfUFcCX~AF&ghmWzKr)%Z6fAE7RAC7eGX#p70_hYW%Mu99z%Ui4258Ra Idhtdk0OTo2W&i*H