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

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

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

行空板Python入門教程第七課:舒爾特方格小游戲

創(chuàng)客生活 ? 來(lái)源:創(chuàng)客生活 ? 作者:創(chuàng)客生活 ? 2022-06-02 15:45 ? 次閱讀

注意力是一切學(xué)習(xí)的根本,是大腦進(jìn)行感知、學(xué)習(xí)、思維等認(rèn)知活動(dòng)的基本條件。然而,無(wú)論是孩子還是成年人,我們常常會(huì)因開小差、注意力無(wú)法集中而困擾。此時(shí),找到一個(gè)合適的方法來(lái)訓(xùn)練我們的注意力勢(shì)在必行。

舒爾特方格訓(xùn)練法,是全世界范圍內(nèi)最簡(jiǎn)單,最有效也是最科學(xué)的注意力訓(xùn)練方法之一。

舒爾特方格 (Schulte Grid) 是在一張方形卡片上畫上 1cm*1cm 的 25 個(gè)方格,格子內(nèi)任意填寫上阿拉伯?dāng)?shù)字1 ~ 25 等共 25 個(gè)數(shù)字。訓(xùn)練時(shí),要求被測(cè)者用手指按 1 ~ 25 的順序依次指出其位置,同時(shí)誦讀出聲,施測(cè)者一旁記錄所用時(shí)間。數(shù)完 25 個(gè)數(shù)字所用時(shí)間越短,注意力水平越高。

讓我們一起用DFRobot行空板設(shè)計(jì)一個(gè)舒爾特方格小游戲來(lái)訓(xùn)練一下自己的注意力吧!

舒爾特方格小游戲

任務(wù)目標(biāo)

在屏幕上進(jìn)行舒爾特方格小游戲。

pYYBAGKYaoGASNxjAABLFuUG-3Y771.pngpoYBAGKYaoKAaLyFAABp-KdRNEs589.pngpYYBAGKYaoKAO0AkAAB8tz9rSPY425.png

知識(shí)點(diǎn)

1、學(xué)習(xí)使用pygame庫(kù)加載圖片的方法

2、學(xué)習(xí)使用pygame庫(kù)播放音效的方法

3、學(xué)習(xí)使用pygame庫(kù)實(shí)現(xiàn)鼠標(biāo)交互的方法

材料清單

硬件清單:

poYBAGKYaoKASo7QAABRDB7yxE0629.png

開源硬件行空板x1

pYYBAGKYaoKAXjpcAABrSUwd47w504.png

Type-C&Micro二合一USB線x1

poYBAGKYaoKARImNAAB0gDOFa8k316.png

USB小喇叭x1

軟件使用:Mind+編程軟件x1

知識(shí)儲(chǔ)備

1、pygame庫(kù)image模塊中的常用方法

pygame庫(kù)image模塊主要用于對(duì)于圖像的處理。在編程時(shí),可通過(guò)“模塊名.方法名()”的形式來(lái)實(shí)現(xiàn)功能。

(1)load()方法加載圖像文件

load()方法可以實(shí)現(xiàn)從指定位置加載圖像

screen.blit(pygame.image.load("pic/start-5.png"), (30, 190)) # 在(30,190)坐標(biāo)位顯示圖片start-5.png

其中,"pic/start-5.png",表示的是具體的圖像的路徑和文件名,這里指來(lái)自pic文件夾下名稱為start-5.png的圖像文件,在加載好圖像后,我們可通過(guò)blit方法將其顯示在指定的位置。

2、pygame庫(kù)music模塊中的常用方法

pygame庫(kù)music模塊在使用時(shí)與mixer模塊緊密相連,可實(shí)現(xiàn)對(duì)于音頻和聲音的控制。

(1)load()方法加載音頻文件

load()方法可以實(shí)現(xiàn)對(duì)于音頻文件的加載。

wavFileName = 'sounds/fire.wav' # 設(shè)置音效文件路徑

sndTrack = pygame.mixer.music.load(wavFileName) # 加載音效文件

其中,wavFileName指的是具體路徑下的音頻文件。sndTrack是個(gè)變量,用于存儲(chǔ)加載的音頻對(duì)象。

(2)play()方法播放音頻

play()方法可以實(shí)現(xiàn)對(duì)于加載后的音頻文件的播放。

pygame.mixer.music.play() # 播放音樂

3、pygame庫(kù)mouse模塊中的常用方法

pygame庫(kù)mouse模塊可以用來(lái)獲取鼠標(biāo)設(shè)備的當(dāng)前狀態(tài),這個(gè)游戲中我們通過(guò)觸摸屏幕來(lái)模擬鼠標(biāo)的控制。在編程時(shí),可通過(guò)“模塊名.方法名()”的形式來(lái)實(shí)現(xiàn)功能。

(1)get_pos()方法獲取鼠標(biāo)的位置

get_pos()方法可以實(shí)現(xiàn)對(duì)于鼠標(biāo)所在位置的x、y坐標(biāo)的獲取。

t_x, t_y = pygame.mouse.get_pos() # 獲取鼠標(biāo)的x和y坐標(biāo)位,存儲(chǔ)到變量t_x, t_y中

其中,t_x,和t_y是兩個(gè)變量,用來(lái)存儲(chǔ)獲取到的鼠標(biāo)所在的橫縱坐標(biāo)。

4、pygame庫(kù)中的鼠標(biāo)事件以及事件檢測(cè)

鼠標(biāo)是計(jì)算機(jī)最重要外接設(shè)備之一,同時(shí)它也是游戲玩家必不可少的工具之一,比如游戲中對(duì)于圖片的按下,松開等操作,這些都需要鼠標(biāo)來(lái)配合實(shí)現(xiàn)。
Pygame 提供了三個(gè)鼠標(biāo)事件,分別是鼠標(biāo)移動(dòng)(MOUSEMOTION)、鼠標(biāo)按下(MOUSEBUTTONDOWN)、鼠標(biāo)釋放(MOUSEBUTTONUP),不同事件類型對(duì)應(yīng)著不同的成員屬性。
而對(duì)于三個(gè)鼠標(biāo)事件,pygame都提供了一個(gè)pos 屬性,即相對(duì)于窗口左上角,鼠標(biāo)的當(dāng)前坐標(biāo)值(x,y)。

因此,要想實(shí)現(xiàn)鼠標(biāo)控制游戲的進(jìn)行,那么我們就需要先檢測(cè)事件,再對(duì)事件進(jìn)行判別。

if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠標(biāo)被釋放且橫縱坐標(biāo)在“開始游戲”圖片的范圍內(nèi)

其中,event.type表示事件的類型,pygame.MOUSEBUTTONUP表示鼠標(biāo)釋放事件, 30 <= t_x <= 200 and 190 <= t_y <= 250表示鼠標(biāo)的橫坐標(biāo)在30-300之間,縱坐標(biāo)在190-250之間。

5、什么是numpy庫(kù)及常見函數(shù)

Numpy是Python中的一個(gè)科學(xué)計(jì)算庫(kù),一般用于數(shù)組的處理。編程時(shí),通過(guò)“import numpy”導(dǎo)入庫(kù)后可采用“numpy.函數(shù)名()”的形式來(lái)實(shí)現(xiàn)功能。

(1)array()函數(shù)創(chuàng)建一個(gè)數(shù)組

通過(guò)array()函數(shù)我們創(chuàng)建一個(gè)數(shù)組。

Xpts = [0, 48, 96, 144, 192] # x坐標(biāo)

Ypts = [0, 48, 96, 144, 192] # y坐標(biāo)

ha = itertools.product(Xpts, Ypts) # 將x、y的坐標(biāo)進(jìn)行全排列,得到25組數(shù)據(jù)

haha = list(ha) # 通過(guò)list函數(shù)將全排列后的數(shù)據(jù)轉(zhuǎn)換為列表形式

'''得到:[(0, 0), (0, 48), (0, 96), (0, 144), (0, 192), (48, 0), (48, 48), (48, 96), (48, 144),

(48, 192), (96, 0), (96, 48), (96, 96), (96, 144), (96, 192), (144, 0), (144, 48), (144, 96),

(144, 144), (144, 192), (192, 0), (192, 48), (192, 96), (192, 144), (192, 192)]'''

map = np.array(haha) # 把列表中數(shù)據(jù)轉(zhuǎn)換為數(shù)組形式

這里,我們先創(chuàng)建了兩組列表Xpts和Ypts,分別存儲(chǔ)數(shù)據(jù)來(lái)表示x、y坐標(biāo)值,之后我們通過(guò)Python內(nèi)置的itertools庫(kù)中的product()函數(shù),將兩組列表中的數(shù)值進(jìn)行了全排列并將結(jié)果轉(zhuǎn)換為列表形式,最后我們通過(guò)numpy庫(kù)中的array()函數(shù)將其再轉(zhuǎn)換成數(shù)組形式,并存儲(chǔ)到變量map中。

6、time庫(kù)time()函數(shù)檢測(cè)當(dāng)前時(shí)間

time庫(kù)中的time()函數(shù)可以用來(lái)檢測(cè)時(shí)間并返回當(dāng)前時(shí)間的時(shí)間戳。

time_start = time.time() # 開始計(jì)時(shí)

time_end = time.time() # 結(jié)束計(jì)時(shí)

time_c = round(time_end - time_start, 1) # 計(jì)算運(yùn)行所花時(shí)間,保留1位小數(shù)

這里,我們先后通過(guò)time.time()記錄下的當(dāng)前的時(shí)間,之后將兩者進(jìn)行做差運(yùn)算,得到時(shí)間差。

動(dòng)手實(shí)踐

任務(wù)描述1:創(chuàng)建游戲窗口與開始界面

通過(guò)pygame庫(kù)創(chuàng)建一個(gè)游戲窗口并在其上顯示游戲開始界面。

1、硬件搭建

通過(guò)USB連接線將行空板連接到計(jì)算機(jī)

2、程序編寫

STEP1:創(chuàng)建與保存項(xiàng)目文件

啟動(dòng)Mind+,另存項(xiàng)目并命名為“007、舒爾特方格小游戲”。

STEP2:創(chuàng)建與保存Python文件

創(chuàng)建一個(gè)Python程序文件“main1.py”,雙擊打開。

STEP3:導(dǎo)入素材

在項(xiàng)目文件夾中導(dǎo)入兩個(gè)素材文件夾,包括圖片及音效。具體操作如下。

(1)將素材依次拖入項(xiàng)目文件夾中

Tips:素材下載鏈接可見附錄1。

pYYBAGKYaoKAIr0hAABFVcNp3Ig936.jpg

(2)拖入后可見

poYBAGKYaoOAf0aTAAA3li1x8kU453.jpg

STEP4:程序編寫

(1) 導(dǎo)入所需功能庫(kù)

在這個(gè)任務(wù)中,我們需要使用pygame庫(kù)來(lái)繪制游戲窗口,因此,我們須先導(dǎo)入它。

import pygame # 導(dǎo)入pygame庫(kù)

(2) 初始化游戲并創(chuàng)建指定尺寸的游戲窗口

在使用pygame進(jìn)行游戲時(shí),我們需先對(duì)其進(jìn)行初始化操作,之后,為了能和行空板的屏幕一致,我們創(chuàng)建一個(gè)大小為(240,320)的游戲窗口。

pygame.init() # 初始化pygamewidth =240 # 定義寬height=320 # 定義高size=(240,320) # 定義尺寸screen = pygame.display.set_mode(size) # 創(chuàng)建游戲窗口,尺寸為(240,320)

(3) 定義游戲開始頁(yè)面

創(chuàng)建好游戲窗口后,我們?cè)俣x一個(gè)游戲開始的頁(yè)面。在這開始頁(yè)面上,我們需要遍歷所有的事件,設(shè)定點(diǎn)擊關(guān)閉窗口后退出游戲的功能,同時(shí),在其上顯示一張“開始游戲”的背景圖。

# 定義開始頁(yè)面def start(start_page): while start_page: # 當(dāng)進(jìn)入開始頁(yè)面 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame screen.blit(pygame.image.load("pic/start-5.png"), (30, 190)) # 在(30,190)坐標(biāo)位顯示圖片start-5.png pygame.display.flip() # 更新全部顯示

(4) 顯示游戲開始頁(yè)面

之后,為了能使得開始頁(yè)面始終保持顯示,我們通過(guò)一個(gè)變量來(lái)記錄開始頁(yè)面的狀態(tài),并將其初始時(shí)的狀態(tài)設(shè)定為True,之后結(jié)合循環(huán)來(lái)永久顯示它。

start_page = True # 定義初始時(shí)開始頁(yè)面狀態(tài)為Truewhile True: # 循環(huán) start(start_page) # 啟用start函數(shù)

Tips:完整示例程序如下:

'''創(chuàng)建窗口和顯示開始界面'''import pygame # 導(dǎo)入pygame庫(kù) pygame.init() # 初始化pygamewidth =240 # 定義寬height=320 # 定義高size=(240,320) # 定義尺寸screen = pygame.display.set_mode(size) # 創(chuàng)建游戲窗口,尺寸為(240,320) # 定義開始頁(yè)面def start(start_page): while start_page: # 當(dāng)進(jìn)入開始頁(yè)面 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame screen.blit(pygame.image.load("pic/start-5.png"), (30, 190)) # 在(30,190)坐標(biāo)位顯示圖片start-5.png pygame.display.flip() # 更新全部顯示 start_page = True # 定義初始時(shí)開始頁(yè)面狀態(tài)為Truewhile True: # 循環(huán) start(start_page) # 啟用start函數(shù)

3、程序運(yùn)行

STEP1:遠(yuǎn)程連接行空板

STEP2:點(diǎn)擊右上方的運(yùn)行按鈕

STEP3:觀察效果

觀察行空板,可以發(fā)現(xiàn)行空板的屏幕上出現(xiàn)了“開始游戲”四個(gè)字,這就是我們?cè)O(shè)定的進(jìn)入游戲前的開始頁(yè)面。

pYYBAGKYaoOAWPGiAABFkPgxbyQ498.png

Tips:長(zhǎng)按行空板Home鍵5秒,可退出程序。

任務(wù)描述2:進(jìn)入游戲界面

上述的開始頁(yè)面始終是靜態(tài)的圖片,為了完善游戲,接下來(lái),我們將在其上添加動(dòng)態(tài)效果,使得將手指(鼠標(biāo))移動(dòng)至文字區(qū)域后內(nèi)容變成綠色,并且在點(diǎn)擊后進(jìn)入游戲界面。

1、程序編寫

STEP1:創(chuàng)建與保存項(xiàng)目文件

新建一個(gè)Python程序文件“main2.py”,雙擊打開。

Step2:程序編寫

(1)導(dǎo)入所需功能庫(kù)并創(chuàng)建游戲窗口

import pygame # 導(dǎo)入pygame庫(kù)import random # 導(dǎo)入random庫(kù)import numpy as np # 導(dǎo)入numpy庫(kù)import itertools # 導(dǎo)入itertools庫(kù) pygame.init() # 初始化pygamewidth =240 # 定義寬height=320 # 定義高size=(240,320) # 定義尺寸screen = pygame.display.set_mode(size) # 創(chuàng)建游戲窗口,尺寸為(240,320)

(2)設(shè)定圖片坐標(biāo)位

在這個(gè)游戲中,我們將按順序點(diǎn)擊25張帶有數(shù)字符號(hào)的圖片。因此,為了能將這25張數(shù)字圖片顯示在屏幕上,我們需要確定25個(gè)坐標(biāo)位。

這里,我們?cè)O(shè)定每張數(shù)字圖片的尺寸大小48*48像素,因此,在屏幕橫向上,正好可以顯示5張圖片,縱向上亦是每列5張。并且,每一列數(shù)字圖片的橫坐標(biāo)皆分別為48 的0-4倍,縱坐標(biāo)亦是如此。

因此在編程時(shí),我們可以通過(guò)將兩組[0,48,96,144,192]列表全排列,得到25組數(shù)據(jù),再將其最終以數(shù)組形式呈現(xiàn),來(lái)代表25張數(shù)字圖片的坐標(biāo)位。

# 設(shè)定圖片坐標(biāo)位Xpts = [0, 48, 96, 144, 192] # x坐標(biāo)Ypts = [0, 48, 96, 144, 192] # y坐標(biāo)#map = np.array(list(itertools.product(Xpts, Ypts))) # 25幅圖片坐標(biāo)ha = itertools.product(Xpts, Ypts) # 將x、y的坐標(biāo)進(jìn)行全排列,得到25組數(shù)據(jù)haha = list(ha) # 通過(guò)list函數(shù)將全排列后的數(shù)據(jù)轉(zhuǎn)換為列表形式'''得到:[(0, 0), (0, 48), (0, 96), (0, 144), (0, 192), (48, 0), (48, 48), (48, 96), (48, 144), (48, 192), (96, 0), (96, 48), (96, 96), (96, 144), (96, 192), (144, 0), (144, 48), (144, 96), (144, 144), (144, 192), (192, 0), (192, 48), (192, 96), (192, 144), (192, 192)]'''map = np.array(haha) # 把列表中數(shù)據(jù)轉(zhuǎn)換為數(shù)組形式

(3)定義準(zhǔn)備函數(shù),用于確定圖片

在確定好25張數(shù)字圖片的坐標(biāo)位后,如何才能確定要隨機(jī)顯示的圖片呢?

這里,我們采用一個(gè)小技巧,將25張初始時(shí)要顯示的數(shù)字圖片按順序命名為pic0.png-pic24.png,再將被點(diǎn)擊后要顯示的圖片命名為qic0.png-qic24.png。

這樣命名之后,我們可以通過(guò)相同的前綴名pic/qic+0至24不同的序號(hào)+png格式,來(lái)分別表示兩組圖片,每張圖片獨(dú)一無(wú)二,而這0-24的序號(hào)在編程時(shí),我們可以以列表的形式來(lái)表示。

poYBAGKYaoOAI2BTAAAdNQLbqG0187.jpg

因此,在這里,我們將創(chuàng)建一個(gè)列表,并將其中的元素隨機(jī)排序,以便在后續(xù)以此表示圖片名稱中的序號(hào)部分。

# 定義準(zhǔn)備函數(shù),用于確定圖片def ready(): global list1 # 定義一個(gè)全局變量list1 list1 = [[i] for i in range(25)] # 列表解析,根據(jù)一個(gè)列表的解析快速生成另一個(gè)列表 '''得到:[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24]]''' random.shuffle(list1) # 將列表中的所有元素隨機(jī)排序

(4)檢測(cè)鼠標(biāo)位置

接下來(lái),我們?cè)陂_始頁(yè)面中添加獲取鼠標(biāo)位置的功能,并設(shè)定當(dāng)手(鼠標(biāo))移動(dòng)到“開始游戲”這張圖片上后,切換另一張相同文字,不同顏色的圖片,使得看上去文本變換了顏色。

global t_x, t_y # 定義兩個(gè)全局變量t_x, t_y t_x, t_y = pygame.mouse.get_pos() # 獲取鼠標(biāo)的x和y坐標(biāo)位,存儲(chǔ)到變量t_x, t_y中 if 30 <= t_x <= 200 and 190 <= t_y <= 250: # 18*50 # 如果鼠標(biāo)移動(dòng)到“開始游戲”的圖片所在范圍內(nèi) screen.blit(pygame.image.load("pic/start-6.png"),(30, 190)) # 在(30,190)切換圖片為start-6.png if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠標(biāo)被釋放掉且移動(dòng)到“開始游戲”圖片的范圍內(nèi) start_page = False # 定義開始頁(yè)面狀態(tài)為False,退出開始頁(yè)面 game_page = True # 定義游戲頁(yè)面狀態(tài)為True,進(jìn)入游戲頁(yè)面 pygame.display.flip() # 更新全部顯示

(5)檢測(cè)鼠標(biāo)事件

接下來(lái),我們?cè)僭陂_始頁(yè)面中添加鼠標(biāo)檢測(cè)事件。并設(shè)定當(dāng)鼠標(biāo)被釋放且移動(dòng)到“開始游戲”圖片的范圍內(nèi)時(shí),進(jìn)入游戲頁(yè)面,同時(shí)退出開始頁(yè)面。

這里,我們通過(guò)兩個(gè)變量start_page和game_page來(lái)標(biāo)記開始頁(yè)面和游戲頁(yè)面的進(jìn)入與退出這兩個(gè)狀態(tài)。

if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠標(biāo)被釋放掉且移動(dòng)到“開始游戲”圖片的范圍內(nèi) start_page = False # 定義開始頁(yè)面狀態(tài)為False,退出開始頁(yè)面 game_page = True # 定義游戲頁(yè)面狀態(tài)為True,進(jìn)入游戲頁(yè)面 pygame.display.flip() # 更新全部顯示

(6)定義游戲界面

之后,我們?cè)俣x游戲界面,設(shè)定狀態(tài)為進(jìn)入后,則顯示25張初始時(shí)的數(shù)字圖片。這里的圖片我們通過(guò)前綴名+列表中的序號(hào)+png格式后綴來(lái)表示,圖片的坐標(biāo)則是以數(shù)組的形式表示。

同時(shí),再通過(guò)一個(gè)變量 pic_zero來(lái)記錄數(shù)字顯示的狀態(tài),1為待顯示,0為無(wú)需顯示。

# 定義游戲界面def gamePage(game_page): pic_zero = 1 # 出題界面狀態(tài),保證只刷出一次題目 while game_page: # 當(dāng)進(jìn)入游戲界面 while pic_zero: # 當(dāng)出題界面狀態(tài)為1 for i in range(25): # 循環(huán)25次 screen.blit(pygame.image.load("pic/pic" + str(*list1[i - 1]) + ".png"), map[i]) # 以map中數(shù)組為坐標(biāo),顯示指定的25個(gè)數(shù)字的初始圖片 pic_zero = 0 # 設(shè)定出題界面狀態(tài)為0(表示已顯示完所有25張數(shù)字的圖片) pygame.display.flip() # 更新全部顯示

(7)循環(huán)執(zhí)行

最后,我們?cè)O(shè)定初始時(shí)的start_page和game_page的狀態(tài)為True,并在循環(huán)中調(diào)用它們以便保存窗口一直顯示。

start_page = True # 定義初始開始頁(yè)面狀態(tài)為Truegame_page = True # 定義初始游戲頁(yè)面狀態(tài)為Truewhile True: # 循環(huán) ready() # 啟用ready函數(shù) start(start_page) # 啟用start函數(shù) gamePage(game_page) # 啟用gamePage函數(shù)

Tips:完整示例程序如下:

'''顯示游戲界面點(diǎn)擊開始游戲可進(jìn)入游戲界面'''import pygame # 導(dǎo)入pygame庫(kù)import random # 導(dǎo)入random庫(kù)import numpy as np # 導(dǎo)入numpy庫(kù)import itertools # 導(dǎo)入itertools庫(kù) pygame.init() # 初始化pygamewidth =240 # 定義寬height=320 # 定義高size=(240,320) # 定義尺寸screen = pygame.display.set_mode(size) # 創(chuàng)建游戲窗口,尺寸為(240,320) # 設(shè)定圖片坐標(biāo)位Xpts = [0, 48, 96, 144, 192] # x坐標(biāo)Ypts = [0, 48, 96, 144, 192] # y坐標(biāo)#map = np.array(list(itertools.product(Xpts, Ypts))) # 25幅圖片坐標(biāo)ha = itertools.product(Xpts, Ypts) # 將x、y的坐標(biāo)進(jìn)行全排列,得到25組數(shù)據(jù)haha = list(ha) # 通過(guò)list函數(shù)將全排列后的數(shù)據(jù)轉(zhuǎn)換為列表形式'''得到:[(0, 0), (0, 48), (0, 96), (0, 144), (0, 192), (48, 0), (48, 48), (48, 96), (48, 144), (48, 192), (96, 0), (96, 48), (96, 96), (96, 144), (96, 192), (144, 0), (144, 48), (144, 96), (144, 144), (144, 192), (192, 0), (192, 48), (192, 96), (192, 144), (192, 192)]'''map = np.array(haha) # 把列表中數(shù)據(jù)轉(zhuǎn)換為數(shù)組形式 # 定義準(zhǔn)備函數(shù),用于確定圖片def ready(): global list1 # 定義一個(gè)全局變量list1 list1 = [[i] for i in range(25)] # 列表解析,根據(jù)一個(gè)列表的解析快速生成另一個(gè)列表 '''得到:[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24]]''' random.shuffle(list1) # 將列表中的所有元素隨機(jī)排序 # 定義開始頁(yè)面def start(start_page): while start_page: # 當(dāng)進(jìn)入開始頁(yè)面 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame screen.blit(pygame.image.load("pic/start-5.png"), (30, 190)) # 在(30,190)顯示圖片start-5.png global t_x, t_y # 定義兩個(gè)全局變量t_x, t_y t_x, t_y = pygame.mouse.get_pos() # 獲取鼠標(biāo)的x和y坐標(biāo)位,存儲(chǔ)到變量t_x, t_y中 if 30 <= t_x <= 200 and 190 <= t_y <= 250: # 18*50 # 如果鼠標(biāo)移動(dòng)到“開始游戲”的圖片所在范圍內(nèi) screen.blit(pygame.image.load("pic/start-6.png"),(30, 190)) # 在(30,190)切換圖片為start-6.png if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠標(biāo)被釋放且移動(dòng)到“開始游戲”圖片的范圍內(nèi) start_page = False # 定義開始頁(yè)面狀態(tài)為False,退出開始頁(yè)面 game_page = True # 定義游戲頁(yè)面狀態(tài)為True,進(jìn)入游戲頁(yè)面 pygame.display.flip() # 更新全部顯示 # 定義游戲界面def gamePage(game_page): pic_zero = 1 # 出題界面狀態(tài),保證只刷出一次題目 while game_page: # 當(dāng)進(jìn)入游戲界面 while pic_zero: # 當(dāng)出題界面狀態(tài)為1 for i in range(25): # 循環(huán)25次 screen.blit(pygame.image.load("pic/pic" + str(*list1[i - 1]) + ".png"), map[i]) # 以map中數(shù)組為坐標(biāo),顯示指定的25個(gè)數(shù)字的初始圖片 pic_zero = 0 # 設(shè)定出題界面狀態(tài)為0(表示已顯示完所有25張數(shù)字的圖片) pygame.display.flip() # 更新全部顯示 start_page = True # 定義初始開始頁(yè)面狀態(tài)為Truegame_page = True # 定義初始游戲頁(yè)面狀態(tài)為Truewhile True: # 循環(huán) ready() # 啟用ready函數(shù) start(start_page) # 啟用start函數(shù) gamePage(game_page) # 啟用gamePage函數(shù)

2、程序運(yùn)行

STEP1:遠(yuǎn)程連接行空板

STEP2:運(yùn)行程序并觀察效果

點(diǎn)擊運(yùn)行后,觀察行空板,可以看到當(dāng)手指帶動(dòng)光標(biāo)移動(dòng)到“開始游戲”的圖標(biāo)上時(shí),文字由藍(lán)色變?yōu)榫G色,移開后又恢復(fù)藍(lán)色。而當(dāng)手指點(diǎn)擊綠色的“開始游戲”圖標(biāo)后,則進(jìn)入了游戲的界面,顯示出一組灰色隨機(jī)排序的1-25的數(shù)字圖片。

pYYBAGKYaoOAfkIfAABKL3IBxFg952.pngpYYBAGKYaoGASNxjAABLFuUG-3Y771.pngpoYBAGKYaoKAaLyFAABp-KdRNEs589.png

Tips:長(zhǎng)按行空板Home鍵5秒,可退出程序。

任務(wù)描述3:設(shè)定游戲機(jī)制

接下來(lái),我們將設(shè)定完整的游戲機(jī)制,實(shí)現(xiàn)當(dāng)按順序點(diǎn)擊數(shù)字圖片后,圖片切換顏色,同時(shí)記錄點(diǎn)擊完所需的時(shí)間,時(shí)間越短,注意力越集中。

1、程序編寫

STEP1:創(chuàng)建與保存項(xiàng)目文件

新建一個(gè)Python程序文件“main3.py”,雙擊打開。

STEP2:程序編寫

(1)添加音效和文字對(duì)象

這里,為了能進(jìn)一步優(yōu)化游戲效果,我們?cè)谏厦娉绦虻幕A(chǔ)上添加背景音效,當(dāng)未按順序點(diǎn)擊數(shù)字圖片時(shí),觸發(fā)背景音。同時(shí),我們創(chuàng)建一個(gè)字體對(duì)象,以便在后續(xù)顯示所消耗的時(shí)間。

# 載入音效wavFileName = 'sounds/fire.wav' # 設(shè)置音效文件路徑sndTrack = pygame.mixer.music.load(wavFileName) # 加載音效文件# 計(jì)時(shí)器文本準(zhǔn)備font = pygame.font.SysFont('Arial', 60) # 創(chuàng)建一個(gè)Font字體對(duì)象

(2)開始計(jì)時(shí)

為了能及時(shí)記錄時(shí)間,我們?cè)陂_始頁(yè)面的程序中,補(bǔ)充設(shè)定當(dāng)進(jìn)入游戲界面后,就開始記錄時(shí)間。同時(shí)為了確保只在游戲結(jié)束后顯示時(shí)間,這里我們給屏幕填充黑色。

global time_start # 定義開始計(jì)時(shí)的全局變量 screen.fill((0,0,0)) # 填充黑色 time_start = time.time() # 計(jì)時(shí),返回當(dāng)前時(shí)間的時(shí)間戳

(3)設(shè)定機(jī)制

接下里,我們?cè)谟螒蚪缑嫣砑訖C(jī)制,實(shí)現(xiàn)當(dāng)數(shù)字圖片被點(diǎn)擊后,在同一位置切換另一張相同數(shù)字不同顏色的圖片。

for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame for i in range(25): # 循環(huán)25次 # 如果鼠標(biāo)被釋放且在某一張數(shù)字圖片范圍內(nèi) if event.type == pygame.MOUSEBUTTONUP and map[i][0] <= event.pos[0] <= map[i][0] + 48 and map[i][1] <= event.pos[1] <= map[i][1] + 48: if int(*list1[i-1]) == zero: # 如果被點(diǎn)擊的是圖片列表中的第0張 screen.blit(pygame.image.load("pic/qic" + str(*list1[i-1]) + ".png"), map[i]) # 以map中數(shù)組為坐標(biāo),顯示指定的25個(gè)數(shù)字被點(diǎn)擊后的圖片 zero = zero + 1 # 數(shù)字+1 print(zero) # 打印數(shù)字

(4)顯示時(shí)間

之后,當(dāng)最后一張數(shù)字圖片25被點(diǎn)擊后,我們?cè)谄聊簧巷@示記錄的時(shí)間,這里,為了使文字顯示能居中對(duì)齊,我們先創(chuàng)建一個(gè)以給定位置為中心的文字填充矩形,隨后再在其上顯示時(shí)間文本。

if zero == 25: # 如果數(shù)字達(dá)到了25 time_end = time.time() # 結(jié)束計(jì)時(shí) time_c = round(time_end - time_start, 1) # 計(jì)算運(yùn)行所花時(shí)間,保留1位小數(shù) print('time cost:', int(time_c), 's') # 打印顯示所花時(shí)間,單位為秒 text = font.render(str(time_c) + 's', True, (0, 255, 0),(0, 0, 128)) # 繪制關(guān)于計(jì)時(shí)的文本,文本顏色為綠,背景顏色為藍(lán) text_rect = text.get_rect(center=(120, 290)) # 創(chuàng)建一個(gè)以給定位置(120,290)為中心的文字填充矩形 screen.blit(text,text_rect) # 在填充矩形上顯示時(shí)間文本

(5)重新開始游戲

當(dāng)一輪游戲結(jié)束后,我們?cè)O(shè)定再次顯示開始游戲的界面,以便重新開始。

if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 210 and 200 <= t_y <= 250: # 如果鼠標(biāo)被釋放且移動(dòng)到“開始游戲”圖片范圍內(nèi) start_page = True # 定義開始頁(yè)面狀態(tài)為True,進(jìn)入開始頁(yè)面 game_page = False # 定義游戲頁(yè)面狀態(tài)為False,退出游戲頁(yè)面

(6)循環(huán)調(diào)用

最后,我們補(bǔ)充添加音效,使得在未按順序點(diǎn)擊數(shù)字后,播放背景音。

pygame.mixer.music.play() # 錯(cuò)誤時(shí)播放音樂

Tips:完整示例程序如下:

'''設(shè)定游戲機(jī)制,完整舒爾特方格游戲按順序依次點(diǎn)擊1-25的圖片,計(jì)算時(shí)間'''import pygame # 導(dǎo)入pygame庫(kù)import random # 導(dǎo)入random庫(kù)import numpy as np # 導(dǎo)入numpy庫(kù)import itertools # 導(dǎo)入itertools庫(kù)import time # 導(dǎo)入time庫(kù) pygame.init() # 初始化pygamewidth =240 # 定義寬height=320 # 定義高size=(240,320) # 定義尺寸screen = pygame.display.set_mode(size) # 創(chuàng)建游戲窗口,尺寸為(240,320) # 載入音效wavFileName = 'sounds/fire.wav' # 設(shè)置音效文件路徑sndTrack = pygame.mixer.music.load(wavFileName) # 加載音效文件# 計(jì)時(shí)器文本準(zhǔn)備font = pygame.font.SysFont('Arial', 60) # 創(chuàng)建一個(gè)Font字體對(duì)象 # 設(shè)定圖片坐標(biāo)位Xpts = [0, 48, 96, 144, 192] # x坐標(biāo)Ypts = [0, 48, 96, 144, 192] # y坐標(biāo)#map = np.array(list(itertools.product(Xpts, Ypts))) # 25幅圖片坐標(biāo)ha = itertools.product(Xpts, Ypts) # 將x、y的坐標(biāo)進(jìn)行全排列,得到25組數(shù)據(jù)haha = list(ha) # 通過(guò)list函數(shù)將全排列后的數(shù)據(jù)轉(zhuǎn)換為列表形式'''得到:[(0, 0), (0, 48), (0, 96), (0, 144), (0, 192), (48, 0), (48, 48), (48, 96), (48, 144), (48, 192), (96, 0), (96, 48), (96, 96), (96, 144), (96, 192), (144, 0), (144, 48), (144, 96), (144, 144), (144, 192), (192, 0), (192, 48), (192, 96), (192, 144), (192, 192)]'''map = np.array(haha) # 把列表中數(shù)據(jù)轉(zhuǎn)換為數(shù)組形式 # 定義準(zhǔn)備函數(shù),用于確定圖片序號(hào)def ready(): global list1 # 定義一個(gè)全局變量list1 list1 = [[i] for i in range(25)] # 列表解析,根據(jù)一個(gè)列表的解析快速生成另一個(gè)列表 '''得到:[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24]]''' random.shuffle(list1) # 將列表中的所有元素隨機(jī)排序 # 定義開始界面def start(start_page): while start_page: # 當(dāng)進(jìn)入開始頁(yè)面 for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame screen.blit(pygame.image.load("pic/start-5.png"), (30, 190)) # 在(30,190)顯示圖片start-5.png global t_x, t_y # 定義兩個(gè)全局變量t_x, t_y t_x, t_y = pygame.mouse.get_pos() # 獲取鼠標(biāo)的x和y坐標(biāo)位,存儲(chǔ)到變量t_x, t_y中 if 30 <= t_x <= 200 and 190 <= t_y <= 250: # 18*50 # 如果鼠標(biāo)移動(dòng)到“開始游戲”的圖片范圍內(nèi) screen.blit(pygame.image.load("pic/start-6.png"),(30, 190)) # 在(30,190)切換圖片為start-6.png if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 200 and 190 <= t_y <= 250: # 如果鼠標(biāo)被釋放且橫縱坐標(biāo)在“開始游戲”圖片的范圍內(nèi) start_page = False # 定義開始頁(yè)面狀態(tài)為False,退出開始頁(yè)面 game_page = True # 定義游戲頁(yè)面狀態(tài)為True,進(jìn)入游戲頁(yè)面 global time_start # 定義開始計(jì)時(shí)的全局變量 screen.fill((0,0,0)) # 填充黑色 time_start = time.time() # 計(jì)時(shí),返回當(dāng)前時(shí)間的時(shí)間戳 pygame.display.flip() # 更新全部顯示 # 定義游戲界面def gamePage(game_page): zero = 0 # 此處添加了一個(gè)變量用來(lái)確保從最小的數(shù)字開始變 pic_zero = 1 # 出題界面狀態(tài),保證只刷出一次題目 while game_page: # 當(dāng)進(jìn)入游戲界面 while pic_zero: # 當(dāng)出題界面狀態(tài)為1 for i in range(25): # 循環(huán)25次 screen.blit(pygame.image.load("pic/pic" + str(*list1[i - 1]) + ".png"), map[i]) # 以map中數(shù)組為坐標(biāo),顯示指定的25個(gè)數(shù)字的初始圖片 pic_zero = 0 # 設(shè)定出題界面狀態(tài)為0(表示已顯示完所有25張數(shù)字的圖片) for event in pygame.event.get(): # 遍歷所有事件 if event.type == pygame.QUIT: # 如果單擊關(guān)閉窗口,則退出 pygame.quit() # 退出pygame for i in range(25): # 循環(huán)25次 # 如果鼠標(biāo)被釋放且在某一張數(shù)字圖片范圍內(nèi) if event.type == pygame.MOUSEBUTTONUP and map[i][0] <= event.pos[0] <= map[i][0] + 48 and map[i][1] <= event.pos[1] <= map[i][1] + 48: if int(*list1[i-1]) == zero: # 如果被點(diǎn)擊的是圖片列表中的第0張 screen.blit(pygame.image.load("pic/qic" + str(*list1[i-1]) + ".png"), map[i]) # 以map中數(shù)組為坐標(biāo),顯示指定的25個(gè)數(shù)字被點(diǎn)擊后的圖片 zero = zero + 1 # 數(shù)字+1 print(zero) # 打印數(shù)字 if zero == 25: # 如果數(shù)字達(dá)到了25 time_end = time.time() # 結(jié)束計(jì)時(shí) time_c = round(time_end - time_start, 1) # 計(jì)算運(yùn)行所花時(shí)間,保留1位小數(shù) print('time cost:', int(time_c), 's') # 打印顯示所花時(shí)間,單位為秒 text = font.render(str(time_c) + 's', True, (0, 255, 0),(0, 0, 128)) # 繪制關(guān)于計(jì)時(shí)的文本,文本顏色為綠,背景顏色為藍(lán) text_rect = text.get_rect(center=(120, 290)) # 創(chuàng)建一個(gè)以給定位置(120,290)為中心的文字填充矩形 screen.blit(text,text_rect) # 在填充矩形上顯示時(shí)間文本 #screen.blit(text, (40, 250)) # 在窗口的(40,250)位置顯示時(shí)間文本 if event.type == pygame.MOUSEBUTTONUP and 30 <= t_x <= 210 and 200 <= t_y <= 250: # 如果鼠標(biāo)被釋放且移動(dòng)到“開始游戲”圖片范圍內(nèi) start_page = True # 定義開始頁(yè)面狀態(tài)為True,進(jìn)入開始頁(yè)面 game_page = False # 定義游戲頁(yè)面狀態(tài)為False,退出游戲頁(yè)面 pygame.display.flip() # 更新全部顯示 else: pygame.mixer.music.play() # 錯(cuò)誤時(shí)播放音樂 pygame.display.flip() # 更新全部顯示 start_page = True # 定義初始開始頁(yè)面狀態(tài)為Truegame_page = True # 定義初始游戲頁(yè)面狀態(tài)為Truewhile True: # 循環(huán) ready() # 啟用ready函數(shù) start(start_page) # 啟用start函數(shù) gamePage(game_page) # 啟用gamePage函數(shù)

2、程序運(yùn)行

STEP1:遠(yuǎn)程連接行空板

STEP2:連接USB小喇叭

將小喇叭連接在行空板的側(cè)邊USB口上。

STEP3:運(yùn)行程序并觀察效果

點(diǎn)擊運(yùn)行后,觀察行空板,當(dāng)手指點(diǎn)擊綠色的“開始游戲”圖標(biāo)后,則進(jìn)入了游戲的界面,之后按順序點(diǎn)擊數(shù)字圖片,被點(diǎn)擊的數(shù)字變成了粉紅色,而當(dāng)我們未能按順序點(diǎn)擊時(shí),小喇叭播放出了背景音。

并且,當(dāng)我們結(jié)束一次游戲后,可在屏幕上再點(diǎn)擊一下,顯示出“開始游戲”的字樣后又可以繼續(xù)進(jìn)行游戲啦。

pYYBAGKYaoGASNxjAABLFuUG-3Y771.png

行空板游戲運(yùn)行效果

poYBAGKYaoKAaLyFAABp-KdRNEs589.png

行空板游戲運(yùn)行效果

pYYBAGKYaoKAO0AkAAB8tz9rSPY425.png

行空板游戲運(yùn)行效果

挑戰(zhàn)自我

1、和自己比一比,看看連續(xù)三次游戲,需要花費(fèi)多少時(shí)間吧!

2、自己從網(wǎng)上下載一首音樂,作為背景音添加進(jìn)來(lái)吧,想一想,程序該怎么調(diào)整呢?

更多行空板Python入門教程請(qǐng)關(guān)注“蘑菇云創(chuàng)客”公眾號(hào)。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 開源硬件
    +關(guān)注

    關(guān)注

    8

    文章

    204

    瀏覽量

    29712
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4774

    瀏覽量

    84386
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    博世第七季“數(shù)據(jù)時(shí)代”活動(dòng)圓滿結(jié)束

    博世汽車電子事業(yè)部中國(guó)區(qū)第七季“數(shù)據(jù)時(shí)代”活動(dòng)于2024年10月30日成功舉辦!
    的頭像 發(fā)表于 10-31 14:07 ?153次閱讀

    SHUREPGX2無(wú)線話筒手持發(fā)射器原理圖

    SHURE ?PGX2無(wú)線話筒手持發(fā)射器原理圖附印制
    發(fā)表于 10-14 11:40 ?3次下載

    SHURPGX4無(wú)線話筒接收機(jī)原理圖

    SHURE ?PGX4無(wú)線話筒接收機(jī)原理圖附印制
    發(fā)表于 10-12 14:57 ?0次下載

    SLX4無(wú)線話筒接收機(jī)原理圖:二次變頻超外差部分

    SLX4無(wú)線話筒接收機(jī)110MHz變10.7MHz二次變頻超外差部分實(shí)測(cè)原理圖
    發(fā)表于 09-29 11:18 ?21次下載

    音質(zhì)與信號(hào)的穩(wěn)定性對(duì)比:、森海塞爾與AMSaudio的終極測(cè)評(píng)

    在無(wú)線話筒領(lǐng)域,和森海塞爾一直是頂尖音質(zhì)與穩(wěn)定性的代表。然而,AMSaudio作為一個(gè)不斷崛起的品牌,憑借其高性價(jià)比和創(chuàng)新技術(shù),逐漸成為市場(chǎng)中的有力競(jìng)爭(zhēng)者。本文將從音質(zhì)、信號(hào)穩(wěn)定性和抗干擾能力
    的頭像 發(fā)表于 09-29 10:51 ?476次閱讀

    合科泰榮獲第七屆“藍(lán)點(diǎn)獎(jiǎng)”國(guó)際影響力品牌獎(jiǎng)

    2024電子信息產(chǎn)業(yè)新質(zhì)生產(chǎn)力交流大會(huì)暨第七屆“藍(lán)點(diǎn)獎(jiǎng)”頒獎(jiǎng)盛典在深圳隆重舉行,大會(huì)匯聚了來(lái)自政府、學(xué)術(shù)界、產(chǎn)業(yè)界及企業(yè)界近600位嘉賓。合科泰憑借其優(yōu)秀的創(chuàng)新及產(chǎn)品服務(wù)能力榮獲第七屆“藍(lán)點(diǎn)獎(jiǎng)”國(guó)際
    的頭像 發(fā)表于 09-13 09:24 ?460次閱讀

    晶發(fā)電子榮獲第七屆“藍(lán)點(diǎn)獎(jiǎng)”誠(chéng)信企業(yè)榮譽(yù)!

    2024年5月29日,由深圳市電子商會(huì),中小企業(yè)公共服務(wù)平臺(tái)主辦的2024電子信息產(chǎn)業(yè)新質(zhì)生產(chǎn)力交流大會(huì)暨第七屆“藍(lán)點(diǎn)獎(jiǎng)”頒獎(jiǎng)盛典,在深圳市龍華區(qū)鉑曼酒店成功舉行。深圳市電子商會(huì)于2015年發(fā)起
    的頭像 發(fā)表于 05-31 08:01 ?366次閱讀
    晶發(fā)電子榮獲<b class='flag-5'>第七</b>屆“藍(lán)點(diǎn)獎(jiǎng)”誠(chéng)信企業(yè)榮譽(yù)!

    星際飛船駕駛艙模擬器、創(chuàng)意數(shù)字時(shí)鐘、智能騎行氣象助手

    。來(lái)源:<span>https://www.instructables.com/Geneva-Digital-Clock/</span>智能
    發(fā)表于 03-22 10:59

    【尋跡智】2024年第七屆線纜產(chǎn)業(yè)線下交流會(huì)圓滿落幕!

    尋跡智機(jī)器人公司作為AMR搬運(yùn)機(jī)器人廠家受邀參加3月11日-13日在浙江杭州舉辦的“2024(第七屆)中國(guó)線纜產(chǎn)業(yè)創(chuàng)新材料及技術(shù)峰會(huì)”,現(xiàn)場(chǎng)聚集了線纜產(chǎn)業(yè)上下游相關(guān)企業(yè),圍繞中國(guó)線纜產(chǎn)業(yè)發(fā)展等核心話題,開展多維度交流與合作,助力中國(guó)線纜產(chǎn)業(yè)創(chuàng)新材料產(chǎn)業(yè)發(fā)展。
    的頭像 發(fā)表于 03-14 14:19 ?265次閱讀
    【尋跡智<b class='flag-5'>行</b>】2024年<b class='flag-5'>第七</b>屆線纜產(chǎn)業(yè)線下交流會(huì)圓滿落幕!

    allegro快速入門教程

    電子發(fā)燒友網(wǎng)站提供《allegro快速入門教程.pdf》資料免費(fèi)下載
    發(fā)表于 02-29 09:32 ?68次下載

    讓“聾人”看到聲音 —“AI助聽器”

    ,包括弱聽、重聽、老化聾等。因?yàn)楦鞣N不方便讓其在這個(gè)世界上生活極為不方便。比如有人敲門,水龍頭忘關(guān)、孩子在臥室里啼哭,可是“聽障人”他們聽不見。利用人工智能,讓模型學(xué)習(xí)各種聲音,使用開源硬件-采集聲音,通
    的頭像 發(fā)表于 01-12 13:12 ?383次閱讀

    ad9942 Hcounter在VD_X下降沿的后第七個(gè)cli上升沿置0,這里的作用是是什么?

    問(wèn)題1 如下圖,Hcounter 在VD_X下降沿的后第七個(gè)cli上升沿置0,這里的作用是是什么,為什么在第七個(gè)位置置0?Hcounter 在ad9942內(nèi)部那些信號(hào)或者序列會(huì)使用到? 有沒有VD
    發(fā)表于 12-21 06:08

    python如何定義二維數(shù)組

    Python中,可以通過(guò)使用列表嵌套的方式來(lái)定義二維數(shù)組。具體步驟如下: Step 1: 創(chuàng)建一個(gè)的二維列表 要?jiǎng)?chuàng)建一個(gè)的二維數(shù)組,首先需要定義數(shù)組的行數(shù)和列數(shù)。我們可以使用兩
    的頭像 發(fā)表于 11-21 15:12 ?1659次閱讀

    C語(yǔ)言小游戲源碼大放送

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言小游戲源碼大放送.rar》資料免費(fèi)下載
    發(fā)表于 11-21 10:36 ?1次下載
    C語(yǔ)言<b class='flag-5'>小游戲</b>源碼大放送

    C語(yǔ)言編程入門教程

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言編程入門教程.rar》資料免費(fèi)下載
    發(fā)表于 11-20 10:23 ?8次下載
    C語(yǔ)言編程<b class='flag-5'>入門教程</b>