在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Kitronik ARCADE游戲手柄實現連連看

電子森林 ? 來源:硬禾學堂 ? 作者:硬禾學堂 ? 2021-09-08 11:47 ? 次閱讀

連連看相信大家都玩過,但這個用Kitronik AR CADE游戲手柄來玩連連看的項目你相信是一個高一學生做的嗎?沒錯,這位來自重慶一所中學的高一學生經過他哥哥的推薦來參加我們的Funpack10期活動,并且他和他哥哥一人設計了一個游戲,屬于自己的小游戲。下面就來看看連連看這款小游戲如何設計的吧。

項目鏈接:https://www.eetree.cn/project/detail/474 ,代碼已開源在電子森林。

實現功能

本次FunPack活動可大致分為兩個任務

移植或者設計一款游戲

設計一款摩斯密碼練習器

在確定參加這期活動之后一直在糾結是按鍵游戲還是設計摩斯密碼練習器,如果按鍵游戲又在游戲主題上搖擺不定,摩斯密碼練習器又感覺是一個很麻煩的任務。恰巧在網絡上亂翻時看到了連連看的算法思路,就選定了在Kitronik ARCADE上實現一款連連看游戲。

實現思路及代碼介紹

連連看是一種很受大家歡迎的小游戲。下面四張圖給出了最基本的消除規則:

f0fceb7e-0fe6-11ec-8fb8-12bb97331649.png

圖 A 中出現在同一直線上無障礙的圈圈可以消除;圖 B 中兩個圈圈可以通過一次轉彎消除;圖 C 和圖 D 中,兩個圈圈可以通過兩次轉彎消除。

由于Kitronik ARCADE的屏幕一次只能完整顯示10*7個圖塊,所以將地圖設計為10*7大小。在游戲中使用數組的方式表示地圖信息,使用不同的值表示不同的圖塊,0表示此位置為空,作為一個平面游戲,使用二維數組來保存地圖信息最好理解,但由于makecode中函數接口只提供了一維數組。所以只能使用一維數組表示二維信息。創建一個大小為70的一維數組,對于數組中的數據,索引值index/10就是圖塊行Y的值,index%10即為圖塊列X的值。

圖形顯示以及選擇實現

對于連連看這款游戲,大家多多少少都知道怎么玩,所以這里不介紹玩法。

一、地圖創建以及顯示

連連看游戲由不同的圖塊組成,上面介紹到地圖信息確定為大小70的一維數組表示,且不同X、Y坐標位置的數值索引值都已經確定,則這里就會想到通過不同的值表示不同的圖塊,在游戲中一共使用了7個不同的圖塊,需要在設置圖塊地圖時添加進入。

1、地圖的創建

通過函數InitLevelOneImage,InitLeveTwoImage。。。初始化數組的方式初始化不同關卡地圖信息。

2、地圖的顯示

遍歷地圖數組

通過索引位置確定圖塊位置信息

通過數組值將不同的圖塊放到確定的位置上

二、選擇框的移動、消除、更新

1、選擇框的創建

創建一個SelectBox對象用于表示選擇框,將選擇框與左上角第一個圖塊重疊(圖塊的大小為16*16,然后地圖行列的間隔都是16,所以(8,8)為第一個圖塊位置)

2、選擇框的移動

1)上

判斷SelectBox對象是否在第一行(posY = 8),若在第一行則將圖塊移動到最后一行(第7行,posY = 104),若不在最上一行則直接往上移動一行(將posY減16)

2)下

與向上移動同理,判斷SelectBox對象是否在最后一行(第七行,posY = 104),若在最后一行則將圖塊移動到第一行(posY = 8),若不在第七行則直接往下移動一行(將posY加16)

3)左

判斷SelectBox對象是否在第一列(posX= 8),若在第一列則將圖塊移動到最右一列(第10列,posX = 152),若不在第一列則直接往左移動一列(將posX減16)

4)右

與左移同理,判斷SelectBox對象是否在最后一列(第10列,posX= 152),若在最后一列則將圖塊移動到第一列(posX = 8),若不在最后一列則直接右移一列(將posX加16)

三、選定、取消、消除條件、消除完成判斷、關卡更新

游戲中通過A按鍵選定圖塊,與選擇框類似,只需要A按下時若當前位置不為空,且不為Choice精靈,則在當前選擇框的位置創建Choice精靈即可,由于需要選擇兩個圖塊,所以A鍵按下時需要判斷是否已經存在了一個Choice精靈(創建ChoiceBoxNums變量表示Choice精靈的數量),若存在則創建第二個Choice精靈,同時運行函數判斷是否能被消除。

A按下(選定)

1)判斷是否為空

2)若不為空且ChoiceBoxNums == 0時在當前位置創建ChoiceOne精靈,ChoiceBoxNums置1

3)若不為空且ChoiceBoxNums == 1且當前位置不為ChoiceOne位置,則創建ChoiceTwo精靈

消除條件

當ChoiceBoxNums == 2時,表示已經選定了兩個圖塊,此時調用消除函數進行判斷與消除。

消除完成判斷及關卡更新

當地圖數組全為0時表示消除完成,在每次進行判斷消除之后進行一次判斷是否消除完成,使用遍歷數組然后相加的求和的方式得到和,若為0,則表示消除完。若消除完則根據關卡信息決定是進入下一關還是結束游戲。

地圖初始化(關卡更新)

更新關卡只需要修改地圖數組,然后更改一些特定的值即可完成新地圖的載入,Levels表示當前關卡

消除算法

算法參考鏈接:https://blog.csdn.net/qq_41551359/article/details/82983513,并進行了簡單的移植和更改。

設計函數isBlocked 表示x,y位置是否有圖塊(有無障礙),實現思路為查找數組Y*10+X索引處的值是否為0,若為0則表示此處為空,否則有障礙。

1、水平檢測

水平檢測用來判斷兩個點的縱坐標是否相等,同時判斷兩點間有沒有障礙物。

定義函數horizon直接檢測兩點間是否有障礙物。

先判斷A、B是否為同一個點

判斷是否為水平關系

確定前后關系

使用循環遍歷A、B中間的位格,若有一個為有圖塊則不能水平消除

2、垂直檢測

垂直檢測用來判斷兩個點的橫坐標是否相等,同時判斷兩點間有沒有障礙物。

與水平檢測原理一致,定義函數vertical直接檢測兩點之間是否有障礙物

先判斷A、B是否為同一個點

判斷是否為垂直關系

確定上下關系

使用循環遍歷A、B中間的位格,若有一個為有圖塊則不能水平消除

3、一個拐角檢測

一個拐角檢測可分解為水平檢測和垂直檢測,當兩個同時滿足時,便兩點可通過一個拐角相連。即:

一個拐角檢測 = 水平檢測 && 垂直檢測

A 點至 B 點能否連接可轉化為滿足任意一點:

A 點至 C 點的垂直檢測,以及 C 點至 B 點的水平檢測;

A 點至 D 點的水平檢測,以及 D 點至 B 點的垂直檢測。

定義函數 turn_once 用于一個拐角檢測

判斷A、B兩點是否為同一點

判斷C(X1,Y2)點是否為空

C、B水平檢測&&A、C垂直檢測,都滿足則返回1

判斷D(X2,Y1)是否為空

A、D水平檢測&&B、D垂直檢測,都滿足則返回1

都不滿足則返回0,表示不能一個拐點消除

4、兩個拐角檢測

兩個拐角檢測可分解為一個拐角檢測和水平檢測或垂直檢測。即:

兩個拐角檢測 = 一個拐角檢測 && (水平檢測 || 垂直檢測)

水平、垂直分別穿過 A B 共有四條直線,掃描直線上所有不包含 A B 的點,看是否存在一點 C ,滿足以下任意一項:

A 點至 C 點通過水平或垂直檢測,C 點至 B 點可通過一個拐角連接。(圖中用 C 表示)

A 點至 C 點可通過一個拐角連接,C 點至 B 點通過水平或垂直連接。(圖中用 C 下劃線表示)

創建函數turn_twice用于兩個拐角檢測:

判斷A、B兩點是否為同一點

對地圖數組進行遍歷(temp_x 0-9,temp_y 0-6)

如果C點跟A、B兩點都不為水平或者垂直關系,則跳過

若C點坐標為A或者B點,跳過

判斷C點是否為空,若為空則跳過

A點與C點做一個拐角檢測,C點與B點做水平檢測或垂直檢測,A、B兩點關系都滿足則返回1表示C點條件滿足

B點與C點做一個拐角檢測,C點與A點做水平檢測或垂直檢測,A、B兩點關系都滿足則返回1表示C點條件滿足

否則返回0

5、算法整合

目前為止,連連看的基本算法都已經實現,整合創建一個remove函數判斷相同圖塊的兩點是否能通過以上四種算法消除。

判斷兩個點是否為同一圖塊

判斷是否能水平消除,若能則將兩個位置的數組內容置為0,表示空。

否則判斷是否能垂直消除,若能則將兩個位置的數組的內容置0

否則判斷是否能一個拐點消除,若能則將兩個位置的數組值置為0

否則判斷兩點能否兩個拐點消除,若能則將兩個位置的數組值置為0

不管是否消除兩個圖塊,銷毀兩個選擇框精靈,將選擇框數量變量值置為0

演示說明

游戲開始,游戲地圖初始化,開始倒計時。

按下A鍵選中方塊,紅框表示方框已選中,然后找到一個與此方塊相同的方塊,再次選中即可消除。

成功消除第一關全部方塊后,自動開始下一關。

在規定時間內消除所有方塊即可獲勝

如果沒有按時消除所有方塊就會失敗

心得體會

這是我第一次參加Funpack活動,這次活動使我感觸很深,青少年可以低成本地通過Funpack的活動認識到游戲編譯的樂趣,很有教育意義。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Ar
    Ar
    +關注

    關注

    25

    文章

    5141

    瀏覽量

    171817
  • 開源
    +關注

    關注

    3

    文章

    3570

    瀏覽量

    43408
  • 函數
    +關注

    關注

    3

    文章

    4367

    瀏覽量

    64068
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70206
  • cade
    +關注

    關注

    0

    文章

    2

    瀏覽量

    6312

原文標題:Kitronik ARCADE游戲手柄實現連連看 - Funpack10項目分享二

文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    游戲手柄振動馬達:沉浸式游戲體驗的核心

    游戲手柄振動馬達是現代游戲設備中不可或缺的一部分,它為玩家提供了更加沉浸式的游戲體驗。通過精確的振動反饋,游戲
    的頭像 發表于 05-17 00:05 ?96次閱讀

    艾為電子芯片產品在游戲手柄中的應用方案

    隨著游戲設備的升級,游戲手柄作為核心交互設備持續技術革新。在主機游戲中,高精度操作適配動作格斗、模擬駕駛等多種游戲類型,顯著提升玩家沉浸感。
    的頭像 發表于 04-15 09:42 ?295次閱讀
    艾為電子芯片產品在<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>中的應用方案

    線性霍爾元件DH49E在VR手柄中的應用

    系統(如PSVR的Move控制器)通過基站發射交變磁場,手柄內置的線性霍爾元件檢測磁場強度變化。通過多個傳感器的數據融合,可計算出手柄在空間中的位置和方向,實現低延遲的追蹤。 輔助慣性測量單元(IMU) : 結合加速度計和陀螺儀
    的頭像 發表于 03-18 17:02 ?574次閱讀

    手柄RFID手持機終端的特點和作用分析

    手柄設計是RFID手持機的重要特點。符合人體工程學的手柄設計,使操作更加舒適,減輕長時間使用帶來的疲勞感。防滑手柄確保設備在潮濕或油污環境中的穩定握持,提升使用安全性。同時手柄配備快捷
    的頭像 發表于 02-24 11:28 ?210次閱讀

    使用適用于 Raspberry Pi Pico 的 Kitronik 迷你控制器控制您的 XRP 機器人

    作者:Travis Foss 一個反復提出的有趣問題是控制 XRP 的不同方法是什么。我碰巧發現了適用于 Raspberry Pi Pico 的 Kitronik 迷你控制器,Kitronik 有一
    的頭像 發表于 01-26 17:37 ?381次閱讀
    使用適用于 Raspberry Pi Pico 的 <b class='flag-5'>Kitronik</b> 迷你控制器控制您的 XRP 機器人

    FPGA打磚塊小游戲設計思路

    HDL,?Vivado 平臺上開發打磚塊小游戲并使用 PS2 與 VGA 的基本思路: 一、整體架構設計 1. 輸入模塊: ? PS2 接口模塊:負責與 PS2 設備(如游戲手柄)進行通信,接收
    的頭像 發表于 12-09 16:57 ?760次閱讀

    線性霍爾元件DH641在游戲手柄中的應用

    線性霍爾元件在游戲手柄中的應用主要體現在提升操控的精確度、穩定性以及耐用性方面,為玩家帶來更加優質的游戲體驗。以下是對線性霍爾元件在游戲手柄
    的頭像 發表于 12-02 14:23 ?588次閱讀

    第二屆電力電子創作大賽圓滿收官,優秀作品連連看

    在新能源發電、輸配電及高效用電領域,電力電子技術默默扮演著舉足輕重的角色,卻常隱于幕后,不為公眾所廣泛認知。為揭開這位科技巨擘的神秘面紗,中國電源學會科普工委與英飛凌科技(中國)有限公司共同主辦第二屆電力電子創作大賽,旨在深化公眾對電力電子技術的認識與理解。自今年4月盛大啟幕以來,大賽吸引了社會各界的廣泛關注與積極參與。參賽陣容橫跨學生、工程師、電力電子領域
    的頭像 發表于 11-17 01:02 ?541次閱讀
    第二屆電力電子創作大賽圓滿收官,優秀作品<b class='flag-5'>連連看</b>!

    PNI高精度低功耗3D動作捕捉手柄方案

    SpacePoint3D動作捕捉手柄方案被虛擬現實(VR)廠商PICO選入PICOTrackingkit產品。虛擬現實和游戲手柄的設計師們非常清楚地了解,用消費類慣性傳感器想做到高精準度的動作捕捉
    的頭像 發表于 11-05 08:06 ?374次閱讀
    PNI高精度低功耗3D動作捕捉<b class='flag-5'>手柄</b>方案

    采用霍爾效應傳感器的游戲手柄和控制桿設計

    電子發燒友網站提供《采用霍爾效應傳感器的游戲手柄和控制桿設計.pdf》資料免費下載
    發表于 10-30 09:56 ?0次下載
    采用霍爾效應傳感器的<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>和控制桿設計

    游戲手柄震動馬達的技術特點分析

    游戲手柄震動馬達在現代電子游戲中扮演著重要的角色,其技術特點直接影響到玩家的游戲體驗。游戲手柄
    的頭像 發表于 10-09 11:12 ?817次閱讀
    <b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>震動馬達的技術特點分析

    基于 FPGA 的飛機大戰游戲系統設計

    HDMI 屏,在屏上流暢的顯示游戲界面。(3) 游戲手柄驅動模塊:驅動手柄上的 PCF8591 芯片,輸出搖桿的位置狀態。(4) IIC 通信模塊:
    發表于 07-24 20:03

    藍牙模塊在無線游戲設備中的應用

    了更多的樂趣和可能性。本文將探討藍牙模塊在無線游戲設備中的應用,并分析其對游戲產業的影響。 藍牙模塊在無線游戲設備中的基礎應用主要體現在設備間的無線連接和數據傳輸。通過藍牙模塊,游戲
    的頭像 發表于 07-19 14:00 ?468次閱讀

    不容錯過的2024EeIE智博會,亮點連連看

    隨著全球制造業的轉型升級和智能化發展,智能裝備和電子裝備產業成為推動經濟高質量增長的關鍵動力。深圳,作為中國的經濟特區和創新高地,聚集了大量的智能制造和電子裝備企業,擁有得天獨厚的產業基礎和創新能力。因此,智博會的舉辦不僅是對深圳乃至全國智能裝備和電子裝備產業的一次全面展示,更是推動產業創新、促進國際交流合作的重要平臺。 第八屆深圳國際智能裝備產業博覽會暨第十一屆深圳國際電子裝備產業博覽會(簡稱EeIE智
    發表于 06-18 15:17 ?547次閱讀

    大聯大品佳集團推出基于聯發科技產品的Wi-Fi 6游戲手柄方案

    2024年6月6日,致力于亞太地區市場的國際領先半導體元器件分銷商---大聯大控股宣布,其旗下品佳推出基于聯發科技(MediaTek)Genio 130A(MT7933)產品的Wi-Fi 6游戲手柄
    的頭像 發表于 06-06 13:05 ?573次閱讀
    大聯大品佳集團推出基于聯發科技產品的Wi-Fi 6<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>方案
    主站蜘蛛池模板: 国产在线精品一区二区夜色 | 在线高清一级欧美精品 | 亚洲无吗在线视频 | 一级一级女人18毛片 | 中文字幕在线资源 | 最近2018年在线中文字幕高清 | 久久国产美女免费观看精品 | 国产九色在线 | 亚洲视频一区二区在线观看 | 亚洲福利在线视频 | 五月婷婷综合激情网 | 日本成人黄色网址 | jlzzjlzzjlzz亚洲女 | 国内自拍2021 | 91在线免费视频 | 久久福利免费视频 | 边摸边吃奶边做视频叫床韩剧 | 丁香六月色婷婷综合网 | 成人国产在线24小时播放视频 | 黄色网址在线免费观看 | 欧美网站色| 色天天天天综合男人的天堂 | 免费观看视频网站 | 天天射天天干天天 | 亚洲精品黄色 | 91精品国产亚洲爽啪在线影院 | 91午夜剧场 | 性欧美网站 | 国产精品伦视频观看免费 | 欧美αv日韩αv另类综合 | 欧美美女被日 | 91大神在线免费观看 | 国产精品成人在线播放 | 国产成人精品一区二区仙踪林 | 日本免费www | 综合五月激情 | 免费精品一区二区三区在线观看 | 色中色资源| 快色视频在线观看 | 午夜视频一区二区 | 国模于子涵啪啪大胆 |