使用JavaScript和Posttresql构建游戏

重温经典:开源免费的在线笨拙游戏

成为软件开发者是一段充满意义的旅程。我喜欢创造酷炫的东西,而我的业余项目通常都是为了解决我遇到的问题。我的家人一直热衷于一款流行的文字游戏——笨拙。如今,兄弟姐妹们都搬离了家,我们很难像以前那样经常一起玩游戏。为了解决这个问题,我决定重新制作这款深受喜爱的游戏,并将其开源和免费!

游戏设计

和所有项目一样,我首先使用了白板(Excalidraw)进行头脑风暴。设计游戏蓝图是开发过程中的关键一步。

使用JavaScript和Posttresql构建游戏

游戏机制很简单:玩家首先进入主页,可以选择创建新游戏或加入现有游戏大厅。点击按钮即可进入游戏大厅页面,查看公开的游戏大厅(创建游戏时可以选择公开或私密)。

我需要追踪每个游戏大厅的几个持久性变量:

立即学习“Java免费学习笔记(深入)”;

游戏棋盘配置(字母排列):字符串数组大厅玩家列表:字符串数组大厅状态(公开或私密):布尔值

游戏状态会在游戏开始或结束时更新。棋盘配置决定了棋盘上字母的排列方式,确保客户端之间的一致性(每次游戏开始时随机生成)。玩家加入大厅时,系统会提示输入昵称。昵称会被发送到boggle_game数据库表中,与对应的游戏大厅代码关联。创建新游戏时,玩家可以选择公开或私密游戏大厅,系统会自动生成随机的游戏大厅代码。

无需账号的玩家加入

使用JavaScript和Posttresql构建游戏

很多多人在线游戏都需要用户账号进行身份验证来保存玩家数据。经过慎重考虑,我决定让游戏尽可能简单,无需创建账号。这个决定虽然存在一些局限性,但对于我的目标来说已经足够了。

我选择了Next.js作为开发框架,因为它拥有出色的开发者体验。Next.js可以轻松创建动态路由,这正是我用来分离游戏客户端的方式。玩家创建/加入游戏大厅并选择昵称后,会跳转到动态路由/[lobby_code]/[player_name],其中/[player_name]会启动对应的游戏客户端。我创建了一个boggle_player表来追踪玩家统计数据,例如单词数量和分数。这对于区分游戏客户端和追踪玩家数据至关重要。

实时更新

使用JavaScript和Posttresql构建游戏

使用JavaScript和Posttresql构建游戏

游戏设计看似简单,但在实现实时更新时,我遇到了一个挑战:如何让所有客户端都能及时更新游戏状态,而不是仅仅更新当前操作的客户端。

我使用了Supabase作为数据库,选择了他们的免费层,因为它功能非常强大。Supabase的文档也很完善,方便上手。

幸运的是,Supabase的免费计划支持实时更新!查看文档后,我发现实现起来非常简单。

const channels = supabase.channel('custom-all-channel')  .on(    'postgres_changes',    { event: '*', schema: 'public', table: 'boggle_game' },    (payload) => {      console.log('Change received!', payload)    }  )  .subscribe()

使用JavaScript和Posttresql构建游戏

这段代码创建了一个通道,Supabase会监听boggle_game表中的任何更改。event: '*'属性指定监听所有事件(插入、更新、删除)。这使得监听事件变得非常简单。有效载荷包含数据库表更改前后的旧值和新值,可以从中提取更改或运行函数来获取更新后的数据。我在游戏中添加了一个计时器,计时器结束后,endgame()函数会更新game_status,从而触发实时更新。

技术细节

构建实时应用有多种方法来保持客户端数据同步。最常见的是数据库轮询和WebSocket,它们的工作方式不同。

数据库轮询

轮询是一种简单但低效的更新方法。客户端会定期(例如每秒)向服务器发送请求,检查数据是否更改。这种方法的缺点是:

服务器负载过高:即使数据没有更改,服务器也会处理请求。更新延迟:UI只会在发送下一个请求时刷新,导致实时交互体验不佳。可扩展性问题:用户越多,请求越多,成本和效率都会降低。

WebSocket和Supabase实时设置

WebSocket是一种更好的方法,它提供客户端和服务器之间持久的双向通信通道。建立WebSocket连接后,服务器可以立即将更新推送到客户端,无需等待请求。Supabase底层的PostgreSQL数据库支持逻辑复制。

使用JavaScript和Posttresql构建游戏

PostgreSQL逻辑复制:每当表发生更改(插入、更新、删除)时,PostgreSQL会发出“更改事件”。

Supabase实时:此服务监听PostgreSQL的复制流,并将这些事件转发到内部WebSocket服务器。

WebSocket通信:任何订阅实时更新的客户端都会立即收到数据库中的更改。

使用这种设置,我的笨拙游戏无需向服务器发送大量请求。每个客户端都打开一个WebSocket连接,只有在数据实际更改时才会收到通知——无论玩家加入、提交单词还是游戏结束。这使得游戏即使在多人游戏大厅中也能保持流畅的性能和即时反馈。

总结

这个项目让我学到了很多东西,这正是我进行业余项目的主要目标。最终结果是一个在线版本的家人喜爱的文字游戏。现在,家人可以在任何时间、任何地点玩游戏,延续了我们的传统。我学习了WebSocket的工作原理,以及它与其他解决方案(如数据库轮询)的区别,以及如何使用Supabase实现它。这个项目很有意义,我期待未来能用WebSocket构建更多项目。

您可以访问以下链接体验游戏:

Clif’s Boggle – [游戏链接] (此处应替换为实际游戏链接)

使用JavaScript和Posttresql构建游戏

游戏支持多人游戏大厅,您也可以独自游戏,看看在3分钟内能找到多少单词。祝您游戏愉快!

以上就是使用JavaScript和Posttresql构建游戏的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1501157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
反应中化合物组件的高级图案:用上下文和克隆构建灵活的UI
上一篇 2025年12月19日 23:19:51
爪装置
下一篇 2025年12月19日 23:20:03

相关推荐

  • 受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%

    受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%受益被投资企业公允值增加,四川长虹H1净利润同比预增56.53%到103.59%

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 7月11日,四川长虹发布2025年上半年业绩预告。预计2025年半年度实现归属于母公司所有者的净利润为43,900万元至57,100万元,较去年同期增长15,853.41万元至29,053.41…

    2026年9月24日 用户投稿
    000
  • Chrome浏览器书签栏怎么一直显示_设置Chrome书签栏永久显示教程

    Chrome浏览器书签栏怎么一直显示_设置Chrome书签栏永久显示教程Chrome浏览器书签栏怎么一直显示_设置Chrome书签栏永久显示教程Chrome浏览器书签栏怎么一直显示_设置Chrome书签栏永久显示教程Chrome浏览器书签栏怎么一直显示_设置Chrome书签栏永久显示教程

    通过点击Chrome右上角三点菜单,选择“书签”>“显示书签栏”可恢复书签栏;2. 使用Ctrl+Shift+B(Windows)或Command+Shift+B(Mac)快捷键快速切换显示;3. 在设置页面的“外观”中确保“显示书签栏”设为“始终显示”;4. 若无效,可重置浏览器设置以恢复默…

    2026年9月24日 用户投稿
    000
  • 受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%

    受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%受益海外业务及前装业务大增,锐明技术H1净利润同比预增53.64%至77.9%

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 7月10日,锐明技术发布2025年上半年业绩预告。公告显示,公司上半年预计归属于上市公司股东的净利润为19,000万元至22,000万元,较去年同期增长53.64%至77.9%;预计扣除非经常性…

    2026年9月24日 用户投稿
    000
  • 问界M5现身美国加州公路 测试车还是平行进口车?

    近日,小编注意到,有网友在社交平台发布照片称,自己于美国加州i-880公路拍摄到悬挂当地车牌的问界m5车型,引发关于该车身份的猜测:是华为官方测试车辆,还是私人渠道引入的平行进口车? ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 问界M5 …

    2026年9月24日
    000
  • 1-6月乘用车HUD标配装配量TOP20车型:问界M9第四

      近日,有机构公布了2025年1至6月国内乘用车hud功能标配装配量top20车型。其中,理想l6、l7、l8、l9和问界m9、m8等车型装配率(装配率=装配量/零售量)均为100%。此外,6月国内hud标配装配率接近20%。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 …

    2026年9月24日
    800
  • 德系豪华品牌集体投“华” 是什么让BBA放下了身段?

    德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?德系豪华品牌集体投“华” 是什么让BBA放下了身段?

      【小编科技】当德系豪华车徽章与中国科技基因交融,当国资巨头的生产线接入鸿蒙神经中枢,当售价20万元的汽车装上百万级智驾系统——华为正以”技术赋能者”的姿态重构产业格局,成为名副其实的行业顶流。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Deep…

    2026年9月24日 用户投稿
    500
  • 如何在Linux中切换用户身份?

    Linux中切换用户主要用su和sudo命令;2. su切换用户需密码,su -可加载完整环境;3. sudo允许授权用户以root等身份执行命令而无需对方密码;4. 推荐使用sudo -i或sudo su -切换到root;5. 普通用户需加入sudo组或配置/etc/sudoers文件;6. 编…

    2026年9月24日
    200
  • 如何在mysql中升级高可用集群

    先确认版本兼容性、应用依赖及备份完整性,再按架构选择升级路径。对Group Replication或InnoDB Cluster采用滚动升级,先升从节点最后升主节点;MHA/Orchestrator架构先升备库再切换主库;PXC需停集群全量升级。替换二进制后启动实例并运行mysql_upgrade,…

    2026年9月24日
    100
  • 20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?

    20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?20万到100万全覆盖:“界”系五兄弟如何抢占BBA市场?

      【小编科技】当德系豪华车徽章与中国科技基因交融,当国资巨头的生产线接入鸿蒙神经中枢,当售价20万元的汽车装上百万级智驾系统——华为正以”技术赋能者”的姿态重构产业格局,成为名副其实的行业顶流。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Deep…

    2026年9月24日 用户投稿
    600
  • 如何查找大文件 find命令按大小搜索技巧

    如何查找大文件 find命令按大小搜索技巧如何查找大文件 find命令按大小搜索技巧如何查找大文件 find命令按大小搜索技巧如何查找大文件 find命令按大小搜索技巧

    要在linux中查找大文件,首先使用find命令配合-size参数定位指定大小以上的文件,例如:find /path/to/search -type f -size +5m。其次结合-exec和du、sort等命令可对结果排序并显示详细信息。最后也可用du与sort组合快速列出最大文件,或安装ncd…

    2026年9月24日 用户投稿
    1600
  • 2025英雄联盟名人堂典藏系列震撼发布 |

    uzi,被无数玩家誉为“史上最伟大adc”,凭借其在下路位置登峰造极的操作技艺、对电竞事业的无限热忱以及对全球电子竞技发展的深远影响,在《英雄联盟》的历史长河中刻下了不可磨灭的印记。如今,简自豪正式入选英雄联盟名人堂,成为继首位传奇之后第二位获此殊荣的选手,实至名归! 与此同时,官方重磅推出限量实体…

    2026年9月24日
    000
  • 机械硬盘在2024年还有存在的必要吗?

    机械硬盘在2025年仍具不可替代性,尤其适合大容量存储、NAS、监控和冷备份场景。其每TB成本远低于SSD,4TB机械盘约600元,而同容量SSD超1500元,高容量段差距更大。选购时应优先选CMR技术硬盘,避开性能较差的SMR盘,推荐希捷酷鹰、西数红盘Plus等支持7×24小时运行的型号。对于需长…

    2026年9月24日
    300
  • 对于2K分辨率游戏玩家而言,中端显卡是否已能完全满足未来两三年的需求?

    中端显卡在2025年仍可满足2K游戏需求,关键在于选择12GB以上显存并支持DLSS 4或FSR 3.1技术的型号,如RTX 5060 Ti 16GB、RX 7700 XT或RX 6750 GRE 12GB,配合超分技术可在多数主流游戏中实现高帧率流畅体验。 对于2K分辨率的游戏玩家,中端显卡在20…

    2026年9月24日
    800
  • 2025最新Yandex俄罗斯官网 Yandex免注册版官方入口地址

    2025最新Yandex俄罗斯官网免注册入口为https://yandex.ru/,该平台提供深度优化俄语搜索、实时导航、多语言翻译、新闻聚合,并涵盖地图、云存储、语音助手及教育等特色服务,支持极简界面与隐私保护模式。 1、立即进入“☞☞☞☞点击俄罗斯yandex搜索引擎入口☜☜☜☜”; 2、立即进…

    2026年9月24日
    400
  • mac怎么分屏_mac分屏操作方法

    通过快捷键、拖拽或调整比例可高效使用Mac分屏功能。首先点击并按住绿色按钮选择窗口配对,或拖动窗口至屏幕边缘自动进入分屏;随后可调节分割线更改窗口比例;退出时点击顶部绿色按钮即可恢复普通模式。 如果您希望在使用 Mac 时提高多任务处理效率,可以通过分屏功能同时查看和操作两个应用程序。该功能允许用户…

    2026年9月24日
    300
  • 2025最新抖音1小时有效粉丝涨粉教学(500有效粉丝核心玩法)

    最近很多家人朋友给我们留言,让我们讲一讲抖音500有效粉丝涨粉教学,原因是目前很多抖音用户饱受500有效粉丝困扰,一是涨的粉丝不是有效粉丝,二是自己涨粉太慢了,作为一个科普抖音运营知识的运营博主,其实我也非常好奇,抖音涨粉应该是一件很容易的事情,了解后才发现,是因为大家对于抖音运营知识的匮乏,对于有…

    2026年9月24日
    600
  • 2025年生成漫画图片的AI工具Top10盘点

    2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点2025年生成漫画图片的AI工具Top10盘点

    2025年AI漫画工具已深度融入创作全流程,十大工具各具特色:ComiGenius Pro 3.0强于叙事连贯与情绪表达,MangaFlow AI专精日漫风格,PanelCraft AI优化分镜布局,StorySketcher 2025实现故事可视化,Artisan Studio X支持多风格模拟,…

    2026年9月24日 用户投稿
    600
  • Java Optional.orElse与orElseGet区别

    orElse总是执行默认值计算,而orElseGet仅在Optional为空时调用Supplier获取,默认值构造 costly 时应优先使用orElseGet以避免性能浪费。 在 Java 8 引入的 Optional 类中,orElse 和 orElseGet 都用于在 Optional 值为空…

    2026年9月24日
    100
  • Java中接口常量和类常量的使用区别

    接口常量默认public static final,用于行为契约但易导致职责模糊;类常量可用不同访问修饰符,更适合封装和维护。现代Java推荐使用专用常量类、枚举、私有静态常量或配置文件管理常量,以提升代码清晰度与可维护性。 Java中接口常量和类常量,核心区别在于它们的定义位置和隐式属性。接口常量…

    2026年9月24日
    100
  • 文字生成图片的AI工具2025十大好用推荐

    2025年热门AI文生图工具包括DALL-E 3、Midjourney、Stable Diffusion XL等,具备高图像质量、快速生成、强语义理解与精细风格控制,适用于不同用户需求,未来趋势指向更高清、更智能、更集成的创作生态。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使…

    2026年9月24日
    200

发表回复

登录后才能评论
关注微信