目录
项目名称:
数字华容道小游戏
项目背景:
在学习编程过程中,为了加强特性技术和对概念的理解,以及学习新的技术,决定开发一个简单的小游戏。尽管这个项目不是为了商业目的或者实际应用,但是它能帮助我巩固所学知识,提升编程能力
项目目标:
1.学习和使用websocket
2.复习和熟练所学过的知识和方法
3.提升解决问题的能力和编程实践经验
项目成果:
1.完成了整个游戏的基本流程,保证整个项目能够正常运行。
2.完成了websocket的学习和使用,熟练掌握websocket四种大方法的使用(onopen、onmessage、onclose、onerror),以及发送数据(send)和主动关闭(close)方法的使用;还有心跳包的定义、使用和关闭以及断线重连的方法。
3.新学到了HTTP协议和HTTPS协议之间的转换;启动时端口号的改变;移动端组件库NutUI的使用;点击复制相应内容。
4.复习了vue3、pinia、git等技术的使用以及间隔函数的使用和关闭。
5.认识到自己在开发过程中的不足以及和后端之间交流的问题。
经验教训及学习:
1.遇到的困难:图片的剪裁
困难描述:数字华容道中首先碰到的问题就是图片的剪裁,只有裁剪了图片才能继续进行下一步。
解决过程:刚开始没有头绪,于是在csdn和chatGPT寻找方法,在GPT上找到了一个使用Canvas裁剪图片的方法,经过测试是可以的,经过修改最终与代码融合到一起。
学习进步:了解了Canvas裁剪图片时需要传入的类型,以及与被裁减图片真正相关的地方。
2.遇到的困难:游戏主体功能的实现
困难描述:要实现每一个方块点击后判断附近是否有空白区域,有的话就移动到空白位置,没有则不动。
解决过程:初始想着自己解决,本来想去github上找一段代码看看,结果安装依赖失败,没办法打开,于是就放弃了这个想法,然后最终通过给每个方块添加点击事件一个一个判断,这种方法几乎可以称之为暴力解法了。中途代码丢了一次,当第二次开始写的时候,问了一下杨成熙,然后他就说了一个方法,可以说只是算法中一个很简单的思路,但是因为是在项目中,没有算法的提示环境,于是就没想起来,最后按照这个方法解决成功,大幅度减少代码的使用量。
学习进步:学会了将算法融入到实际开发过程中。
3.遇到的困难:websocket的使用
困难描述:初次使用websocket,只是知道websocket的几个方法,没法正确的使用。
解决过程:后端写好了过程,最初因为模板使用的是HTTPS协议,导致与后端连接不上,当降为HTTP之后还是不行,最后在老师指导之后可以连接成功,websocket带的几个方法也可以使用。
学习进步:学会了使用websocket的各种方法,以及HTTP和HTTPS与websocket的对应关系。
未来优化:
根据老师提出的问题以及用户测试提出的问题进行以下修改
页面优化:
1.游戏说明
2.游戏页面完整图预览
3.游戏名字。
功能优化:
1.游戏结束后弹出带有自己成绩(时间,步数)的照片,并且可以分享(分享图带二维码,可以进入主页)
2.房间满员提示,并且不让进入房间
3.清除网页回退功能
4.增加难度选项。
5.初次进入房间导致渲染的问题(将首次渲染改成直接渲染,不要从本地获取数据再渲染)
6.分享时间过长导致刷新,日后测试在做修改。
7.组队玩修改照片
8.游戏结束返回房间,不直接断开连接。
9.好友离开不解散房间
10.将游戏页面改成可滑动的
11.房主通过邀请码依然可以进入成功
12.邀请码始终生效,如何解决
13.聊天功能