实战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://www.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

主站蜘蛛池模板: 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 期货软件-专业期货分析软件下载-云智赢| 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 成都思迪机电技术研究所-四川成都思迪编码器 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | ptc_浴霸_大巴_干衣机_呼吸机_毛巾架_电动车加热器-上海帕克 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 |