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

400-650-7353
您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】Pygame的基本使用——使用Sprites(精靈)類

【Python基礎知識】Pygame的基本使用——使用Sprites(精靈)類

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

Sprite表示精靈,是計算機圖形學術語,指屏幕上可以移動的任何對象。當玩任何2D游戲時,在屏幕上看到的所有對象都是精靈。精靈可以設置動畫,可以由玩家控制,甚至可以相互交互。

在游戲循環的更新和渲染部分,需要更新和渲染精靈,但是可以想象,如果游戲中包含大量精靈,那么游戲循環的這些部分可能會變得非常漫長而復雜。

Pygame為此提供了一個很好的解決方案:Sprite Group (精靈組)。

創建一個精靈組來容納游戲中所有的精靈:

  1. all_sprites = pygame.sprite.Group() 

現在可以通過在游戲循環中添加以下內容來利用該精靈組:

  1. # 更新游戲 
  2. all_sprites.update() 
  3.  
  4. # 渲染 
  5. screen.fill(WHITE) 
  6. all_sprites.draw(screen) 

對于創建的每個精靈,只需確保將其添加到all_sprites精靈組中,它將自動在游戲窗口上繪制并在每次循環中進行更新。

(1)創建精靈

現在開始創建第一個精靈。在Pygame中,精靈是對象。首先在template.py中定義精靈類Player,類中定義__init__()方法,其中每個精靈都必須有兩個屬性,分別是image(圖像)和rect(矩形),并將其初始化:

  1. class Player(pygame.sprite.Sprite):   # 繼承pygame中的Sprite類 
  2.     def __init__(self): 
  3.         pygame.sprite.Sprite.__init__(self
  4.         self.image = pygame.Surface((3030)) 
  5.         self.image.fill(BLUE) 
  6.         self.rect = self.image.get_rect() 
  7.         self.rect.centerx = WIDTH / 2 
  8.         self.rect.centery = HEIGHT - 30 

其中,定義了圖像屬性——只是創建了一個簡單的30*30的正方形,并用藍色填充。還定義了矩形屬性,get_rect()用于查看圖像并計算將其包圍的矩形。在Pygame中,可以使用矩形來跟蹤對象的坐標,也可以使用矩形將對象放置在游戲窗口上的任意位置。

再創建第二個精靈,這是一個50*50的正方形,并用紅色填充:

  1. class Player1(pygame.sprite.Sprite): 
  2.     def __init__(self): 
  3.         pygame.sprite.Sprite.__init__(self
  4.         self.image = pygame.Surface((5050)) 
  5.         self.image.fill(RED) 
  6.         self.rect = self.image.get_rect() 
  7.         self.rect.centerx = WIDTH / 2 
  8.         self.rect.centery = HEIGHT / 2 

然后分別創建Player類的實例player和Player1類的實例player1,還需要將player和player1添加到all_sprites精靈組中:

  1. all_sprites = pygame.sprite.Group() 
  2. player = Player() 
  3. player1 = Player1() 
  4. all_sprites.add(player, player1) 

最后進行渲染部分,在游戲循環的“screen.fill(WHITE)”代碼下面添加如下代碼:

  1. all_sprites.draw(screen) 

運行結果如圖1所示。

圖1 創建精靈的運行結果

(2)移動精靈

游戲循環顯示每一幀,如果需要移動精靈,那么需要在精靈類Player中添加update()方法來更新精靈的位置:

  1. def update(self): 
  2.     self.rect.x += 3 

上述代碼的update()方法很簡單,就是使精靈矩形的x坐標增加3個像素,即向游戲窗口右邊移動3個像素。每次游戲循環,都會調用update()方法,精靈會一直右移。但是這樣有個缺點,當精靈移動到游戲窗口最右邊時,就會消失不見。可以改動update()方法的代碼,使得當精靈移動到最右邊時,回到最左邊繼續移動:

  1. def update(self): 
  2.     self.rect.x += 3 
  3.     if self.rect.left > WIDTH: 
  4.         self.rect.right = 0 

同樣,在Player1類中添加update()方法,使精靈矩形向游戲窗口左邊移動2個像素,當精靈移動到最左邊時,回到最右邊繼續移動:

  1. def update(self): 
  2.     self.rect.x -= 2 
  3.     if self.rect.left < 0
  4.         self.rect.right = WIDTH 

all_sprites是一個精靈組,對該組進行更新,就是對組中每一個精靈進行更新。在游戲循環中,精靈組all_sprites調用update()方法,則組中每一個精靈將自動在游戲窗口上繪制并在每次循環中進行更新:

  1. all_sprites.update() 

運行結果如圖2所示。

圖2 移動精靈的運行結果

文章“【Python基礎知識】Pygame的基本使用——使用Sprites(精靈)類”已幫助

更多內容

>>本文地址:http://m.jecan.cn/zhuanye/2021/70179.html

THE END  

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

1 您的年齡

2 您的學歷

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

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

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 加热制冷恒温循环器-加热制冷循环油浴-杭州庚雨仪器有限公司 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 电镀标牌_电铸标牌_金属标贴_不锈钢标牌厂家_深圳市宝利丰精密科技有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | CCC验厂-家用电器|服务器CCC认证咨询-奥测世纪 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 搬运设备、起重设备、吊装设备—『龙海起重成套设备』 | 锥形螺带干燥机(新型耙式干燥机)百科-常州丰能干燥工程 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 金属检测机_金属分离器_检针验针机_食品药品金属检探测仪器-广东善安科技 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 牛皮纸|牛卡纸|进口牛皮纸|食品级牛皮纸|牛皮纸厂家-伽立实业 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | 智能终端_RTU_dcm_北斗星空自动化科技| 佛山市德信昌电子有限公司 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 |