亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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


class Hero(BasePlane):
  """定義我方飛機類"""
  def __init__(self, screen, enemy_temp):
    BasePlane.__init__(self, 140, 488, screen, "./spritesheets/hero_fly_1.png") # 繼承飛機基類,這里不用管
    self.enemy = enemy_temp
     # 設置上下左右四個屬性
    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):
  """控制鍵盤的函數"""
  for event in pygame.event.get():
    # 判斷是否是點擊了退出按鈕
    if event.type == QUIT:
      print("exit")
      exit()
    # 在按下鍵盤時,設置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() # 這里應該是飛機.顯示子彈方法()
    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)建一個窗口,用來顯示內容
  screen = pygame.display.set_mode((320, 568), 0, 32)
  # 2.創(chuàng)建一個跟窗口大小一致的圖片,用來填充當背景
  background = pygame.image.load("./spritesheets/background_2.png")
  enemy = Enemy(screen)
  hero = Hero(screen, enemy) # 創(chuàng)建我方飛機英雄對象
  while True:
    # 設定需要顯示的圖在窗口中哪個位置顯示
    screen.blit(background, (0, 0))
    # 我方飛機英雄顯示
    hero.display()
    # 敵方飛機顯示
    enemy.display()
    enemy.move()
    enemy.shoot()
    # 獲取事件,比如按鍵等
    key_control(hero)
    hero.move()
    # 更新需要顯示的內容
    pygame.display.update()
    time.sleep(0.01)


if __name__ == '__main__':
  main()

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

相關文章

  • python實現(xiàn)基于兩張圖片生成圓角圖標效果的方法

    python實現(xiàn)基于兩張圖片生成圓角圖標效果的方法

    這篇文章主要介紹了python實現(xiàn)基于兩張圖片生成圓角圖標效果的方法,實例分析了Python使用pil模塊進行圖片處理的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python使用gRPC實現(xiàn)數據分析能力的共享

    Python使用gRPC實現(xiàn)數據分析能力的共享

    gRPC是一個高性能、開源、通用的遠程過程調用(RPC)框架,由Google推出,本文主要介紹了Python如何使用gRPC實現(xiàn)數據分析能力的共享,感興趣的可以了解下
    2024-02-02
  • pandas中DataFrame的merge操作的實現(xiàn)

    pandas中DataFrame的merge操作的實現(xiàn)

    本文主要介紹了pandas中DataFrame的merge操作的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Pytest+request+Allure實現(xiàn)接口自動化框架

    Pytest+request+Allure實現(xiàn)接口自動化框架

    接口自動化是指模擬程序接口層面的自動化,由于接口不易變更,維護成本更小,所以深受各大公司的喜愛,本文主要介紹了Pytest+request+Allure實現(xiàn)接口自動化框架,感興趣的可以了解一下
    2021-07-07
  • OpenCV實現(xiàn)常見的四種圖像幾何變換

    OpenCV實現(xiàn)常見的四種圖像幾何變換

    這篇文章主要介紹了利用OpenCV實現(xiàn)的四種圖像幾何變換:縮放、翻轉、仿射變換及透視。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編學習一下
    2022-04-04
  • 解決pytorch讀取自制數據集出現(xiàn)過的問題

    解決pytorch讀取自制數據集出現(xiàn)過的問題

    這篇文章主要介紹了解決pytorch讀取自制數據集出現(xiàn)過的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python用turtle庫繪畫圣誕樹

    python用turtle庫繪畫圣誕樹

    大家好,本篇文章主要講的是python用turtle庫繪畫圣誕樹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 實例講解Python爬取網頁數據

    實例講解Python爬取網頁數據

    這篇文章給大家通過實例講解了Python爬取網頁數據的步驟以及操作過程,有興趣的朋友跟著學習下吧。
    2018-07-07
  • Python集合union()函數使用實例詳解

    Python集合union()函數使用實例詳解

    union()方法的工作原理是:返回多個集合(集合的數量大于等于2)的并集,即結果集合包含了所有被合并集合中的所有元素,因為集合中的元素不可重復,所以各個集合中重復的元素在結果集合中只會出現(xiàn)一次,本文將簡單介紹一下Python union()函數使用方法
    2023-07-07
  • 基于python中的TCP及UDP(詳解)

    基于python中的TCP及UDP(詳解)

    下面小編就為大家?guī)硪黄趐ython中的TCP及UDP(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助
    2017-11-11

最新評論