竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

您現在的位置是:首頁 » python編程資訊

資訊內容

用python和pygame游戲編程入門-控制角色移動

極客小將2020-10-30-
如何使用鍵盤事件控制角色移動,解決只能按一下動一下的問題,在鍵盤一直按下的狀態,角色一直移動。

pygame游戲編程入門控制角色移動

在上一節中我們知道了事件,以及如何捕捉鍵盤事件進行響應,本屆我們結合第一節何上一節的內容,做一個用鍵盤控制角色移動的功能,代碼如下:

#!/usr/bin/env python
#指定圖像文件名稱
background_image_filename = './img/Underwater.png'
mouse_image_filename = './img/octopus.png'
#導入pygame庫
import pygame
#導入一些常用的函數和常量
from pygame.locals import *
#向sys模塊借一個exit函數用來退出程序
from sys import exit

#初始化pygame,為使用硬件做準備
pygame.init()

 #創建了一個窗口
screen = pygame.display.set_mode((960, 720), 0, 32)
#設置窗口標題
pygame.display.set_caption("海底世界")
#加載并轉換圖像
background = pygame.image.load(background_image_filename).convert()
kcursor = pygame.image.load(mouse_image_filename).convert_alpha()
#游戲主循環
x, y = 0, 0
move_x, move_y = 0, 0
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
           exit()
        if event.type == KEYDOWN:
            #鍵盤有按下?
            if event.key == K_LEFT:
                #按下的是左方向鍵的話,把x坐標減一
                move_x = -1
            elif event.key == K_RIGHT:
                #右方向鍵則加一
                move_x = 1
            elif event.key == K_UP:
                #類似了
                move_y = -1
            elif event.key == K_DOWN:
                move_y = 1
        elif event.type == KEYUP:
            #如果用戶放開了鍵盤,圖就不要動了
            move_x = 0
            move_y = 0
        #計算出新的坐標
        x+= move_x
        y+= move_y

        screen.fill((0,0,0))
        screen.blit(background, (0,0))
        screen.blit(kcursor, (x,y))
        #在新的位置上畫圖
        pygame.display.update()

當我們運行這個程序的時候,按下方向鍵就可以把章魚移動,但是等等!為什么我只能按一下動一下啊……

因為KEYDOWN事件只有在你按下鍵的那一刻才發生一次,也就是for循環需要有事件發生才會再次執行,你可以試試在按下方向鍵不松開的時候不停的移動鼠標,這時候章魚就會一直移動了。

啊??這么麻煩,怎么修改呢?

因為當你按下按鍵的時候變量值已經進行了修改,所以只需要把計算新坐標后面的代碼縮進調整一下,放在跟for循環并列的位置,這樣事件發生只會修改坐標的變化數據,不斷更新坐標的任務就在while循環里執行了。

修改后的代碼;


#!/usr/bin/env python
#指定圖像文件名稱
background_image_filename = './img/Underwater.png'
mouse_image_filename = './img/octopus.png'
#導入pygame庫
import pygame
#導入一些常用的函數和常量
from pygame.locals import *
#向sys模塊借一個exit函數用來退出程序
from sys import exit

#初始化pygame,為使用硬件做準備
pygame.init()

 #創建了一個窗口
screen = pygame.display.set_mode((960, 720), 0, 32)
#設置窗口標題
pygame.display.set_caption("海底世界")
#加載并轉換圖像
background = pygame.image.load(background_image_filename).convert()
kcursor = pygame.image.load(mouse_image_filename).convert_alpha()
#游戲主循環
x, y = 0, 0
move_x, move_y = 0, 0
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
           exit()
        if event.type == KEYDOWN:
            #鍵盤有按下?
            if event.key == K_LEFT:
                #按下的是左方向鍵的話,把x坐標減一
                move_x = -1
            elif event.key == K_RIGHT:
                #右方向鍵則加一
                move_x = 1
            elif event.key == K_UP:
                #類似了
                move_y = -1
            elif event.key == K_DOWN:
                move_y = 1
        elif event.type == KEYUP:
            #如果用戶放開了鍵盤,圖就不要動了
            move_x = 0
            move_y = 0
    #計算出新的坐標
    x+= move_x
    y+= move_y

    screen.fill((0,0,0))
    screen.blit(background, (0,0))
    screen.blit(kcursor, (x,y))
    #在新的位置上畫圖
    pygame.display.update()



本站部分內容轉載自網絡,如有侵權請聯系管理員及時刪除。

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 91成人国产 | 青青草亚洲 | 正在播放国产一区 | 国产欧美一区二区精品久导航 | 成人福利在线观看 | 日韩av在线不卡 | 久久精品网站视频 | 中文字幕日韩欧美一区二区三区 | 久久精品999 | 九九九九精品九九九九 | av黄色免费| 久久视频一区 | 久久国产精品一区二区 | 中国黄色片网站 | 国产精品99久久久久久www | 国产精品久久久久久久久久小说 | 中文字幕在线国产 | 人人草网站| 一级毛片aaaaaa免费看 | 午夜精品久久 | 日本a v网站 | 99精品视频在线免费观看 | 综合婷婷 | 久久久国产精品亚洲一区 | swag国产精品一区二区 | 九九热久久久99国产盗摄蜜臀 | 午夜视频成人 | 国产精品久久久久久久av大片 | 毛片一区二区三区 | 久久嫩草精品久久久精品才艺表演 | 国产成人精品一区 | 高清不卡一区二区 | 亚洲一区观看 | 日韩精品视频在线播放 | 国产综合欧美 | 久久99精品久久久久久 | 亚洲欧美日韩久久精品 | 欧美精品久久久久久久免费软件 | www.久久久久 | www.日| 亚洲欧美中文日韩在线v日本 |