最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python按鍵按住不放持續(xù)響應(yīng)的實例代碼

 更新時間:2019年07月17日 11:51:31   作者:Ya呼  
今天小編就為大家分享一篇python按鍵按住不放持續(xù)響應(yīng)的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在學(xué)習(xí)飛機(jī)大戰(zhàn)(我也不知道為什么都拿這個練手),飛機(jī)左右控制都是按鍵按一次移動一次,不能按住一個鍵后持續(xù)移動,離開后停止移動。

為了解決這個,查看了參考手冊,說讓用pygame.key.set_repeat() 方法,奈何我剛開始學(xué)也看不太明白,只能看懂一些。并且看別人的代碼也比較費勁,畢竟不是自己的邏輯,得看一會兒,最后還是自己想了一個辦法,用flag標(biāo)簽:

大體思路是這樣的,比如向左持續(xù)移動,先在hero定一個屬性標(biāo)簽設(shè)置布爾值為False,然后定義移動方法,在為真時,移動;再然后定義鍵盤的事件,當(dāng)按下鍵盤時,標(biāo)簽為真,當(dāng)抬起鍵盤時,設(shè)置為False。最后再while循環(huán)里執(zhí)行這個移動方法和鍵盤函數(shù)。具體的代碼部分舉例為:(并不是全部代碼,只是實現(xiàn)這個功能的核心代碼),主要看Hero 類里的__init__方法里的四個屬性以及move方法;key_control函數(shù)以及在main函數(shù)里的while循環(huán)里的 key_control(hero) 以及hero.move()。

import pygame
import time
from pygame.locals import * # 用來檢測事件,比如鍵盤按鍵操作


class Hero(BasePlane):
  """定義我方飛機(jī)類"""
  def __init__(self, screen, enemy_temp):
    BasePlane.__init__(self, 140, 488, screen, "./spritesheets/hero_fly_1.png") # 繼承飛機(jī)基類,這里不用管
    self.enemy = enemy_temp
     # 設(shè)置上下左右四個屬性
    self.key_right_status = False
    self.key_left_status = False
    self.key_up_status = False
    self.key_down_status = False

   # 以下方法是控制上下左右移動
  def move(self):
    if self.key_right_status:
      self.x += 3
    if self.key_left_status:
      self.x -= 3
    if self.key_down_status:
      self.y += 3
    if self.key_up_status:
      self.y -= 3
def key_control(hero_temp):
  """控制鍵盤的函數(shù)"""
  for event in pygame.event.get():
    # 判斷是否是點擊了退出按鈕
    if event.type == QUIT:
      print("exit")
      exit()
    # 在按下鍵盤時,設(shè)置hero的屬性為True
    elif event.type == KEYDOWN:
      if event.key == K_a or event.key == K_LEFT:
        hero_temp.key_left_status = True 
      elif event.key == K_d or event.key == K_RIGHT:
        hero_temp.key_right_status = True
      elif event.key == K_w or event.key == K_UP:
        hero_temp.key_up_status = True
      elif event.key == K_s or event.key == K_DOWN:
        hero_temp.key_down_status = True
      elif event.key == K_SPACE:
        hero_temp.shoot() # 這里應(yīng)該是飛機(jī).顯示子彈方法()
    elif event.type == KEYUP:
      if event.key == K_a or event.key == K_LEFT:
        hero_temp.key_left_status = False
        # 檢測按鍵是否是d或者方向鍵right
      elif event.key == K_d or event.key == K_RIGHT:
        hero_temp.key_right_status = False
      elif event.key == K_w or event.key == K_UP:
        hero_temp.key_up_status = False
      elif event.key == K_s or event.key == K_DOWN:
        hero_temp.key_down_status = False
def main():
  # 1.創(chuàng)建一個窗口,用來顯示內(nèi)容
  screen = pygame.display.set_mode((320, 568), 0, 32)
  # 2.創(chuàng)建一個跟窗口大小一致的圖片,用來填充當(dāng)背景
  background = pygame.image.load("./spritesheets/background_2.png")
  enemy = Enemy(screen)
  hero = Hero(screen, enemy) # 創(chuàng)建我方飛機(jī)英雄對象
  while True:
    # 設(shè)定需要顯示的圖在窗口中哪個位置顯示
    screen.blit(background, (0, 0))
    # 我方飛機(jī)英雄顯示
    hero.display()
    # 敵方飛機(jī)顯示
    enemy.display()
    enemy.move()
    enemy.shoot()
    # 獲取事件,比如按鍵等
    key_control(hero)
    hero.move()
    # 更新需要顯示的內(nèi)容
    pygame.display.update()
    time.sleep(0.01)


if __name__ == '__main__':
  main()

以上這篇python按鍵按住不放持續(xù)響應(yīng)的實例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何利用Python 進(jìn)行邊緣檢測

    如何利用Python 進(jìn)行邊緣檢測

    本文主要介紹了關(guān)于邊緣檢測的知識,包括邊緣檢測的理論以及如何使用 Python 實現(xiàn)邊緣檢測,希望對您的學(xué)習(xí)有所幫助。
    2020-10-10
  • 在Python中獲取操作系統(tǒng)的進(jìn)程信息

    在Python中獲取操作系統(tǒng)的進(jìn)程信息

    今天小編就為大家分享一篇在Python中獲取操作系統(tǒng)的進(jìn)程信息,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Django admin 實現(xiàn)search_fields精確查詢實例

    Django admin 實現(xiàn)search_fields精確查詢實例

    這篇文章主要介紹了Django admin 實現(xiàn)search_fields精確查詢實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • drf-router和authenticate認(rèn)證源碼分析

    drf-router和authenticate認(rèn)證源碼分析

    在 Rest Framework 中提供了兩個 router , 可以幫助我們快速的實現(xiàn)路由的自動生成,本文通過實例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • python神經(jīng)網(wǎng)絡(luò)VGG16模型復(fù)現(xiàn)及其如何預(yù)測詳解

    python神經(jīng)網(wǎng)絡(luò)VGG16模型復(fù)現(xiàn)及其如何預(yù)測詳解

    這篇文章主要為大家介紹了VGG16模型的復(fù)現(xiàn)及其詳解(包含如何預(yù)測),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例

    這篇文章主要介紹了ITK 實現(xiàn)多張圖像轉(zhuǎn)成單個nii.gz或mha文件案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 使用Python?文件讀取的多種方式(四種方式)

    使用Python?文件讀取的多種方式(四種方式)

    這篇文章主要介紹了Python?文件讀取的4種方式,主要有直接打開就讀方式,用read()打開,用readines()以及用readline()方式,每種方式通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Python郵箱API發(fā)送郵件的方法和步驟

    Python郵箱API發(fā)送郵件的方法和步驟

    Python是一種功能強(qiáng)大的編程語言,可以用來發(fā)送電子郵件,使用Python發(fā)送郵件可以通過郵箱API來實現(xiàn),aoksend將介紹使用Python郵箱API發(fā)送郵件的方法和步驟,需要的朋友可以參考下
    2024-04-04
  • Pygame Surface創(chuàng)建圖像的實現(xiàn)

    Pygame Surface創(chuàng)建圖像的實現(xiàn)

    本文主要介紹了Pygame Surface創(chuàng)建圖像的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 教你如何在Django 1.6中正確使用 Signal

    教你如何在Django 1.6中正確使用 Signal

    因為新的django開發(fā)人員得知signal之后, 往往會很高興去使用它. 他們在能使用signal的地方就使用signal, 并且這是他們覺得自己是django專家一樣. 然而, 像這樣編碼一段時間后, django項目就會變得異常復(fù)雜, 許多內(nèi)容都糾結(jié)在一起無法解開.
    2014-06-06

最新評論

武汉市| 遂宁市| 桐乡市| 清河县| 太谷县| 靖西县| 丹巴县| 开阳县| 左贡县| 达州市| 沙雅县| 苗栗市| 九江市| 胶南市| 河间市| 迭部县| 芦溪县| 四平市| 南宁市| 扶绥县| 博湖县| 漾濞| 邹城市| 娄烦县| 科技| 曲松县| 兴业县| 巴塘县| 镇沅| 安宁市| 英山县| 万山特区| 塔城市| 盈江县| 澄迈县| 合水县| 茶陵县| 南汇区| 周宁县| 万盛区| 天等县|