当前时间: 2026-04-22 09:37:34
更新时间: 2026-04-22
分类:软件教程
评论(0)
我用AI作为工具做了两个小游戏,附保姆级技术分享
昨天突发奇想,花了整整一天时间,从零到一完成了两个小工具,没有复杂的框架,没有高额的成本,全程自己动手,顺利上线。今天就把整个开发过程、思路和踩坑经验整理出来,给想动手做小工具的朋友避坑,哪怕你是新手,也能跟着学、跟着做。
说实话,开发过程比我预想中顺利太多,从早上规划需求、选型技术,到下午完成开发、部署上线,全程没遇到太大的坑。趁热打铁,把这份干货分享给大家,希望能点燃你动手的热情——技术不用多厉害,敢动手、能落地,就是最棒的开始。
一、算命小游戏:用最简单的方式,做一个“玄学”轻工具
1.1 需求来源:朋友的一句随口提议
这个小工具的想法,完全是偶然来的。朋友来家里玩,随口说了一句“能不能做个简单的算命工具,无聊时能玩一玩”,我转念一想,这个需求太合适做轻量级工具了——门槛低、容易传播,而且微信生态里,这类“玄学”小工具本来就很受欢迎。
最开始的第一版特别简单,就是输入姓名,点击测算,就能出结果。但玩了两次觉得太枯燥,于是加了联系方式展示位(毕竟做工具,也希望能带来一点实际价值),简单优化后,体验就好了很多。
1.2 技术选型:拒绝复杂,纯前端就够了
很多朋友做工具时,第一反应就是“要不要用后端?要不要弄数据库?”,其实对于这类轻量级工具来说,完全没必要,纯前端就能搞定,还能省不少事。
前端:原生HTML + CSS + JavaScript,没有任何框架依赖,新手也能看懂、能修改
部署:GitHub Pages,完全免费,不用自己买服务器
域名:GitHub自带的免费子域名(hareclaw.github.io),不用额外花钱注册
这样选型的好处,懂的都懂:零成本、维护简单(改完代码直接推送,不用部署后端)、加载速度快(纯静态资源,打开几乎不耗时),特别适合独立开发者做小工具试水。
1.3 核心功能实现:重点做好3个交互细节
这个工具的界面不算复杂,核心是做好交互,让用户用着舒服,不觉得敷衍。分享几个关键的实现代码(新手可直接复制套用),重点看细节:
1. 姓名输入和性别选择:最基础的功能,界面简洁,提示清晰,避免用户迷茫。
2. 测算类型选中高亮:这是很多新手容易忽略的点——用户点击选择后,必须有明显的反馈,不然用户会不知道自己选没选上。
const fortuneTypes = document.querySelectorAll(‘.fortune-type’);
fortuneTypes.forEach(type => {
type.addEventListener(‘click’, () => {
document.querySelector(‘.fortune-type.active’)?.classList.remove(‘active’);
type.classList.add(‘active’);
selectedType = type.dataset.type;
搭配简单的CSS,高亮效果更明显,视觉反馈更清晰:
box-shadow: 0 2px 8px rgba(255, 102, 0, 0.2);
3. 测算结果展示:要有仪式感,不敷衍:结果不能一闪而过,也不能太简陋,还要自然融入联系方式,不显得生硬广告。
function showResult(result) {
const resultBox = document.getElementById(‘result-box’);
resultBox.style.display = ‘block’;
resultBox.style.opacity = ‘0’;
resultBox.style.display = ‘none’;
resultBox.style.opacity = ‘1’;
1.4 部署上线:3步搞定,全程免费
部署到GitHub Pages真的很简单,不用懂复杂的部署流程,3步就能搞定,全程免费,新手也能操作:
1. 本地创建仓库,提交代码
git commit -m “Initial commit”
2. 去GitHub网页,创建一个同名仓库(fortune)
3. 关联远程仓库,推送代码,然后设置Pages
git remote add origin git@github.com:hareclaw/fortune.git
最后一步:GitHub仓库→Settings→Pages→Source选择main branch→保存
等待1-5分钟(不是即时生效),就能通过 https://hareclaw.github.io/fortune/ 访问你的工具了,是不是很简单?
二、儿童骰子闯关游戏:稍微复杂一点,但依旧轻量
2.1 项目背景:给小朋友做的“哄娃神器”
这个项目是临时加的。做算命工具的时候,朋友带孩子来家里,小朋友无聊闹腾,我就想着,不如做个简单的小游戏给孩子玩,既能哄娃,也能练手,一举两得。
没想到做出来的效果超出预期,小朋友玩了一下午,还一直喊着“再玩一局”,也算是意外的收获。
2.2 技术方案:不用游戏引擎,Canvas就够了
这个游戏比算命工具复杂一点,但我还是坚持“轻量”原则,没有用任何游戏引擎(比如Phaser),原因很简单:引擎太重,学习成本高,而且这类简单小游戏,用HTML5 Canvas就完全能搞定,还能保证加载速度。
动画:原生requestAnimationFrame,实现流畅动画,不用额外引入插件
存储:localStorage,保存小朋友的游戏进度,下次打开还能继续玩
音效:Web Audio API,添加简单的背景音乐和掷骰子音效,提升游戏体验
2.3 核心功能:角色换装+地图闯关+进度保存
这个游戏的核心亮点,就是贴合小朋友的喜好,比如换装功能、彩虹地图、奖励系统,这些小细节,能让小朋友玩得更投入。
1. 游戏整体架构:很简单,分三个状态(菜单、游戏中、结果),循环渲染画面,新手也能看懂:
this.canvas = document.getElementById(‘game-canvas’);
this.ctx = this.canvas.getContext(‘2d’);
this.state = ‘menu’; // 游戏状态:菜单/游戏中/结果
this.player = new Player(); // 玩家角色
this.map = new Map(30); // 30格彩虹地图
this.inventory = []; // 道具栏
requestAnimationFrame(() => this.loop());
2. 角色换装:小朋友的最爱:支持给角色换帽子、上衣、裤子、鞋子、背包,而且是“叠加”模式,不是替换——我问过小朋友,他们更喜欢“越多越好”的感觉,多戴一顶帽子、多背一个背包,都会觉得很开心,这个小细节真的很影响体验。
function equipItem(category, itemId) {
const item = allItems[category][itemId];
createOverlay(category, item);
outfits[category] = item;
renderOutfit(category, item);
3. 地图与掷骰子逻辑:地图是30格的彩虹桥,每一格有不同的效果(普通格、加分格、陷阱格、前进格、终点格),掷骰子随机前进,增加趣味性:
{ type: ‘normal’, color: ‘#ff6b6b‘ }, // 红色:普通格
{ type: ‘bonus’, color: ‘#ffd93d‘, stars: 2 }, // 黄色:加分格
{ type: ‘trap’, color: ‘#6bcb77‘, effect: ‘back’ }, // 绿色:陷阱格(退一格)
{ type: ‘special’, color: ‘#4d96ff‘, effect: ‘forward’ }, // 蓝色:前进格
{ type: ‘end’, color: ‘#9b59b6‘ } // 紫色:终点
const dice = Math.floor(Math.random() * 6) + 1; // 1-6随机数
animateDice(dice); // 骰子动画,提升仪式感
if (player.position >= 30) {
handleTileEffect(mapTiles[player.position]);
4. 进度保存:localStorage实用技巧:小朋友玩游戏,最讨厌“重新开始”,所以加了进度保存功能,用localStorage就能实现,不用后端,简单又实用:
function saveProgress() {
playerPosition: player.position, // 玩家位置
stars: player.stars, // 星星数量
coins: player.coins, // 金币数量
outfits: outfits // 已穿戴装备
// 存储到localStorage,转换成JSON格式
localStorage.setItem(‘kidsgame_save’, JSON.stringify(saveData));
function loadProgress() {
const data = localStorage.getItem(‘kidsgame_save’);
const save = JSON.parse(data);
player.position = save.playerPosition;
player.stars = save.stars;
player.coins = save.coins;
三、开发一天,我总结的3个实用经验
这两个小项目,虽然简单,但让我收获很多,尤其是对于想动手做小工具的新手来说,这几点经验可能比代码更有用:
3.1 技术选型:适合的才是最好的,别陷入“技术焦虑”
很多新手做项目,总想着用最新的框架、最复杂的架构,觉得这样才“厉害”。但实际上,对于独立小工具来说,越简单越好。
单页面轻工具:纯前端HTML/CSS/JS完全够用,不用上Vue、React
需要简单数据存储:localStorage(前端)、LeanCloud(BaaS服务,免费额度够用)
需要后端逻辑:Cloudflare Workers,免费额度足够小项目使用,不用自己买服务器
3.2 用户体验:细节决定成败,别敷衍
这两个项目,能让用户愿意用、愿意分享,核心不是技术多厉害,而是细节做得好:
选中状态要明显:用户操作后,必须有反馈,不然会迷茫
结果展示要有仪式感:哪怕是简单的工具,也别太敷衍,比如算命结果的淡出效果、骰子的动画
加载要快:超过3秒,用户就会关掉页面,纯静态资源是最好的选择
要有保存机制:用户不希望每次打开都重新开始,localStorage就能解决
3.3 微信生态:轻工具的最佳传播场景
做这类小工具,最适合在微信里传播——一键转发、打开即用、不占手机内存,用户接受度很高。
所以在设计的时候,就要考虑微信分享场景,比如提前准备好分享封面图、标题、简介,让用户分享出去的时候,更有吸引力。
四、GitHub Pages部署踩坑记录(新手必看)
部署过程整体顺利,但有几个小坑,我踩过了,你们就不用再踩了:
1. 仓库名和访问地址的关系:如果仓库名是“username.github.io”,直接用这个地址访问;其他仓库名,访问地址就是“username.github.io/仓库名”(我的仓库名是fortune,所以地址是hareclaw.github.io/fortune/)。
2. 部署等待时间:不是提交代码就生效,通常需要1-5分钟,遇到404别慌,等一会儿再刷新。
3. 自定义域名:如果以后想用地自己的域名(比如xxx.com),GitHub Pages也支持,在仓库Settings里配置CNAME记录就行,很简单。
五、最后总结
一天时间,从零开始,完成了两个不同类型的小工具,总结一下核心信息,方便大家参考:
|
项目
|
复杂度
|
技术栈
|
部署方式
|
|
算命游戏
|
简单
|
HTML/CSS/JS
|
GitHub Pages
|
|
儿童骰子闯关
|
中等
|
HTML5 Canvas
|
GitHub Pages
|
其实做小工具,真的没有那么难,不用等“准备好”,不用怕技术不够,动手去做,遇到问题再解决,就是最快的成长方式。
算命游戏:https://hareclaw.github.io/fortune/
GitHub仓库:https://github.com/hareclaw/fortune
如果你也有好玩的点子,欢迎在评论区交流~ 做技术分享,最重要的不是技术多厉害,而是敢于动手去实现的勇气。
有任何问题,也可以在评论区留言,我会尽量一一回复大家!
喜欢这篇分享的话,记得点赞、在看、转发,给我一点鼓励呀❤️