实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Pygame的基本使用——游戲循環和模板

【Python基礎知識】Pygame的基本使用——游戲循環和模板

  • 來源:優就業
  • 2021-09-28 09:44:34
  • 閱讀()
  • 分享
  • 手機端入口

每個游戲的核心控制流程都是循環,稱為游戲循環。游戲循環不斷地反復運行,完成使游戲正常運行所需的工作。每迭代一次游戲循環稱為一幀。

Pygame框架游戲循環中發生的事情可以分為三種不同的類別。

①事件:需要游戲做出響應的所有內容。例如,在鍵盤上按下的鍵,在鼠標上點擊的鍵等。

②更新游戲:此框架上需要更改的所有內容。例如,如果角色懸空,那么需要使用重力將其拉下來;如果兩個對象相遇,那么需要發生爆炸。

③渲染:將所有內容繪制在屏幕上。例如,播放器需要查看的背景、角色、菜單或其他任何內容,都必須在屏幕上正確的位置繪制。

游戲循環的關鍵是控制整個游戲循環的運行速度,即FPS,它表示每秒的幀數,這意味著游戲循環每秒應該發生多少次。如果控制不好FPS,游戲就會運行得過快或過慢。

(1)創建Pygame模版

編寫一個簡單的Pygame程序,該程序除了打開游戲窗口并運行游戲循環外什么也不做。

首先導入所需的Pygame庫,并設置游戲的全局選項變量:

  1. import pygame 
  2.  
  3. WIDTH = 300   # 游戲窗口的寬度 
  4. HEIGHT = 420   # 游戲窗口的高度 
  5. FPS = 30   # 每秒的幀數 

接下來創建游戲窗口:

  1. # 初始化Pygame并創建游戲窗口 
  2. pygame.init() 
  3. screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
  4. pygame.display.set_caption('Demo Game')   # 設置游戲標題 
  5. clock = pygame.time.Clock() 

先調用pygame.init()啟動Pygame并將其初始化;再調用pygame.display.set_mode()創建游戲窗口screen,其參數是一個元組,表示該游戲窗口的寬度和高度;最后調用pygame.time.Clock()創建時鐘對象clock,以便能夠確保游戲按照設定好的FPS運行。

然后開始編寫游戲循環:

  1. # 游戲循環 
  2. running = True 
  3. while running: 
  4.     pass 

這是游戲循環的框架代碼,它是由變量running控制是否執行的while循環,如果希望游戲循環結束,那么只需將running設置為False即可。

(2)渲染部分

目前示例代碼中僅僅演示的是用純色填充屏幕。下面先介紹一下計算機對顏色的處理。

計算機屏幕由像素組成,這些像素的顏色由三個顏色混合生成,這三個顏色就是三基色:紅色(R),綠色(G)和藍色(B)。每個顏色的發光強度決定了該像素的顏色,用0到255之間的一個整數來表示發光強度的大小,因此,RGB三個顏色中的每個都有256種亮度等級。可以通過三者的乘積,獲得計算機中可以顯示的顏色總數:256*256*256=16777216。

在項目中定義一些顏色:

  1. BLACK = (000)   # 黑色 
  2. WHITE = (255255255)   # 白色 
  3. RED = (25500)   # 紅色 
  4. GREEN = (02550)   # 綠色 
  5. BLUE = (00255)   # 藍色 

以上顏色由一個元組定義,元組中的項按照RGB排序,數值為顏色的亮度等級。

給屏幕填充顏色,并使最近繪制的屏幕可見:

  1. screen.fill(WHITE) 
  2. pygame.display.flip() 

(3)事件部分

此時嘗試運行程序,則會發現程序存在問題——無法關閉窗口,單擊窗口右上角的“關閉”按鈕無效。這是因為“單擊窗口右上角的‘關閉’按鈕”其實是一個事件,需要監聽該事件并做出相應處理——退出游戲。

事件可以隨時發生。如果游戲在循環的更新或渲染過程中單擊其他按鈕怎么辦?Pygame要做的是保存自上一幀以來發生的所有事件。這樣,如果游戲快速將許多按鈕混在一起,那么可以使所有按鈕都有效。監聽的事件是一個列表,可以使用一個for循環來查看它們:

  1. for event in pygame.event.get(): 
  2.     # 檢查窗口是否關閉 
  3.     if event.type == pygame.QUIT: 
  4.         running = False 

Pygame中有很多可以監聽的事件,pygame.QUIT是單擊窗口右上角的“關閉”時觸發的事件,此時將running設置為False,游戲循環將終止。

(4)控制FPS

使用FPS來控制游戲的運行速度:

  1. while running: 
  2.     clock.tick(FPS) 

tick()方法用于告訴Pygame循環所花的時間。變量FPS已經賦值為30,這意味著游戲循環每秒應該發生30次,即每幀持續1⁄30秒。

(5)組裝代碼

將上述代碼組裝起來,并在末尾添加pygame.quit()用于終止游戲:

  1. import pygame 
  2.  
  3. WIDTH = 300 
  4. HEIGHT = 420 
  5. FPS = 30 
  6.  
  7. # 定義顏色 
  8. WHITE = (255255255
  9. BLACK = (000
  10. RED = (25500
  11. GREEN = (02550
  12. BLUE = (00255
  13.  
  14. # 初始化pygame并創建游戲窗口 
  15. pygame.init() 
  16. pygame.mixer.init() 
  17. screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
  18. pygame.display.set_caption('Demo Game'
  19. clock = pygame.time.Clock() 
  20.  
  21. # 游戲循環 
  22. running = True 
  23. while running: 
  24.     clock.tick(FPS) 
  25.     for event in pygame.event.get(): 
  26.         if event.type == pygame.QUIT: 
  27.             running = False 
  28.  
  29.     screen.fill(WHITE) 
  30.     pygame.display.flip() 
  31.  
  32. pygame.quit() 

將上述代碼進行保存,文件名為template.py,本書后文將使用該Pygame模板作為項目的起點。

運行template.py,運行結果如圖1所示。

圖1 Pygame模板運行結果

文章“【Python基礎知識】Pygame的基本使用——游戲循環和模板”已幫助

更多內容

>>本文地址:http://www.jecan.cn/zhuanye/2021/70178.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 服务器之家 - 专注于服务器技术及软件下载分享 | 康明斯发电机,上柴柴油发电机,玉柴柴油发电机组_海南重康电力官网 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓 | 工业硝酸钠,硝酸钠厂家-淄博「文海工贸」 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 国际金融网_每日财经新资讯网 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 浙江自考_浙江自学考试网| 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 扬州汇丰仪表有限公司| 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 求是网 - 思想建党 理论强党| 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 |