chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Kitronik ARCADE游戲手柄實(shí)現(xiàn)連連看

電子森林 ? 來(lái)源:硬禾學(xué)堂 ? 作者:硬禾學(xué)堂 ? 2021-09-08 11:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

連連看相信大家都玩過(guò),但這個(gè)用Kitronik AR CADE游戲手柄來(lái)玩連連看的項(xiàng)目你相信是一個(gè)高一學(xué)生做的嗎?沒(méi)錯(cuò),這位來(lái)自重慶一所中學(xué)的高一學(xué)生經(jīng)過(guò)他哥哥的推薦來(lái)參加我們的Funpack10期活動(dòng),并且他和他哥哥一人設(shè)計(jì)了一個(gè)游戲,屬于自己的小游戲。下面就來(lái)看看連連看這款小游戲如何設(shè)計(jì)的吧。

項(xiàng)目鏈接:https://www.eetree.cn/project/detail/474 ,代碼已開(kāi)源在電子森林。

實(shí)現(xiàn)功能

本次FunPack活動(dòng)可大致分為兩個(gè)任務(wù)

移植或者設(shè)計(jì)一款游戲

設(shè)計(jì)一款摩斯密碼練習(xí)器

在確定參加這期活動(dòng)之后一直在糾結(jié)是按鍵游戲還是設(shè)計(jì)摩斯密碼練習(xí)器,如果按鍵游戲又在游戲主題上搖擺不定,摩斯密碼練習(xí)器又感覺(jué)是一個(gè)很麻煩的任務(wù)。恰巧在網(wǎng)絡(luò)上亂翻時(shí)看到了連連看的算法思路,就選定了在Kitronik ARCADE上實(shí)現(xiàn)一款連連看游戲。

實(shí)現(xiàn)思路及代碼介紹

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

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

圖 A 中出現(xiàn)在同一直線上無(wú)障礙的圈圈可以消除;圖 B 中兩個(gè)圈圈可以通過(guò)一次轉(zhuǎn)彎消除;圖 C 和圖 D 中,兩個(gè)圈圈可以通過(guò)兩次轉(zhuǎn)彎消除。

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

圖形顯示以及選擇實(shí)現(xiàn)

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

一、地圖創(chuàng)建以及顯示

連連看游戲由不同的圖塊組成,上面介紹到地圖信息確定為大小70的一維數(shù)組表示,且不同X、Y坐標(biāo)位置的數(shù)值索引值都已經(jīng)確定,則這里就會(huì)想到通過(guò)不同的值表示不同的圖塊,在游戲中一共使用了7個(gè)不同的圖塊,需要在設(shè)置圖塊地圖時(shí)添加進(jìn)入。

1、地圖的創(chuàng)建

通過(guò)函數(shù)InitLevelOneImage,InitLeveTwoImage。。。初始化數(shù)組的方式初始化不同關(guān)卡地圖信息。

2、地圖的顯示

遍歷地圖數(shù)組

通過(guò)索引位置確定圖塊位置信息

通過(guò)數(shù)組值將不同的圖塊放到確定的位置上

二、選擇框的移動(dòng)、消除、更新

1、選擇框的創(chuàng)建

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

2、選擇框的移動(dòng)

1)上

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

2)下

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

3)左

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

4)右

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

三、選定、取消、消除條件、消除完成判斷、關(guān)卡更新

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

A按下(選定)

1)判斷是否為空

2)若不為空且ChoiceBoxNums == 0時(shí)在當(dāng)前位置創(chuàng)建ChoiceOne精靈,ChoiceBoxNums置1

3)若不為空且ChoiceBoxNums == 1且當(dāng)前位置不為ChoiceOne位置,則創(chuàng)建ChoiceTwo精靈

消除條件

當(dāng)ChoiceBoxNums == 2時(shí),表示已經(jīng)選定了兩個(gè)圖塊,此時(shí)調(diào)用消除函數(shù)進(jìn)行判斷與消除。

消除完成判斷及關(guān)卡更新

當(dāng)?shù)貓D數(shù)組全為0時(shí)表示消除完成,在每次進(jìn)行判斷消除之后進(jìn)行一次判斷是否消除完成,使用遍歷數(shù)組然后相加的求和的方式得到和,若為0,則表示消除完。若消除完則根據(jù)關(guān)卡信息決定是進(jìn)入下一關(guān)還是結(jié)束游戲。

地圖初始化(關(guān)卡更新)

更新關(guān)卡只需要修改地圖數(shù)組,然后更改一些特定的值即可完成新地圖的載入,Levels表示當(dāng)前關(guān)卡

消除算法

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

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

1、水平檢測(cè)

水平檢測(cè)用來(lái)判斷兩個(gè)點(diǎn)的縱坐標(biāo)是否相等,同時(shí)判斷兩點(diǎn)間有沒(méi)有障礙物。

定義函數(shù)horizon直接檢測(cè)兩點(diǎn)間是否有障礙物。

先判斷A、B是否為同一個(gè)點(diǎn)

判斷是否為水平關(guān)系

確定前后關(guān)系

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

2、垂直檢測(cè)

垂直檢測(cè)用來(lái)判斷兩個(gè)點(diǎn)的橫坐標(biāo)是否相等,同時(shí)判斷兩點(diǎn)間有沒(méi)有障礙物。

與水平檢測(cè)原理一致,定義函數(shù)vertical直接檢測(cè)兩點(diǎn)之間是否有障礙物

先判斷A、B是否為同一個(gè)點(diǎn)

判斷是否為垂直關(guān)系

確定上下關(guān)系

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

3、一個(gè)拐角檢測(cè)

一個(gè)拐角檢測(cè)可分解為水平檢測(cè)和垂直檢測(cè),當(dāng)兩個(gè)同時(shí)滿足時(shí),便兩點(diǎn)可通過(guò)一個(gè)拐角相連。即:

一個(gè)拐角檢測(cè) = 水平檢測(cè) && 垂直檢測(cè)

A 點(diǎn)至 B 點(diǎn)能否連接可轉(zhuǎn)化為滿足任意一點(diǎn):

A 點(diǎn)至 C 點(diǎn)的垂直檢測(cè),以及 C 點(diǎn)至 B 點(diǎn)的水平檢測(cè);

A 點(diǎn)至 D 點(diǎn)的水平檢測(cè),以及 D 點(diǎn)至 B 點(diǎn)的垂直檢測(cè)。

定義函數(shù) turn_once 用于一個(gè)拐角檢測(cè)

判斷A、B兩點(diǎn)是否為同一點(diǎn)

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

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

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

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

都不滿足則返回0,表示不能一個(gè)拐點(diǎn)消除

4、兩個(gè)拐角檢測(cè)

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

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

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

A 點(diǎn)至 C 點(diǎn)通過(guò)水平或垂直檢測(cè),C 點(diǎn)至 B 點(diǎn)可通過(guò)一個(gè)拐角連接。(圖中用 C 表示)

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

創(chuàng)建函數(shù)turn_twice用于兩個(gè)拐角檢測(cè):

判斷A、B兩點(diǎn)是否為同一點(diǎn)

對(duì)地圖數(shù)組進(jìn)行遍歷(temp_x 0-9,temp_y 0-6)

如果C點(diǎn)跟A、B兩點(diǎn)都不為水平或者垂直關(guān)系,則跳過(guò)

若C點(diǎn)坐標(biāo)為A或者B點(diǎn),跳過(guò)

判斷C點(diǎn)是否為空,若為空則跳過(guò)

A點(diǎn)與C點(diǎn)做一個(gè)拐角檢測(cè),C點(diǎn)與B點(diǎn)做水平檢測(cè)或垂直檢測(cè),A、B兩點(diǎn)關(guān)系都滿足則返回1表示C點(diǎn)條件滿足

B點(diǎn)與C點(diǎn)做一個(gè)拐角檢測(cè),C點(diǎn)與A點(diǎn)做水平檢測(cè)或垂直檢測(cè),A、B兩點(diǎn)關(guān)系都滿足則返回1表示C點(diǎn)條件滿足

否則返回0

5、算法整合

目前為止,連連看的基本算法都已經(jīng)實(shí)現(xiàn),整合創(chuàng)建一個(gè)remove函數(shù)判斷相同圖塊的兩點(diǎn)是否能通過(guò)以上四種算法消除。

判斷兩個(gè)點(diǎn)是否為同一圖塊

判斷是否能水平消除,若能則將兩個(gè)位置的數(shù)組內(nèi)容置為0,表示空。

否則判斷是否能垂直消除,若能則將兩個(gè)位置的數(shù)組的內(nèi)容置0

否則判斷是否能一個(gè)拐點(diǎn)消除,若能則將兩個(gè)位置的數(shù)組值置為0

否則判斷兩點(diǎn)能否兩個(gè)拐點(diǎn)消除,若能則將兩個(gè)位置的數(shù)組值置為0

不管是否消除兩個(gè)圖塊,銷(xiāo)毀兩個(gè)選擇框精靈,將選擇框數(shù)量變量值置為0

演示說(shuō)明

游戲開(kāi)始,游戲地圖初始化,開(kāi)始倒計(jì)時(shí)。

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

成功消除第一關(guān)全部方塊后,自動(dòng)開(kāi)始下一關(guān)。

在規(guī)定時(shí)間內(nèi)消除所有方塊即可獲勝

如果沒(méi)有按時(shí)消除所有方塊就會(huì)失敗

心得體會(huì)

這是我第一次參加Funpack活動(dòng),這次活動(dòng)使我感觸很深,青少年可以低成本地通過(guò)Funpack的活動(dòng)認(rèn)識(shí)到游戲編譯的樂(lè)趣,很有教育意義。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Ar
    Ar
    +關(guān)注

    關(guān)注

    25

    文章

    5269

    瀏覽量

    175904
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    4139

    瀏覽量

    45796
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4413

    瀏覽量

    67237
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4956

    瀏覽量

    73530
  • cade
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6362

原文標(biāo)題:Kitronik ARCADE游戲手柄實(shí)現(xiàn)連連看 - Funpack10項(xiàng)目分享二

文章出處:【微信號(hào):xiaojiaoyafpga,微信公眾號(hào):電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    2.4G無(wú)線游戲手柄方案開(kāi)發(fā),采用XL2417D+XL2417U芯片,集成單片機(jī)和USB

    相較于藍(lán)牙和有線連接,2.4G游戲手柄無(wú)線方案在游戲體驗(yàn)上有著更好的體驗(yàn)。在復(fù)雜的Wi-Fi與藍(lán)牙環(huán)境中,普通連接易受干擾導(dǎo)致卡頓。2.4G游戲手柄
    的頭像 發(fā)表于 12-23 16:22 ?290次閱讀
    2.4G無(wú)線<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>方案開(kāi)發(fā),采用XL2417D+XL2417U芯片,集成單片機(jī)和USB

    在Termux環(huán)境下實(shí)現(xiàn)康威生命游戲

    你想要在Termux環(huán)境下實(shí)現(xiàn)康威生命游戲,并專門(mén)展示經(jīng)典的“滑翔機(jī)”模式,構(gòu)建一個(gè)能持續(xù)運(yùn)行的二維世界,同時(shí)需要完整的程序代碼和調(diào)試說(shuō)明。 一、實(shí)現(xiàn)思路康威生命游戲的核心是遵循4條規(guī)
    發(fā)表于 12-21 18:36

    昆泰芯傳感器賦予游戲手柄新生命

    昆泰芯3D霍爾技術(shù)通過(guò)非接觸式磁場(chǎng)感應(yīng)實(shí)現(xiàn)游戲手柄搖桿的精準(zhǔn)操控,以16位分辨率、1000Hz刷新率及溫漂抑制技術(shù),徹底解決碳膜搖桿的磨損與漂移問(wèn)題。
    的頭像 發(fā)表于 10-27 09:56 ?502次閱讀
    昆泰芯傳感器賦予<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>新生命

    游戲手柄線性霍爾替代方案:以SC470X系列為核心的升級(jí)路徑

    SC470X 系列是低功耗、高速線性霍爾傳感器芯片,能構(gòu)成比例的響應(yīng)外部磁場(chǎng)的變化,其靜態(tài)輸出電壓為 50%VCC。SC470X 系列的運(yùn)行功耗低至 0.7 mA,使其非常適合用于電池供電類應(yīng)用,如游戲手柄、手持云臺(tái)等類型設(shè)備。
    的頭像 發(fā)表于 08-30 10:35 ?1329次閱讀

    【技術(shù)貼】手柄芯片重新定義次世代交互體驗(yàn),玩家:這物理外掛太逆天!

    隨著游戲設(shè)備的升級(jí),游戲手柄作為核心交互設(shè)備持續(xù)技術(shù)革新。在主機(jī)游戲中,高精度操作適配動(dòng)作格斗、模擬駕駛等多種游戲類型,顯著提升玩家沉浸感。
    的頭像 發(fā)表于 08-11 15:30 ?881次閱讀
    【技術(shù)貼】<b class='flag-5'>手柄</b>芯片重新定義次世代交互體驗(yàn),玩家:這物理外掛太逆天!

    260款熱門(mén)大型3A電腦單機(jī)游戲分享 全系列漢化+預(yù)裝MOD+游戲運(yùn)行環(huán)境

    分享 【金山文檔 | WPS云文檔】 安卓游戲全集5000+含安卓電視游戲+原生支持手柄的安卓游戲https://kdocs.cn/l/caGyGtXfn8hA 零希沃特 ZERO S
    發(fā)表于 07-29 16:35

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】VisionFive 2復(fù)古游戲機(jī)改造

    → Language) 手柄映射(Controller Settings支持USB/2.4G無(wú)線手柄) WiFi聯(lián)網(wǎng)(需外接USB網(wǎng)卡) 二、游戲ROM添加與管理 3 ROM傳輸方式 Samba共享 :PC
    發(fā)表于 07-22 20:58

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】2、打造復(fù)古游戲機(jī)(Batocera鏡像+FBNeo虛擬機(jī), 多款游戲ROM分享)

    PC、ARM TV Box、Odroid、Rockchip 等 界面華麗,游戲列表支持圖片+視頻預(yù)覽 內(nèi)置游戲系統(tǒng)檢測(cè)、手柄即插即用 適合 PC 用戶做成復(fù)古主機(jī) ?缺點(diǎn) : 系統(tǒng)比較重,運(yùn)行在老設(shè)備
    發(fā)表于 07-17 21:58

    OVP IC應(yīng)用案例 | 機(jī)械師G6Pro游戲手柄助力玩家順暢通關(guān)

    近期,充電頭網(wǎng)拆解了機(jī)械師G6Pro游戲手柄,該款產(chǎn)品使用的過(guò)壓保護(hù)芯片來(lái)自Prisemi芯導(dǎo)科技,型號(hào)P14C13,是一顆高集成的過(guò)壓保護(hù)芯片,過(guò)壓保護(hù)點(diǎn)為6V,耐壓為32V,內(nèi)置MOS管導(dǎo)通電
    的頭像 發(fā)表于 07-08 11:33 ?673次閱讀
    OVP IC應(yīng)用案例 | 機(jī)械師G6Pro<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>助力玩家順暢通關(guān)

    【HarmonyOS next】ArkUI-X休閑益智連連看【進(jìn)階】

    連連看游戲為例,深度解析跨平臺(tái)開(kāi)發(fā)的核心優(yōu)勢(shì)。 一、ArkUI-X跨平臺(tái)架構(gòu)優(yōu)勢(shì) 圖:ArkUI-X跨平臺(tái)運(yùn)行原理示意圖 ArkUI-X通過(guò)以下設(shè)計(jì)實(shí)現(xiàn)\"一次開(kāi)發(fā),雙端部署\"
    發(fā)表于 06-28 21:51

    單片機(jī)實(shí)例項(xiàng)目:FC小霸王游戲手柄資料

    單片機(jī)實(shí)例項(xiàng)目:FC小霸王游戲手柄資料,推薦下載!
    發(fā)表于 06-03 21:04

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(游戲

    十年前藏的現(xiàn)金一樣驚喜?。┻@些藏在文檔深處的\"武功秘籍\",能幫我們輕松實(shí)現(xiàn)分布式游戲、跨端協(xié)同這些聽(tīng)起來(lái)很酷的功能??焐宪?chē),帶你解鎖鴻蒙開(kāi)發(fā)的正確姿勢(shì)! 一、分布式游戲手柄
    發(fā)表于 06-03 18:22

    游戲手柄振動(dòng)馬達(dá):沉浸式游戲體驗(yàn)的核心

    游戲手柄振動(dòng)馬達(dá)是現(xiàn)代游戲設(shè)備中不可或缺的一部分,它為玩家提供了更加沉浸式的游戲體驗(yàn)。通過(guò)精確的振動(dòng)反饋,游戲
    的頭像 發(fā)表于 05-17 00:05 ?809次閱讀

    艾為電子芯片產(chǎn)品在游戲手柄中的應(yīng)用方案

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

    手柄RFID手持機(jī)終端的特點(diǎn)和作用分析

    手柄設(shè)計(jì)是RFID手持機(jī)的重要特點(diǎn)。符合人體工程學(xué)的手柄設(shè)計(jì),使操作更加舒適,減輕長(zhǎng)時(shí)間使用帶來(lái)的疲勞感。防滑手柄確保設(shè)備在潮濕或油污環(huán)境中的穩(wěn)定握持,提升使用安全性。同時(shí)手柄配備快捷
    的頭像 發(fā)表于 02-24 11:28 ?638次閱讀