Giter Club home page Giter Club logo

snakegame_usingguesture's Introduction

SnakeGame_UsingGuesture

動機

貪食蛇遊戲想必是大家的童年,最近在回憶時想到小時候玩貪食蛇是在電腦上玩的,以方向鍵操作貪食蛇吃食物。網路上很多貪食蛇的遊戲也是以方向鍵操作,最大的差別在於遊戲畫面的精美度,玩法幾乎是一成不變,這時我想到如果只要動動手勢去命令貪食蛇要往哪個方向行走是一個不錯的主意,也是一種新玩法,加上最近在學以Kotlin開發Android App,因此我投入"以手勢控制貪食蛇"的手遊app開發。

玩法

操作手勢以豎起大拇指為主要手勢,大拇指往上即操作蛇往上行走,往右即操作蛇往右行走,以此類推。其餘玩法跟其他貪食蛇遊戲相同,蛇吃到食物身體會變長並且移動速度加快,碰到牆壁或是自身就死亡。

實作流程

分為兩部分,第一部分為貪食蛇遊戲之邏輯,第二部分為辨識手勢之功能

1. 遊戲中所有物件皆有獨立一個類別,比如食物有專屬一個類別,所有類別皆繼承GameObject類別,因為此類別定義所有物件皆會有的父方法、屬性。遊戲背景的繪製勢使用Canvas作為畫布,再以各物件各自定義的Paint物件繪製出各物件的樣貌。遊戲中的物件的繪製是以一格格方塊為基礎繪製的,因為此專案的遊戲風格為類似像素風格的遊戲,將在layout中元件給定的長寬除以設定的長寬之格數來定義每一格的座標。蛇的移動採用執行緒休眠的方式繪製蛇在下一個格子中,執行緒休眠的時間是根據蛇吃到食物的次數來減少。
2. 透過實作ImageAnalysis.Analyzer介面即時獲取相機鏡頭的輸入流,對每一幀影像應用圖像辨識tensorflow lite的推理,計算該幀影像在每一類別中的confidence,獲取其中最大的confidence對應之label作為該幀的類別,並以類別作為function parameter呼叫貪食蛇移動的函式,如果傳入的類別為right,則在函式內部控制蛇往右行走。

Demo

結語

當初是想以Google Mediapipe完成手勢的辨識,因為此模組提供精準的手掌檢測,它能即時追蹤並模擬手掌骨格的動作,可以達到很準確的分類訓練手勢分類模型,然而不幸的是此模組應用於Android App的開發對我來說太艱難,因為其背後牽涉到眾多以數學實作的手掌骨格偵測類別,彼此的關聯在Google的網站也找不到適用於Android的文檔供閱讀,在找尋資料時也發現一些人在論壇上面發表跟我一樣的問題,因此這個問題目前應該是沒有答案,所以我改採用單一CNN去辨識輸入的圖片,效果沒有Google Mediapipe來得好,但還是可以勉強完成此功能。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.