MonopolyLedger.html 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Monopoly Ledger</title>
  5. </head>
  6. <body>
  7. <h1>Monopoly Ledger</h1>
  8. <div id="output"></div>
  9. <div id="transactions">
  10. <h2>Transactions</h2>
  11. <form id="form" onsubmit="event.preventDefault();">
  12. <label for="fromAcc">From:</label>
  13. <select id="fromAcc">
  14. <option value="pot">Pot</option>
  15. <option value="bank">Bank</option>
  16. <!-- Generate player options dynamically -->
  17. </select>
  18. <br>
  19. <label for="toAcc">To:</label>
  20. <select id="toAcc">
  21. <option value="pot">Pot</option>
  22. <option value="bank">Bank</option>
  23. <!-- Generate player options dynamically -->
  24. <option value="all">All</option>
  25. </select>
  26. <br>
  27. <label for="amount">Amount:</label>
  28. <input type="number" id="amount">
  29. <br>
  30. <button onclick="sendMoney()">Send</button>
  31. </form>
  32. </div>
  33. <script>
  34. var numPlayers = 0;
  35. var accounts = [];
  36. function printBalances() {
  37. var output = document.getElementById("output");
  38. output.innerHTML = "";
  39. accounts.forEach(function(account) {
  40. output.innerHTML += account[0] + ": " + account[1] + "<br>";
  41. });
  42. }
  43. function initialize() {
  44. numPlayers = parseInt(prompt("How many players (>1)?"));
  45. if (numPlayers < 2) {
  46. initialize();
  47. return;
  48. }
  49. var startingValue = parseInt(prompt("How much for each player?"));
  50. accounts.push(["Pot", 0]);
  51. for (var i = 1; i <= numPlayers; i++) {
  52. accounts.push(["Player " + i, startingValue]);
  53. }
  54. console.log("Created:");
  55. printBalances();
  56. console.log("Let the game begin!");
  57. generatePlayerOptions();
  58. }
  59. function generatePlayerOptions() {
  60. var fromAccSelect = document.getElementById("fromAcc");
  61. var toAccSelect = document.getElementById("toAcc");
  62. // Clear existing options
  63. fromAccSelect.innerHTML = "";
  64. toAccSelect.innerHTML = "";
  65. // Add options for Pot and Bank
  66. var potOption = document.createElement("option");
  67. potOption.value = "pot";
  68. potOption.text = "Pot";
  69. fromAccSelect.add(potOption.cloneNode(true));
  70. toAccSelect.add(potOption.cloneNode(true));
  71. var bankOption = document.createElement("option");
  72. bankOption.value = "bank";
  73. bankOption.text = "Bank";
  74. fromAccSelect.add(bankOption.cloneNode(true));
  75. toAccSelect.add(bankOption.cloneNode(true));
  76. // Add player options
  77. for (var i = 1; i <= numPlayers; i++) {
  78. var playerOption = document.createElement("option");
  79. playerOption.value = i.toString();
  80. playerOption.text = "Player " + i;
  81. fromAccSelect.add(playerOption.cloneNode(true));
  82. toAccSelect.add(playerOption.cloneNode(true));
  83. }
  84. // Add option for "All" to the "To" dropdown
  85. var allOption = document.createElement("option");
  86. allOption.value = "all";
  87. allOption.text = "All";
  88. toAccSelect.add(allOption.cloneNode(true));
  89. }
  90. function sendMoney() {
  91. var fromAcc = document.getElementById("fromAcc").value;
  92. var toAcc = document.getElementById("toAcc").value;
  93. var amount = parseInt(document.getElementById("amount").value);
  94. // DEBIT
  95. if (fromAcc !== "bank") {
  96. if (fromAcc === "pot") {
  97. fromAcc = 0;
  98. } else {
  99. fromAcc = parseInt(fromAcc);
  100. }
  101. accounts[fromAcc][1] -= amount;
  102. }
  103. // CREDIT
  104. if (toAcc !== "bank") {
  105. if (toAcc === "all") {
  106. var remainder = amount;
  107. var i = 1;
  108. while (remainder > 0) {
  109. if (i !== fromAcc) {
  110. remainder -= 1;
  111. accounts[i][1] += 1;
  112. }
  113. i = (i % numPlayers) + 1;
  114. }
  115. } else {
  116. if (toAcc === "pot") {
  117. toAcc = 0;
  118. } else {
  119. toAcc = parseInt(toAcc);
  120. }
  121. accounts[toAcc][1] += amount;
  122. }
  123. }
  124. printBalances();
  125. }
  126. initialize();
  127. </script>
  128. </body>
  129. </html>