以石头剪刀布2.0为例,如何实现网页间的交互

正好居家上网课,闲着无聊。
这时我发现有一些同学会在线连线,直接在班级群里face to face地石头剪刀布,但由于延迟等各种原因举行得不甚流畅。
这样就引发了我的思考:能否用html5加上适合的js,还有css做出一个巧妙可以在两个页面中间自由传输数据的HTML?其实程序的结构很简单:暂且称他为1.html和2.html。每个html上都有六个按钮:开始、石头、剪刀、布、装弹(相当于剪刀,但是出完它如果你还活着,就可使用炸弹)、炸弹。至于装弹和炸弹,是为了适应我们班的“高级”模式,特意加的;现实会更复杂亿点。
首先,假设一下:用户1使用1.html端,用户2使用2.html端。在开始之前,用户都会看到一个开始的按钮,别的按钮看不见。“开始”按下之后,这个按钮消失,其他的按钮,除了“炸弹”以外,都显示(位置没有大碍),同时显示的还有一个计时器。这个计时器为10秒的倒计时,两方“开始”都按下后就开始倒计时,每十秒重新再来,判为一个轮回结束。双方在倒计时十秒内必须按下自己认为可以的按钮;如果对方在倒计时时间内没有按下,自动判定没出的输;两人都没出,结束比赛,平局。每一局,只能选一个按钮按下且不可更改,游戏规则和石头剪刀布一致,但这儿要对“装弹”详细解释一下:用户1装弹时,①用户2出布,用户2输;②若用户2出剪刀或装弹,继续下一轮,同时用户1在下一局中有炸弹的按钮可选,在用户1使用炸弹前,不可再装弹(不影响比赛进程),而用户1一旦使用炸弹(之后用户1当然不可以在又一次装弹前用炸弹),用户2除非也使用炸弹,否则判用户2输;③若用户2出石头,直接判输。
在代码实践时,我发现function ()被我用了很多,一番倒腾下来,发现网页间数据的传输很困难(我没想过用服务器),同时我对html还不是很熟练,希望大家能给我一些思路。
有个注意小点吧:
介于我对服务器基本不会,尽量少用;若是实在要用,我会尽快去学习。

:D

网页间的交互可以使用 JavaScript 来实现。在石头剪刀布 2.0 中,你可以使用 JavaScript 来处理用户的输入,并在网页上显示结果。

下面是一个使用 JavaScript 实现网页间交互的石头剪刀布 2.0 的简单示例:

<!-- HTML 部分 -->
<div id="result">结果会在这里显示</div>

<form>
  <label>
    选择你的出拳:
    <select id="hand">
      <option value="rock">石头</option>
      <option value="scissors">剪刀</option>
      <option value="paper"></option>
    </select>
  </label>
  <button type="submit">出拳</button>
</form>

<!-- JavaScript 部分 -->
<script>
  const resultElement = document.getElementById('result');
  const form = document.querySelector('form');

  form.addEventListener('submit', event => {
    // 阻止表单默认提交行为
    event.preventDefault();

    // 获取用户的出拳
    const hand = document.getElementById('hand').value;

    // 获取电脑的出拳(随机)
    const computerHand = ['rock', 'scissors', 'paper'][Math.floor(Math.random() * 3)];

    // 判断输赢
    let result;
    if (hand === computerHand) {
      result = '平局';
    } else if (
      (hand === 'rock' && computerHand === 'scissors') ||
      (hand === 'scissors' && computerHand === 'paper') ||
      (hand === 'paper' && computerHand === 'rock')
    ) {
      result = '你赢了';
    } else {
      result = '你输了';
    }

    // 在结果元素中显示结果
    resultElement.innerHTML = `你出了${hand},电脑出了${computerHand},结果是:${result}`;
  });
</script>

在这个示例中,我们使用了 JavaScript 的 addEventListener

可以使用 WebSockets 来实现在两个 HTML 页面之间进行实时数据传输。WebSockets 是 HTML5 中新增的一种协议,可以在浏览器和服务器之间建立双向、实时通信连接。

要在 HTML 页面中使用 WebSockets,需要在页面中包含以下代码:

<script>
  var socket = new WebSocket('ws://example.com/server');
  socket.onopen = function() {
    socket.send('Hello, Server!');
  };
  socket.onmessage = function(event) {
    console.log(event.data);
  };
</script>

在上面的代码中,创建了一个新的 WebSocket 对象,并使用 'ws://example.com/server' 作为服务器地址进行连接。当连接建立时,使用 socket.send 方法向服务器发送消息。当服务器发送消息给客户端时,使用 socket.onmessage 事件处理程序来接收并处理消息。

还可以使用 JavaScript 来处理游戏逻辑和用户交互。例如,可以使用 JavaScript 在页面中显示计时器和按钮,并使用 WebSockets 将用户的选择发送到服务器。服务器可以在收到两个用户的选择后计算游戏结果,然后使用 WebSockets 将结果发送回客户端。

要实现描述的游戏,需要编写一些 JavaScript 代码来处理用户交互和游戏逻辑。下面是一些建议:

1、在 HTML 页面中添加按钮元素,并使用 CSS 设置它们的样式和位置。
2、使用 JavaScript 为每个按钮添加单击事件处理程序,在单击按钮时发送选择的游戏选项到服务器。
3、在服务器端使用一些逻辑来判断游戏结果,然后使用 WebSockets 将结果发送回客户端。
4、使用 JavaScript 在页面上显示计时器和游戏结果。
5、为了使用 WebSockets 在两个 HTML 页面之间进行实时数据传输,还需要设置一个 WebSocket 服务器。可以使用各种技术栈来实现,例如 Node.js + WebSockets 或 Python + WebSockets。

希望这些信息能够帮助开发 HTML5 游戏。

提供参考实例:【node HTTP:实现网页版石头剪刀布】,链接:https://www.jianshu.com/p/ff188e521588
【可以参考这个的框架,去完善你的要求】

想法不错,关键还是多人之间的数据同步,以及解决不同网络环境、浏览器之间的兼容和延迟问题