色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2、地圖的顯示

遍歷地圖數(shù)組

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

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

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

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

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

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

1)上

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

2)下

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

3)左

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

4)右

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

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

游戲中通過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)行了簡單的移植和更改。

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

1、水平檢測

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

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

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

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

確定前后關(guān)系

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

2、垂直檢測

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

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

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

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

確定上下關(guān)系

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

否則返回0

5、算法整合

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

判斷兩個(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è)圖塊,銷毀兩個(gè)選擇框精靈,將選擇框數(shù)量變量值置為0

演示說明

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

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

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

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

如果沒有按時(shí)消除所有方塊就會失敗

心得體會

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

編輯:jq

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

    關(guān)注

    24

    文章

    5101

    瀏覽量

    169749
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3371

    瀏覽量

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

    關(guān)注

    3

    文章

    4338

    瀏覽量

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

    關(guān)注

    30

    文章

    4803

    瀏覽量

    68759
  • cade
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6276

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA打磚塊小游戲設(shè)計(jì)思路

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

    游戲手柄不可或缺的組件伙計(jì)—線性霍爾傳感器!

    國產(chǎn)3A游戲大作“黑神話:悟空”的上線,迅速讓全網(wǎng)沸騰,收獲一大批國內(nèi)外粉絲,玩家紛紛購買上線試玩,為了方便操作,很多玩家都選擇使用游戲手柄來增加游戲可玩性和體驗(yàn)感,那么在這種高幀率的
    的頭像 發(fā)表于 12-02 15:59 ?195次閱讀
    <b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>不可或缺的組件伙計(jì)—線性霍爾傳感器!

    線性霍爾元件DH641在游戲手柄中的應(yīng)用

    線性霍爾元件在游戲手柄中的應(yīng)用主要體現(xiàn)在提升操控的精確度、穩(wěn)定性以及耐用性方面,為玩家?guī)砀觾?yōu)質(zhì)的游戲體驗(yàn)。以下是對線性霍爾元件在游戲手柄
    的頭像 發(fā)表于 12-02 14:23 ?218次閱讀

    采用霍爾效應(yīng)傳感器的游戲手柄和控制桿設(shè)計(jì)

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

    游戲手柄震動(dòng)馬達(dá)的技術(shù)特點(diǎn)分析

    游戲手柄震動(dòng)馬達(dá)在現(xiàn)代電子游戲中扮演著重要的角色,其技術(shù)特點(diǎn)直接影響到玩家的游戲體驗(yàn)。游戲手柄
    的頭像 發(fā)表于 10-09 11:12 ?393次閱讀
    <b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>震動(dòng)馬達(dá)的技術(shù)特點(diǎn)分析

    基于 FPGA 的飛機(jī)大戰(zhàn)游戲系統(tǒng)設(shè)計(jì)

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

    大聯(lián)大品佳集團(tuán)推出基于聯(lián)發(fā)科技產(chǎn)品的Wi-Fi 6游戲手柄方案

    2024年6月6日,致力于亞太地區(qū)市場的國際領(lǐng)先半導(dǎo)體元器件分銷商---大聯(lián)大控股宣布,其旗下品佳推出基于聯(lián)發(fā)科技(MediaTek)Genio 130A(MT7933)產(chǎn)品的Wi-Fi 6游戲手柄
    的頭像 發(fā)表于 06-06 13:05 ?410次閱讀
    大聯(lián)大品佳集團(tuán)推出基于聯(lián)發(fā)科技產(chǎn)品的Wi-Fi 6<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>方案

    可編程振蕩器,頻點(diǎn)22.578MHz,3225封裝,應(yīng)用于紅外接收手柄

    游戲手柄中,晶振作為一種常用的頻率控制元件,能夠產(chǎn)生穩(wěn)定的脈沖信號,為游戲手柄的電路系統(tǒng)和內(nèi)部器件提供準(zhǔn)確的時(shí)序信,一般來說,游戲
    的頭像 發(fā)表于 05-17 14:07 ?555次閱讀
    可編程振蕩器,頻點(diǎn)22.578MHz,3225封裝,應(yīng)用于紅外接收<b class='flag-5'>手柄</b>

    微軟升級Xbox游戲輔助功能,發(fā)布Proteus無障礙游戲手柄

    昨日,微軟在其Xbox Wire博客發(fā)布了關(guān)于Proteus游戲手柄的詳細(xì)資訊,該產(chǎn)品預(yù)售價(jià)為255美元(約1841元),正式發(fā)售后售價(jià)299美元(約2159元),預(yù)計(jì)于2024年秋季交付。
    的頭像 發(fā)表于 05-16 11:35 ?441次閱讀

    Vision-Board 使用TinyUSB驅(qū)動(dòng)Xbox游戲手柄

    Vision-Board社區(qū)有大佬搞新活了!如果手上有XBOX手柄的話趕快掏出你的Vision-Board體驗(yàn)下:接下來看看KunYi大佬如何進(jìn)行添加的Xbox支持的:準(zhǔn)備工作:Vision-Bo
    的頭像 發(fā)表于 05-11 08:35 ?482次閱讀
    Vision-Board 使用TinyUSB驅(qū)動(dòng)Xbox<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>

    Vision-Board 使用TinyUSB驅(qū)動(dòng)Xbox游戲手柄

    : ?Vision-Board開發(fā)板?+?2.0寸Mipi顯示屏拓展板 ?Xbox?One游戲手柄 ?搭建好開發(fā)環(huán)境:Vision Board 環(huán)境搭建 https://docs.qq.com/doc
    的頭像 發(fā)表于 05-10 15:42 ?556次閱讀
    Vision-Board 使用TinyUSB驅(qū)動(dòng)Xbox<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>

    超酷!基于ESP32自制一個(gè)藍(lán)牙游戲手柄

    通過這個(gè)項(xiàng)目,你會學(xué)習(xí)到如何設(shè)計(jì)一個(gè)面包板游戲手柄電路,學(xué)習(xí)如何將這個(gè)電路作為一個(gè)游戲手柄與Android設(shè)備、電視盒子、PlayStation和計(jì)算機(jī)通信。 正文開始!(文末有視頻演
    發(fā)表于 05-06 16:59

    OpenHarmony南向開發(fā)實(shí)例:【游戲手柄

    基于TS擴(kuò)展的聲明式開發(fā)范式編程語言,以及OpenHarmony的分布式能力實(shí)現(xiàn)的一個(gè)手柄游戲
    的頭像 發(fā)表于 04-17 10:21 ?775次閱讀
    OpenHarmony南向開發(fā)實(shí)例:【<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>】

    請問stm32H743II usb HOST如何識別雙遙桿游戲手柄

    stm32H743II usb HOST 如何識別 雙遙桿游戲手柄?北通usb游戲手柄插到PC上顯示是XBOX 360手柄
    發(fā)表于 03-15 07:52

    華為推出定制游戲手柄專利,滿足玩家多樣化需求

    據(jù)悉,華為的此項(xiàng)專利旨在靈活滿足玩家對專屬定制手柄的需求,允許用戶自主組裝、拆卸和重新配置控制器各部分,從而創(chuàng)造符合游戲特定場景及個(gè)人喜好的獨(dú)特武器。
    的頭像 發(fā)表于 01-31 16:56 ?888次閱讀
    華為推出定制<b class='flag-5'>游戲</b><b class='flag-5'>手柄</b>專利,滿足玩家多樣化需求
    主站蜘蛛池模板: 国产成人精品自线拍| 韩剧甜性涩爱| 99国产在线观看| 5G在线观看免费年龄确认| 97影院理论午夜伦不卡偷| babesvideos欧美最新| 被六个男人躁到一夜同性| 第一次处破女18分钟免费| 国产精品高潮呻吟AV久久96| 国产欧美无码亚洲| 精品一卡2卡三卡4卡乱码精品视频| 久久热免费视频| 欧美最猛性xxxxx亚洲精品| 色网址在线观看| 亚洲乱码国产乱码精品精98 | 国产精选视频在线观看| 好紧小嫩嫩水的10p| 伦理片秋霞免费影院| 人妻激情综合久久久久蜜桃| 午夜向日葵高清在线观看| 樱桃BT在线观看| z0000性欧美| 国产美女视频一区二区二三区| 久久九九亚洲精品| 日本wwwxx爽69护士| 亚洲成A人片在线观看中文L| 中文字幕绝色少妇性| 成年美女黄网站色app| 含羞草在线免费观看| 蜜桃婷婷狠狠久久综合9色| 少妇人妻偷人精品视蜜桃| 一本色道久久88综合日韩精品| 欧美亚洲另类图片| 四川老师边上网课边被啪视频| 亚洲人美女肛交真人全程| 99麻豆精品国产人妻无码| 征服艳妇后宫春色| jizz教师| 狠狠色狠狠色综合日日32| 欧美高清视频www夜色资源网| 性夜影院午夜看片|