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

教你利用pygame模塊制作跳躍小球小游戲

 更新時(shí)間:2021年08月17日 13:08:42   作者:mez_Blog  
pygame是一個(gè)專(zhuān)門(mén)設(shè)計(jì)來(lái)進(jìn)行游戲開(kāi)發(fā)設(shè)計(jì)的Python模塊,因?yàn)閿[脫了被低級(jí)語(yǔ)言(如機(jī)器語(yǔ)言和匯編語(yǔ)言)的束縛,使用起來(lái)非常的簡(jiǎn)單,這篇文章主要給大家介紹了關(guān)于如何利用pygame模塊制作跳躍小球小游戲的相關(guān)資料,需要的朋友可以參考下

前言

pygame是用來(lái)開(kāi)發(fā)游戲的一套基于SDL的模板,它可以是python創(chuàng)建完全界面化的游戲和多媒體程序,而且它基本上可以在任何系統(tǒng)上運(yùn)行。本文將詳細(xì)介紹你利用pygame模塊制作跳躍小球小游戲的相關(guān)內(nèi)容,下面來(lái)一起看看吧

實(shí)現(xiàn)方法

首先創(chuàng)建一個(gè)游戲窗口,然后再窗口內(nèi)創(chuàng)建一個(gè)小球。以一定的速度移動(dòng)小球,當(dāng)小球碰到游戲窗口的邊緣時(shí),小球彈回,繼續(xù)移動(dòng)??梢园凑杖缦虏襟E實(shí)現(xiàn)該功能。

(1)首先來(lái)創(chuàng)建一個(gè)游戲窗口,寬和高設(shè)置為640×480.代碼如下:

import sys                               #導(dǎo)入sys模塊
import pygame                            #導(dǎo)入pygame模塊
pygame.init()                            #初始化pygame
size=with,height=640,480                 #設(shè)置窗口大小
screen=pygame.display.set_model(size)    #顯示窗口

上述代碼中,首先導(dǎo)入pygame模塊,該模塊在上一篇文章中介紹過(guò),直接用pip命令安裝即可。然后調(diào)用init()方法初始化pygame模塊。接下來(lái),設(shè)置窗口的寬和高,最后使用display模塊顯示窗體。display模塊的常用方法如下: 

方法名 功能
pygame.display.init 初始化init模塊
pygame.display.quit 結(jié)束display模塊
pygame.display.get_init 如果display模塊已經(jīng)被初始化,則返回true
pygame.display.set_mode 初始化一個(gè)準(zhǔn)備顯示的界面
pygame.display.get_surface 獲取當(dāng)前的surface對(duì)象
pygame.display.flip 更新整個(gè)待顯示的surface對(duì)象到屏幕上
pygame.display.update 更新部分內(nèi)容顯示到屏幕上,如果沒(méi)有參數(shù)則與flip功能相同

(2)當(dāng)我們運(yùn)行上述代碼時(shí),會(huì)出現(xiàn)一個(gè)一閃而過(guò)的窗口,這是因?yàn)槌绦驁?zhí)行完畢后會(huì)自動(dòng)關(guān)閉。如果讓窗口一直顯示,需要使用while true循環(huán)讓程序一直執(zhí)行,此外,還需要設(shè)置關(guān)閉按鈕。如果不設(shè)置關(guān)閉按鈕,雖然在界面會(huì)顯示紅叉關(guān)閉按鈕,但點(diǎn)擊后就會(huì)出現(xiàn)程序無(wú)響應(yīng)的錯(cuò)誤,然后強(qiáng)制關(guān)閉了程序。

在pycharm演示如下

代碼:

運(yùn)行:

點(diǎn)擊紅叉就會(huì)關(guān)閉窗口。

上述代碼中,添加了輪詢(xún)時(shí)間監(jiān)測(cè)。pygame.event.get()能夠獲取事件隊(duì)列,使用for  in遍歷事件,然后根據(jù)type屬性判斷事件類(lèi)型。這里的事件處理方式與GUI類(lèi)似,如event.type等于pygame.QUIT表示檢測(cè)到關(guān)閉pygame窗口事件,pygame.KEYDOWN表示鍵盤(pán)按下事件,pygame.MOUSEBUTTONDOWN表示鼠標(biāo)按下事件等。

(3)在窗口中添加小球。我們先準(zhǔn)備一張ball.png圖片,然后加載圖片,最后將圖片顯示在窗口中,在pycharm中演示如下。

代碼:

運(yùn)行:

上述代碼中,使用image模塊的load方法加載圖片,返回值ball是一個(gè)surface對(duì)象。surface是用來(lái)代表圖片的pygame對(duì)象,可以對(duì)一個(gè)surface對(duì)象進(jìn)行涂畫(huà)、變形、復(fù)制等各種操作。事實(shí)上,屏幕也只是一個(gè)surface,pygame.display.set_mode就返回了一個(gè)屏幕surface對(duì)象。如果將ball這個(gè)surface對(duì)象畫(huà)到screen surface對(duì)象,需要使用blit()方法,最后使用display方法更新整個(gè)待顯示的surface對(duì)象到屏幕上。surface對(duì)象常用方法如下:

方法名 功能
pygame.Surface.blit 將一個(gè)圖像畫(huà)到另一個(gè)圖像上
pygame.Surface.convert 轉(zhuǎn)換圖像的像素格式
pygame.Surface.convert_alpha 轉(zhuǎn)換圖像的像素格式,包含alpha通道的轉(zhuǎn)換
pygame.Surface.fill 使用顏色填充surface
pygame.Surface.get_rect 獲取surface的矩形區(qū)域

 (4)上面的小球是靜止的,下面我們?cè)撟屝∏騽?dòng)起來(lái)了。ball.get_rect()方法返回值ballrect是一個(gè)rec對(duì)象,該對(duì)象有一個(gè)move()方法可以用于移動(dòng)矩形。move(x,y)函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是x軸移動(dòng)的距離,第二個(gè)參數(shù)是y軸移動(dòng)的距離。窗體左上角坐標(biāo)為(0,0)。

為了實(shí)現(xiàn)小球不停地移動(dòng),將move()函數(shù)添加到while循環(huán)內(nèi),具體代碼如下:

我們?cè)谠a的基礎(chǔ)上加上了這兩行代碼。運(yùn)行后卻發(fā)現(xiàn)小球一閃而過(guò),但小球并沒(méi)有真正的笑死,而是移動(dòng)到窗體之外,此時(shí)需要添加碰撞監(jiān)測(cè)的功能。當(dāng)小球與窗體的任意邊緣發(fā)生碰撞,則更改小球的移動(dòng)方向。

代碼如下:

在原有代碼中添加上面的碰撞判斷代碼,運(yùn)行如下

小球在界面飛速運(yùn)動(dòng)。然后我們需要控制小球移動(dòng)的速度。首先介紹一下上面的代碼,上面代碼中,添加了碰撞監(jiān)測(cè)功能。如果碰到左右邊緣,這則更改x軸數(shù)據(jù)為負(fù)數(shù);如果碰到上下邊緣,則更改y軸數(shù)據(jù)為負(fù)數(shù)。

那么我們?cè)鯓涌刂菩∏蛞苿?dòng)的速度呢?這時(shí)我們需要添加一個(gè)“時(shí)鐘”來(lái)控制程序運(yùn)行的時(shí)間。這時(shí)就需要使用pygame的time模塊。使用pygame時(shí)鐘之前,必須先創(chuàng)建clock對(duì)象的一個(gè)實(shí)例,然后再while循環(huán)中設(shè)置多長(zhǎng)時(shí)間運(yùn)行一次。代碼如下【也就是最終代碼,由于運(yùn)動(dòng)效果無(wú)法展示,各位還是自行運(yùn)行查看效果^_^】:

# -*- coding:utf-8 -*-
import sys  # 導(dǎo)入sys模塊
import pygame  # 導(dǎo)入pygame模塊
 
pygame.init()  # 初始化pygame
size = width, height = 640, 480  # 設(shè)置窗口
screen = pygame.display.set_mode(size)  # 顯示窗口
color = (0, 0, 0)  # 設(shè)置顏色
 
ball = pygame.image.load("ball.png")  # 加載圖片
ballrect = ball.get_rect()  # 獲取矩形區(qū)域
 
speed = [5, 5]  # 設(shè)置移動(dòng)的X軸、Y軸距離
clock = pygame.time.Clock()  # 設(shè)置時(shí)鐘
# 執(zhí)行死循環(huán),確保窗口一直顯示
while True:
    clock.tick(60)  # 每秒執(zhí)行60次
    # 檢查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:  # 如果點(diǎn)擊關(guān)閉窗口,則退出
            sys.exit()
 
    ballrect = ballrect.move(speed)  # 移動(dòng)小球
    # 碰到左右邊緣
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    # 碰到上下邊緣
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]
 
    screen.fill(color)  # 填充顏色
    screen.blit(ball, ballrect)  # 將圖片畫(huà)到窗口上
    pygame.display.flip()  # 更新全部顯示
 
pygame.quit()  # 退出pygame

上述代碼中在上面代碼中添加了:

clock=pygame.time.Clock()      #設(shè)置時(shí)鐘

以及循環(huán)中的

clock.tick(60)           #每秒執(zhí)行60次

這樣我們?cè)俅芜\(yùn)行就會(huì)出現(xiàn)小球緩慢移動(dòng)并碰撞邊緣改變方向的效果了。

總結(jié)

到此這篇關(guān)于pygame模塊制作跳躍小球小游戲的文章就介紹到這了,更多相關(guān)pygame跳躍小球小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Selenium安裝及環(huán)境配置的實(shí)現(xiàn)

    Python Selenium安裝及環(huán)境配置的實(shí)現(xiàn)

    這篇文章主要介紹了Python Selenium安裝及環(huán)境配置的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)詳解

    Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • Python中NumPy的ufuncs函數(shù)實(shí)例

    Python中NumPy的ufuncs函數(shù)實(shí)例

    這篇文章主要介紹了Python中NumPy的ufuncs函數(shù)實(shí)例,NumPy是一個(gè)開(kāi)源的Python科學(xué)計(jì)算庫(kù),使用NumPy,就可以很自然地使用數(shù)組和矩陣,本文主要介紹Python Numpy ufuncs通用函數(shù),需要的朋友可以參考下
    2023-07-07
  • SQLite3中文編碼 Python的實(shí)現(xiàn)

    SQLite3中文編碼 Python的實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇SQLite3中文編碼 Python的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 在Python中采集Prometheus數(shù)據(jù)的詳細(xì)用法教程

    在Python中采集Prometheus數(shù)據(jù)的詳細(xì)用法教程

    Prometheus是一個(gè)開(kāi)源的監(jiān)控和警報(bào)工具,專(zhuān)門(mén)用于記錄和查詢(xún)時(shí)間序列數(shù)據(jù),它提供了一個(gè)強(qiáng)大的查詢(xún)語(yǔ)言PromQL(Prometheus Query Language),允許用戶(hù)根據(jù)不同的標(biāo)簽和指標(biāo)選擇特定的時(shí)間序列數(shù)據(jù),本文將詳細(xì)介紹如何在Python中采集Prometheus數(shù)據(jù)
    2024-07-07
  • 讓python的Cookie.py模塊支持冒號(hào)做key的方法

    讓python的Cookie.py模塊支持冒號(hào)做key的方法

    雖然Cookie的標(biāo)準(zhǔn)是不允許:冒號(hào)出現(xiàn)在key里面的,但是我們的開(kāi)發(fā)人員是很可愛(ài)的,常常會(huì)讓我們意想不到。
    2010-12-12
  • 13個(gè)有趣又好玩的Python游戲代碼分享

    13個(gè)有趣又好玩的Python游戲代碼分享

    今天小編跟大家分享13個(gè)有趣又好玩的Python小游戲示例代碼,教你如何通過(guò)邊打游戲邊學(xué)編程!感興趣的小伙伴快跟隨小編一起學(xué)習(xí)起來(lái)
    2022-02-02
  • Python三種遍歷文件目錄的方法實(shí)例代碼

    Python三種遍歷文件目錄的方法實(shí)例代碼

    這篇文章主要介紹了Python三種遍歷文件目錄的方法實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法

    基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法

    這篇文章主要為大家詳細(xì)介紹了基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 一文帶你玩轉(zhuǎn)Python屬性和方法

    一文帶你玩轉(zhuǎn)Python屬性和方法

    Python是一種簡(jiǎn)潔而強(qiáng)大的編程語(yǔ)言,其支持面向?qū)ο蟮木幊谭妒?,本文將從入門(mén)到精通介紹Python中的屬性和方法,幫助大家深入了解這些重要的概念,并學(xué)會(huì)如何在實(shí)際開(kāi)發(fā)中靈活應(yīng)用它們
    2023-07-07

最新評(píng)論