dog.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Dog</title>
  5. <style type="text/css">
  6. body, .input {
  7. font-family: "Courier New", sans-serif;
  8. text-align: center;
  9. background-color: lightgray;
  10. }
  11. .buttons {
  12. font-size: 1em;
  13. display: flex;
  14. justify-content: center;
  15. }
  16. .button {
  17. line-height: 1;
  18. padding: 1rem;
  19. margin: 1rem;
  20. border: thin solid;
  21. min-height: 1em;
  22. min-width: 1em;
  23. cursor: pointer;
  24. user-select: none;
  25. }
  26. .state, .input {
  27. font-size: 2em;
  28. padding: 2rem;
  29. }
  30. .input {
  31. color: white;
  32. line-height: 1;
  33. padding: 1rem;
  34. margin: 1rem;
  35. border: thin solid;
  36. min-height: 1em;
  37. min-width: 1em;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div><input type="number" class="input" id="gc" placeholder="1234" onchange="changeGameCode(this.value)"/></div>
  43. <div><input type="text" class="input" id="name" placeholder="Jouw Naam" onchange="changeName(this.value)" /></div>
  44. <div class="state">
  45. <span class="message" id="msg">?</span>
  46. </div>
  47. <div class="buttons">
  48. <div class="button" id="b0" onclick="doOption(0)">1</div>
  49. <div class="button" id="b1" onclick="doOption(1)">2</div>
  50. <div class="button" id="b2" onclick="doOption(2)">3</div>
  51. <div class="button" id="b3" onclick="doOption(3)">4</div>
  52. <div class="button" id="b4" onclick="doOption(4)">5</div>
  53. <div class="button" id="b5" onclick="doOption(5)">6</div>
  54. <div class="button" id="b6" onclick="doOption(6)">7</div>
  55. </div>
  56. <div id="json"/>
  57. <script>
  58. var player = {
  59. options: [
  60. {
  61. code: 'new_game',
  62. text: 'Nieuw spel'
  63. }, {
  64. code: 'join_game',
  65. text: 'Doe mee met een spel'
  66. }],
  67. message: "Even wachten op de server",
  68. state: "start"
  69. };
  70. var json = "";
  71. function doOption(i) {
  72. if (player.options.length > i) {
  73. const option = player.options[i];
  74. option.user_name = player.name;
  75. option.game_code = player.game_code;
  76. option.color = option.color || player.color;
  77. websocket.send(JSON.stringify(player.options[i]));
  78. }
  79. }
  80. function show() {
  81. var i;
  82. for (i = 0; i < 7; i++) {
  83. document.getElementById("b" + i.toString()).textContent = player.options.length > i ? player.options[i].text : '';
  84. }
  85. document.getElementById("msg").textContent = player.message;
  86. var name = document.getElementById("name");
  87. if (player.color) {
  88. name.style.color = player.color;
  89. }
  90. const gc = document.getElementById("gc");
  91. gc.value = player.game_code;
  92. gc.disabled = player.state !== "start";
  93. document.getElementById("json").textContent = json;
  94. }
  95. function changeName(name) {
  96. player.name = name;
  97. if (player.game_code) {
  98. const option = { code: "change_name", text: name, user_name: name }
  99. websocket.send(JSON.stringify(option));
  100. }
  101. }
  102. function changeGameCode(code) {
  103. player.game_code = code;
  104. }
  105. websocket = new WebSocket("ws://127.0.0.1:6789/");
  106. websocket.onmessage = function (event) {
  107. player = JSON.parse(event.data);
  108. json = event.data;
  109. show();
  110. }
  111. show();
  112. </script>
  113. </body>
  114. </html>