Skip to content

Yuri213212/JankenGUN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3bf64d6 · Jul 11, 2024

History

2 Commits
Jul 11, 2024
Jul 11, 2024
Jul 11, 2024
Jul 11, 2024
Jul 11, 2024

Repository files navigation

JankenGUN (ver 0.1 beta) by Yuri213212 at team "JankenGUN"
  Published at Techseeker Hackathon 2024

使用协议:对于所有文件遵循CC BY-NC-SA 4.0。
https://creativecommons.org/licenses/by-nc-sa/4.0/

此工程为本人在Techseeker Hackathon 2024参赛作品的担当部分,最终作品以队伍“JankenGUN”的名义提出,在大赛中获得了ProtoPedia奖。
工程分为两部分:LPC1114FN28单片机固件和在windows运行的客户端程序。

最终成果为一台有两个红外接收模块的专用游戏机(靶),通过有指向性的遥控器(队友担当的玩具枪)控制游玩,由上位机(执行客户端程序的电脑)与服务器(队友担当)通信控制游戏开始结束以及上传游戏结果,由服务器连接外部服务(kintone)统计分数并排名。
队友也用其他设备做了3个靶,但是未加入失败惩罚等功能导致规则相对简单,因此展示时本人负责的两个靶分数加倍。
由于展示时游戏规则是竞争50秒内的胜利次数(分数加倍的胜利视为胜利两次),平局与失败不扣分,于是产生以下最强攻略法:
 先瞄准本人负责的靶胜利两次,在等待第一个靶的胜利效果完成期间向队友负责的3个靶随机打石头剪子布,第一个靶恢复出拳时立即停止随机发射正常打本人负责的两个靶,如此循环。
  这样保证每个两分都能拿到手,该部分在手速无限快的情况下的理论最高分是100分;其余的随机打看运气,运气好也能得不少分。
本人在第二天展示开始前以此攻略法打出了68分的成绩,虽然失误有点多,但也超过第一天所有玩家的成绩。
 以此法游玩需要时刻移动胳膊、手指和上身,50秒游玩下来很消耗体力,或许可以通过连续游玩此游戏做运动减肥。

主要硬件(芯片):
·单片机LPC1114FN28/102
·基于FT234X的USB转UART通信模块
·使用I2C通信,基于SSD1306的OLED屏幕
·4半H桥电机驱动芯片SN754410
·基于PAM8403的功放模块

外设:
·两个OLED屏幕用来显示内部状态
·两个红外接收模块用来接收玩家的控制信号
·两个LED灯板用于实现闪光效果
·两个喇叭用于播放音效
·一个双联电位器用于控制音量
·三个按钮,其中两个用于手动控制开始与结束,另一个是(硬件)重启按钮

其他模块:
·作为游戏控制器的基于NEC格式遥控器的玩具枪(非本人负责)
·用于测试的NEC格式遥控器(理论上套个不透明且内部不反光的长筒也能当玩具枪用)
·用于执行网络通信的上位机(执行客户端程序的电脑)
·用于统计游戏分数结果以及利用外部api的服务器(非本人负责)

执行效果:
客户端连接单片机时会发送设置数据控制游戏的节奏(显示时间,黑屏时间与输了的罚时)。
客户端从服务器获得游戏的开始与结束状态,然后将对应的开始结束命令发送给单片机。
游戏进行时默认会在两个屏幕上随机显示“石头”“剪子”“布”的猜拳状态,持续出招一段时间后会黑屏一段时间然后随机变招再显示,两个屏幕的状态独立互不影响。
玩家需要瞄准屏幕对应的红外接收模块并打出猜拳状态,打中时判断猜拳结果,根据结果有不同音效,赢了得分且有闪光效果,平局和输有不同惩罚。
·如果赢了本轮立即结束,屏幕将变成圆圈持续黑屏时间,然后不黑屏立即出下一个招
·如果平局屏幕将变成三角,该行为仅仅拒绝本轮的变招重打,并不改变内在出招节奏,等到本轮结束时正常黑屏然后变招
·如果输了屏幕将变成叉,行为与平局类似但是叉的显示时间要加入额外的罚时
·其他情况(屏幕并非猜拳状态而是黑屏或判定结果)视为未打中,不影响默认行为
每当猜拳结果确定时会改变内部状态计数器,客户端会读取计数器并根据其变化将对应的结果发送给服务器,服务器会连接外部服务统计分数并排名。
 系统支持双倍得分,需要在客户端连接服务器前选择是否分数加倍,上传赢状态时会改变数据以达到分数加倍或不加倍的效果。

彩蛋:
·客户端拥有服务器和单片机部分的模拟功能,就算没有服务器和单片机也可以体验游戏的过程,只是缺少排名功能与音效(客户端的目的是实时收发数据,不该被模拟时才工作的音效影响其执行效率)
·单片机部分的执行不依赖上位机,不接电脑也可以直接接电源,按绿色按钮开始按红色按钮结束,这样只能以默认节奏游玩,且失去分数统计功能
 ·在展示过程中用了手动开始功能给玩家练习
·按住绿色按钮时重启单片机会进入测试模式用来调试硬件,测试模式中按红色按钮改变状态,按绿色按钮复位,其中显示猜拳时正常接收红外信号并判定
·如果没有特制玩具枪也可以用遥控器,两个红外模块将同时接收信号,游戏性质中的瞄准准确性将变为策略性,即如何出招能更高效地得分

链接:
·作品宣传页:https://protopedia.net/prototype/5304
·最终发表的演讲稿:https://docs.google.com/presentation/d/16ZVuTQFTg0eQA4KwGTpmx9URZNwMNwRzFgQZZT6nO9k/edit#slide=id.g2e96e1b2631_0_0
·队友的工程:https://github.com/ufoo68/jankenGUN

参考文献:
·Programming Windows Fifth Edition:https://www.cl72.org/100winProg/Charles%20Petzold%20-%20Programming%20Windows%20-%205th%20Ed.pdf

About

TechSeeker Hackathon 2024

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published