Day19_pygame和多線程

===游戲中的事件===

1.鼠標(biāo)相關(guān)的事件

??MOUSEBUTTONDOWN - 鼠標(biāo)按下
??MOUSEBUTTONUP - 鼠標(biāo)彈起
??MOUSEMOTION - 鼠標(biāo)移動

??鼠標(biāo)事件要關(guān)注事件發(fā)生的位置: event.pos - 鼠標(biāo)的坐標(biāo),元祖

# ===============鼠標(biāo)事件==================
elif event.type == pygame.MOUSEBUTTONDOWN:
    # 鼠標(biāo)按下要做什么,就將代碼寫這個(gè)if語句中
    print('鼠標(biāo)按下', event.pos)
    # pygame.draw.circle(window, Color.random_color(), event.pos, randint(10, 20))
    # pygame.display.update()
    is_move = True
elif event.type == pygame.MOUSEBUTTONUP:
    # 鼠標(biāo)彈起要做什么,就將代碼寫這個(gè)if語句中
    print('鼠標(biāo)彈起')
    is_move = False
elif event.type == pygame.MOUSEMOTION:
    # 鼠標(biāo)移動要做什么, 就將代碼寫這個(gè)if語句中
    if is_move:
        pygame.draw.circle(window, Color.random_color(), event.pos, 20)
        pygame.display.update()
        print('鼠標(biāo)移動')
2.鍵盤事件

??KEYDOWN - 鍵盤按下
??KEYUP - 鍵盤彈起

??鍵盤事件要關(guān)注哪個(gè)鍵被按了:event.key - 按鍵對應(yīng)的字符的編碼, 數(shù)字

# ================鍵盤事件=================
if event.type == pygame.KEYDOWN:
    print('按鍵被按下')
    print(event.key, chr(event.key))
elif event.type == pygame.KEYUP:
    print('按鍵彈起!')

===子線程對象===

??默認(rèn)情況下,一個(gè)進(jìn)程有且只有一個(gè)線程,這個(gè)線程叫主線程
??threading模塊中的Thread類就是線程類,這個(gè)類的對象就是線程對象,一個(gè)線程對象對應(yīng)一個(gè)子線程。
??(需要一個(gè)子線程就創(chuàng)建一個(gè)Thread類的對象)

Thread(target,args) - 創(chuàng)建子線程對象

??說明:
??target - Function,需要傳一個(gè)函數(shù)(這個(gè)函數(shù)中的內(nèi)容會在子線程中執(zhí)行)
??args - 元祖,target對應(yīng)的函數(shù)的參數(shù)
??當(dāng)通過創(chuàng)建好的子線程對象調(diào)用start方法的時(shí)候,會自動在子線程中調(diào)用target對應(yīng)的函數(shù), 并且將args中值作為實(shí)參

# python多線程技術(shù)對應(yīng)的模塊
import threading

# 創(chuàng)建線程對象
t1 = threading.Thread(target=download, args=('槍王之王.mp4',))
t2 = threading.Thread(target=download, args=('開國大典.mp4',))
t3 = threading.Thread(target=download, args=('黃金國.mp4',))

# 開始執(zhí)行t1對應(yīng)的子線程中的任務(wù)(實(shí)質(zhì)就是在子線程中調(diào)用target對應(yīng)的函數(shù))
t1.start()
t2.start()
t3.start()
2.Thread子類

??可以通過寫一個(gè)類繼承Thread類,來創(chuàng)建屬于自己的線程類。
??1.聲明類繼承Thread
??2.重寫run方法。這個(gè)方法中的任務(wù)就是需要在子線程中執(zhí)行的任務(wù)
??3.需要線程對象的時(shí)候,創(chuàng)建當(dāng)前聲明的類的對象;然后通過start方法在子線程中去執(zhí)行run方法中的任務(wù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,257評論 0 23
  • """author = drh""" if name == 'main':main() """author = d...
    LittleBear_6c91閱讀 413評論 0 1
  • 游戲中的事件1、 鼠標(biāo)相關(guān)的事件鼠標(biāo)事件要關(guān)注事件發(fā)生的位置:event.pos2.鍵盤事件鍵盤事件要關(guān)注哪個(gè)鍵被...
    _最美不是下雨天_閱讀 1,430評論 0 0
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念,程序并不能單獨(dú)運(yùn)行,只有...
    go以恒閱讀 1,793評論 0 6
  • 這是個(gè)嚴(yán)冬的早晨,玻璃窗上結(jié)滿了厚厚的冰花,剛潑出去的洗臉?biāo)徽Q酃Ψ蚓蛢龅孟袷瘔K那么堅(jiān)硬。屋外,房上、樹上、地...
    保密都被占用了不是吧閱讀 151評論 0 0

友情鏈接更多精彩內(nèi)容