欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    目錄總結(jié)

    前言

    對于使用過計(jì)算機(jī)的人,應(yīng)該對圖形用戶界面(GUI)應(yīng)該都不會太陌生,這里就不在贅述。那么對于這樣的動態(tài)語言有沒有GUI相關(guān)的庫呢?答案是肯定有的,那么常見的有哪些呢?主要有、、PyQt、PyGTK等模塊,而是默認(rèn)的模塊,沒有功能特別強(qiáng)大的GUI控件,所以真的要在中進(jìn)行GUI開發(fā),推薦使用、PyQt、PyGTK等模塊。還提供了游戲開發(fā)模塊。下面主要介紹、、的使用,廢話不多說直接開始吧,哈哈哈哈哈~

    基于模塊的GUI

    是基于Tk工具包的一個(gè)模塊,而Tk為控件的擺放提供了三種布局管理器,通過布局管理器可以對控件進(jìn)行定位,這三種布局管理器分別是:

    :開發(fā)者提供控件的大小和擺放位置

    :自動將控件填充到合適的位置

    Grid:基于網(wǎng)格坐標(biāo)來擺放控件

    講了這些還是不知道怎么使用,那么我們直接介紹使用來開發(fā)GUI的基本步驟:

    導(dǎo)入模塊中我們需要的東西

    創(chuàng)建一個(gè)頂層窗口對象并用它來承載整個(gè)GUI應(yīng)用

    在頂層窗口對象上添加GUI組件

    通過代碼將這些GUI組件的功能組織起來

    進(jìn)入主事件循環(huán)(main loop)

    基于模塊的GUI

    是一個(gè)包裝(c++編寫)的一個(gè)流行的跨平臺的GUI工具包,可以作為的一個(gè)擴(kuò)展模塊。類是 API的核心模塊,它是所有類的基礎(chǔ)類直觀圖型用戶界面,包括所有GUI應(yīng)用程序使用的部件。如wx.,wx.等。

    游戲開發(fā)

    是一個(gè)開源的模塊,專門用于多媒體應(yīng)用(如電子游戲)的開發(fā),其中包含對圖像、聲音、視頻、事件、碰撞等的支持。的使用基本步驟:

    導(dǎo)入模塊

    先初始化

    構(gòu)建一個(gè)窗口

    設(shè)置標(biāo)題

    讓其保持運(yùn)行狀態(tài),直到用戶手動關(guān)閉

    先檢測事件,如果檢測到關(guān)閉按鈕那么就退出

    下面從五方面來介紹的使用:

    1.在游戲窗口中繪圖

    我們可以通過中的draw模塊在游戲窗口中繪制各種圖形,主要包括:線條、矩形、多邊形、圓、橢圓、圓弧等。但最重要想說的不是這個(gè),而是“屏幕坐標(biāo)系”。什么是屏幕坐標(biāo)系,它就是指將屏幕左上角設(shè)置為坐標(biāo)原點(diǎn)‘(0, 0)’,向右是x軸的正向,向下是y軸的正向,在表示位置或者設(shè)置尺寸的時(shí)候,我們默認(rèn)的單位都是像素(像素概念)。說了那么多我們舉個(gè)例子更實(shí)際一些:

    import pygame  # 導(dǎo)入pygame模塊
    def main():
        # 初始化pygame模塊
        pygame.init()
    

    用戶登陸界面_直觀圖型用戶界面_形象直觀與模象直觀

    # 初始化顯示窗口并設(shè)置窗口尺寸 screen = pygame.display.set_mode((888, 666)) # 設(shè)置當(dāng)前窗口的標(biāo)題 pygame.display.set_captioGafSHUn('888666') # 設(shè)置窗口背景色 screen.fill((200, 102, 22)) # 繪制一個(gè)圓(參數(shù)分別是: 屏幕, 顏色, 圓心位置, 半徑, 0表示填充圓) pygame.draw.circle(screen, (255, 0, 0,), (100, 100), 30, 0) # 刷新當(dāng)前窗口(渲染窗口將繪制的圖像呈現(xiàn)出來) pygame.display.flip() running = True # 開啟一個(gè)事件循環(huán)處理發(fā)生的事件 while running: # 從消息隊(duì)列中獲取事件并對事件進(jìn)行處理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if __name__ == '__main__': main()

    2.圖形的處理

    如果需要直接加載圖像到窗口上,可以使用中image模塊的函數(shù)來加載圖像,再通過之前獲得的窗口對象的`blit`方法渲染圖像,代碼如下:

    import pygame
    WIN_WIDTH = 800
    WIN_HEIGHT = 800
    #初始化
    pygame.init()
    #構(gòu)建游戲窗口
    chuangkou = pygame.display.set_mode((WIN_WIDTH,WIN_HEIGHT))
    #設(shè)置游戲標(biāo)題
    pygame.display.set_caption('圖片')
    

    直觀圖型用戶界面_用戶登陸界面_形象直觀與模象直觀

    # 填充背景 chuangkou.fill((255,255,255)) pygame.display.flip() image = pygame.image.load('./res/ball.png') # 在窗口上渲染圖像 chuangkou.blit(image, (50, 50)) pygame.display.update() #再次刷新 # 開啟一個(gè)事件循環(huán)處理發(fā)生的事件 while True: for x in pygame.event.get(): if x .type==pygame.QUIT: exit()

    3.動畫效果

    動畫效果其實(shí)就是把不連續(xù)的圖片連續(xù)的播放,只要每秒鐘達(dá)到了一定的幀數(shù),那么就可以做出比較流暢的動畫效果,代碼如下:

    import pygame
    WIN_WIDTH = 800
    WIN_HEIGHT = 800
    #初始化
    pygame.init()
    #構(gòu)建游戲窗口
    chuangkou = pygame.display.set_mode((WIN_WIDTH,WIN_HEIGHT))
    #設(shè)置游戲標(biāo)題
    pygame.display.set_caption('圖片')
    # 填充背景
    chuangkou.fill((255,255,255))
    pygame.display.flip()
    image = pygame.image.load('./res/ball.png')
    # 在窗口上渲染圖像
    chuangkou.blit(image, (50, 50))
    pygame.display.update()   #再次刷新
    

    直觀圖型用戶界面_形象直觀與模象直觀_用戶登陸界面

    num =1 d = 0 #初始化旋轉(zhuǎn)的角度 # 開啟一個(gè)事件循環(huán)處理發(fā)生的事件 while True: num += 1 if num % 20 == 0: d+=2 newimage = pygame.transform.rotozoom(image, d, 0.2) chuangkou.blit(newimage, (0, 0)) pygame.display.update() for x in pygame.event.get(): if x .type==pygame.QUIT: exit()

    4.碰撞檢測

    在游戲中會有很多對象出現(xiàn),而這些對象之間的“碰撞”在所難免,比如炮彈擊中了飛機(jī)、箱子撞到了地面等。碰撞檢測在絕大多數(shù)的游戲中都是一個(gè)必須得處理的至關(guān)重要的問題,的(動畫精靈)模塊就提供了對碰撞檢測的支持。通常情況下,我們使用該模塊的基類 來創(chuàng)建一個(gè)子類,從而達(dá)到處理精靈的目的。當(dāng)我們需要管理大量的精靈時(shí),操作它們將變得復(fù)雜,此時(shí)通過構(gòu)建精靈容器(group 類)也就是精靈組來統(tǒng)一管理這些精靈。構(gòu)建方法如下:

    group = ..Group()# 創(chuàng)建精靈組

    group.add() # 向組內(nèi)添加一個(gè)精靈

    此同時(shí).模塊也提供了多種檢測精靈是否碰撞的方法,如下所示:

    方法說明

    ..編程客棧()

    兩個(gè)精靈之間的矩形檢測,即矩形區(qū)域是否有交匯,返回一個(gè)布爾值

    ..()

    兩個(gè)精靈之間的圓形檢測,即圓形區(qū)域是否有交匯,返回一個(gè)布爾值

    ..()

    兩個(gè)精靈之間的像素蒙版檢測,更為精準(zhǔn)的一種檢測方式

    ..()

    精靈和精靈組之間的矩形碰撞檢測,一個(gè)組內(nèi)的所有精靈會逐一地對另外一個(gè)單個(gè)精靈進(jìn)行碰撞檢測,返回值是一個(gè)列表,包含了發(fā)生碰撞的所有精靈

    ..()

    精靈和精靈組之間的矩形碰撞檢測,上述函數(shù)的變體,當(dāng)發(fā)生碰撞時(shí),返回組內(nèi)的一個(gè)精靈,無碰撞發(fā)生時(shí),返回 None

    用戶登陸界面_形象直觀與模象直觀_直觀圖型用戶界面

    ..()

    檢測在兩個(gè)組之間發(fā)生碰撞的所有精靈,它返回值是一個(gè)字典,將第一組中發(fā)生碰撞的精靈作為鍵直觀圖型用戶界面,第二個(gè)組中發(fā)生碰撞的精靈作為值

    說了那么多關(guān)于.碰撞檢測的函數(shù),下面我們舉個(gè)例子來得更直觀一點(diǎn):

    import sys, pygame
    from random import *
    class MyClass(pygame.sprite.Sprite):
        def __init__(self, image_file, location, speed):
            pygame.sprite.Sprite.__init__(self)        #初始化動畫精靈
            self.image = pygame.image.load(image_file) #加載圖片
            self.rect = self.image.get_rect()          #得到定義圖像邊界矩形
            self.rect.left, self.rect.top = location   #設(shè)置球的初始位置
            self.speed = speed                         #創(chuàng)建一個(gè)速度
        def move(self):
            self.rect = self.rect.move(self.speed)
            if self.rect.left < 0 or self.rect.right > width:
                self.speed[0] = -self.speed[0]
            if self.rect.top < 0 or self.rect.bottom > height:
                self.speed[1] = -self.speed[1]
    def animate(group):
        screen.fill([255, 255, 255])
        for ball in group:
            ball.move()
        for ball in group:
            group.remove(ball)      #從組刪除精靈
            #檢查精靈與組的碰撞
            if pygame.sprite.spritecollide(ball, group, False): 
                ball.speed[0] = -ball.speed[0]
                ball.speed[1] = -ball.speed[1]
            group.add(ball)
            screen.blit(ball.image, ball.rect)
        pygame.display.flip()
    

    形象直觀與模象直觀_用戶登陸界面_直觀圖型用戶界面

    pygame.time.delay(20) #設(shè)置窗口大小和顏色 size = width, height = 640, 480 screen = pygame.display.set_mode(size) screen.fill([255, 255, 255]) img_file = "beach_ball.png" clock = pygame.time.Clock() group = pygame.sprite.Group() #創(chuàng)建精靈組 #將球增加到列表 for row in range(0, 2): for column in range(0, 2): python location = [column * 180 + 10, row * 180 + 10] speed = [choice([-4, 4]), choice([-4, 4])] #讓每個(gè)球變得隨機(jī)性 ball = MyClass(img_file, location, speed) group.add(ball) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False frame_rate = clock.get_fps() print( "frame rate = ", frame_rate) animate(group) clock.tick(30) pygame.quit()

    5.事件處理

    其實(shí)通過上面的代碼例子中,細(xì)心的人應(yīng)該注意到有一個(gè).event.get()方法,它就是獲取鼠標(biāo)事件,而且通過事件對象的`type`屬性可以判定事件類型,再通過`pos`屬性就可以獲得鼠標(biāo)點(diǎn)擊的位置。

    總結(jié)

    這里只是簡單的介紹的使用,要想了解更多知識,推薦的官方網(wǎng)站,但要求要有一定的英文基礎(chǔ)哈哈哈哈哈~。其實(shí)我們學(xué)習(xí)這些模塊,不但要了解怎么使用他們,更重要的是要掌握面向?qū)ο蟪绦蛟O(shè)計(jì)和事件驅(qū)動的思想去解決現(xiàn)實(shí)中的問題。

    到此這篇關(guān)于圖形用戶界面與游戲開發(fā)的文章就介紹到這了,更多相關(guān)圖形用戶界面與游戲開發(fā)內(nèi)容請搜索我們以前的文章或繼續(xù)瀏覽php下面的相關(guān)文章希望大家以后多多支持我們!

    本文標(biāo)題: 圖形用戶界面與游戲開發(fā)實(shí)例詳解

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有