資料介紹
描述
關(guān)于
Find the Button 是一款簡單的游戲,卻提供了驚人的樂趣!在這個(gè)游戲中,一個(gè)玩家隱藏一個(gè)回聲按鈕,另一個(gè)玩家去找到它。這對(duì)小孩子來說特別有趣!我兩歲的兒子喜歡跑來跑去,從閃爍的燈光中找出按鈕的位置。
要玩游戲,您只需在隱藏或找到它時(shí)按一下按鈕即可。每個(gè)動(dòng)作有 30 秒的時(shí)間,以努力提高游戲的速度和節(jié)奏。
啟動(dòng)技能并啟動(dòng)后,整個(gè)游戲循環(huán)只需一個(gè)按鈕即可操作!無需語音!您當(dāng)然可以隨時(shí)尋求幫助。
此外,由于這是一項(xiàng)不明確依賴于播放按鈕顏色的技能,您可以隨時(shí)禁用和啟用按鈕燈。我為那些可能對(duì)閃光燈敏感的人加入了這個(gè)功能,但在我這樣做之后我意識(shí)到它也大大增加了找到按鈕的挑戰(zhàn)。
執(zhí)行
我使用 Typescript 和 ask-sdk v2 來提高我的技能,并將我的代碼托管在 AWS Lambda 上。
我喜歡盡可能地劃分我的代碼,所以我的處理程序索引文件總是相當(dāng)簡單:
import { SkillBuilders } from 'ask-sdk';import { RequestHandlers, ErrorHandlers } from './handlers';import { RequestInterceptors } from './request-interceptors';import { ResponseInterceptors } from './response-interceptors';const skillBuilder = SkillBuilders.custom();export const handler = skillBuilder .addRequestInterceptors(...RequestInterceptors) .addRequestHandlers(...RequestHandlers) .addErrorHandlers(...ErrorHandlers) .addResponseInterceptors(...ResponseInterceptors) .lambda();
我有處理程序和攔截器的索引文件,所以我可以像這樣同時(shí)導(dǎo)入所有處理程序。這是 RequestHandlers 索引文件:
import { RollCallStateRequestHandlers } from './RollCallState';import { GenericRequestHandlers, GenericErrorHandlers } from './Stateless';import { HideButtonStateRequestHandlers } from './HideButtonState';import { FindButtonStateRequestHandlers } from './FindButtonState';import { GameOverStateRequestHandlers } from './GameOverState';import { LaunchStateRequestHandlers } from './LaunchState';export const RequestHandlers = [ ...LaunchStateRequestHandlers, ...RollCallStateRequestHandlers, ...HideButtonStateRequestHandlers, ...FindButtonStateRequestHandlers, ...GameOverStateRequestHandlers, ...GenericRequestHandlers];export const ErrorHandlers = [ ...GenericErrorHandlers];
我將所有可能的意圖分配給執(zhí)行狀態(tài),然后以這種方式將它們分成文件夾。這是我的處理程序目錄的結(jié)構(gòu):

每個(gè)狀態(tài)都有處理程序,需要根據(jù)狀態(tài)執(zhí)行特定操作。例如,AMAZON.HelpIntent 處理程序(認(rèn)證所需的處理程序)需要根據(jù)您在技能中的位置說出不同的內(nèi)容,并且始終需要以問題結(jié)束。由于基本行為始終相同(唯一可以保證在不同狀態(tài)的幫助處理程序之間發(fā)生變化的是Alexa所說的),我創(chuàng)建了一個(gè)通用的 HelpIntentHandler 類,我對(duì)其進(jìn)行擴(kuò)展并且只將狀態(tài)傳遞到其中。由于我按狀態(tài)名稱對(duì)所有語音消息進(jìn)行排序,處理程序只需將messages[this.state].Help()傳遞給speak調(diào)用即可給出響應(yīng):
import { HandlerInput, ResponseBuilder } from "ask-sdk";import { MyRequestHandler } from "./MyRequestHandler.class";import { GadgetController } from "../../utils";export class HelpIntentHandler extends MyRequestHandler { constructor(private state: string) { super(); } public canHandle(handlerInput: HandlerInput): boolean { const request = handlerInput.requestEnvelope.request; const state = handlerInput.attributesManager.getSessionAttributes().state; return state === this.state && request.type === 'IntentRequest' && request.intent.name === 'AMAZON.HelpIntent'; } protected updateSessionAttributes(handlerInput: HandlerInput) { this.setSessionAttribute('hasBeenAskedAQuestion', true); this.removeSessionAttribute('inputHandlerId'); this.removeSessionAttribute('handlerStartTime'); this.saveSessionAttributes(); } protected createResponse(handlerInput: HandlerInput): ResponseBuilder { const messages = this.getRequestAttribute('messages');; const flashingDisabled = this.getSessionAttribute('flashingDisabled'); const buttonId = this.getSessionAttribute('buttonId'); let response = handlerInput.responseBuilder .speak(messages[this.state].Help()) .addDirective(GadgetController.stopButtonDownAnimation()) .addDirective(GadgetController.stopButtonUpAnimation()) .addDirective(GadgetController.stopDefaultAnimation()) .withShouldEndSession(false); if (!flashingDisabled) { response = response .addDirective(GadgetController.createButtonDownAnimation(undefined, 'FF0000')) .addDirective(GadgetController.createButtonUpAnimation(undefined, 'FF0000')) .addDirective(GadgetController.createHelpAnimation(buttonId)); } return response; }}
您可能會(huì)注意到 HelpIntentHandler 擴(kuò)展了一個(gè)名為 MyRequestHandler 的類。這是我創(chuàng)建的一個(gè)類,它封裝了所有處理程序共有的行為,包括設(shè)置您可能已經(jīng)注意到我在幫助處理程序中調(diào)用的方法、setSessionAttrribute 、removeSessionAttribute、getRequestAttribute等。這些方法和其他方法我已經(jīng)寫過,允許我以更方便的方式使用handlerInput中包含的attributesManager 。
我還編寫了實(shí)用程序類GadgetController和GameEngine,以幫助簡化兩個(gè)按鈕 API 的交互,因?yàn)樗鼈儾恢庇^。我假設(shè)亞馬遜會(huì)在某個(gè)時(shí)候發(fā)布這樣的按鈕 API 實(shí)用程序類;現(xiàn)在,我為使用我所構(gòu)建的東西感到自豪和高興。
總而言之,使用這些很棒的工具,將AMAZON.HelpIntent處理程序添加到您的狀態(tài)之一就像下面這樣簡單:
import { HelpIntentHandler } from "../classes/HelpIntentHandler.class";import { STATES } from "../../data/states";export class RollCallHelpHandler extends HelpIntentHandler { constructor() { super(STATES.RollCall); }}
。
?
?
?
- 大紅色按鈕開源構(gòu)建
- 如何來尋找鑰匙的開源項(xiàng)目
- 航空天氣按鈕開源分享
- 一款帶有按鈕的游戲開源分享
- 13鍵按鈕鋼琴開源分享
- 按鈕逃跑開源硬件
- 打動(dòng)按鈕開源硬件
- 按鈕檢查器開源分享
- NED按鈕開源分享
- 帶按鈕的警燈開源分享
- 用于IL街機(jī)按鈕的LED板開源分享
- 第四個(gè)開源項(xiàng)目分析——無刷電機(jī)驅(qū)動(dòng)入門
- labview的按鈕控件匯總 384次下載
- 開源項(xiàng)目
- 關(guān)于分區(qū)無法找開修復(fù)工具下載 5次下載
- 關(guān)于FPGA的開源項(xiàng)目介紹 1523次閱讀
- 如何使用Github高效率的查找項(xiàng)目 726次閱讀
- 優(yōu)秀的IC/FPGA開源項(xiàng)目:偽紅外圖像處理 2265次閱讀
- 尋找開源硬件成功的觸發(fā)器 755次閱讀
- 怎么上手 PR 流程?如何開始參與開源項(xiàng)目? 1634次閱讀
- 選擇開源項(xiàng)目的重要因素 2226次閱讀
- 控制按鈕的結(jié)構(gòu)和符號(hào)_控制按鈕的分類 1.4w次閱讀
- 全年開源項(xiàng)目的盤點(diǎn)和總結(jié) 3363次閱讀
- 基于Altium Designer的OSHw開源項(xiàng)目 3738次閱讀
- 2018 年 2 月份 GitHub 上最熱門的開源項(xiàng)目 4678次閱讀
- 開發(fā)者不可錯(cuò)過的開源項(xiàng)目—人工智能篇 6286次閱讀
- Python機(jī)器學(xué)習(xí)開源項(xiàng)目分析過程中的見解和趨勢 754次閱讀
- FAST:基于FPGA的SDN交換機(jī)開源項(xiàng)目(一) 4718次閱讀
- 急停按鈕工作原理_急停按鈕電氣符號(hào)_急停按鈕型號(hào)介紹 12.4w次閱讀
- 11個(gè)機(jī)器學(xué)習(xí)開源項(xiàng)目 2829次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論