ad

打开《Python入门与实战》_一步步学会Python_8.4.2 案例解析

admin 178 2023-10-25

【摘要】 本书摘自《Python入门与实战》一书中第8章,第4节,由王跃进主编。

8.4.2 案例解析

Pygame库为Python开发小游戏提供了很多模块,这些模块完成了与底层开发相关 的内容,使游戏开发人员不必关心怎样与硬件打交道、怎样管理事件等工作,开发人 员的工作重点是游戏逻辑功能的设计。在这个案例中,我们使用Pygame 库来实现。

从技术角度来看,游戏就是具有交互功能的动画片。如果在极短时间内播放形状 相似的多张图片就会感到图片在“动”,这是动画片的基本原理。因此,设计游戏的基 本思想就是让程序不停地接收、处理键盘(鼠标)事件并不停地更新画面内容。

1. 搭建主框架

打开《Python入门与实战》_一步步学会Python_8.4.2 案例解析

建立Player类、Obstacle类、Sos类,它们分别表示游戏中的玩家、障碍物、待救 援对象这些角色。用SoSGame 类表示游戏。由于这些角色可能都需要“动”的效果, 所以创建一个继承于pygame.sprite.Sprite的 Shape类作为基类。将这些类的定义代码保 存为RoleLibrary.py模块,内容如下:

import random, pygame

from pygame.locals import *

class Shape(pygame.sprite.Sprite):

def init (self,x,y,width,height,image,columns,target):

"""初始化角色"""

pass

def update(self,current time, rate=500):

"""更新精灵的图像帧"""

pass

class Sos(Shape)

def init (self,target):

pass

class Obstacle(Shape):

def init (self,screen):

pass

class Player(Shape):

def init (self,screen):

pass

在游戏主程序中需要完成各种角色创建、消息检测、逻辑判断等工作。构建如下

框架:

# * coding:utf-8 *

import sys, time, random, pygame

from pygame.locals import*

from RoleLibrary import *

class SoSGame():

def init (self,screen):

"""初始化游戏"""

self.initialization()

def initialization(self):

"""创建角色"""

pass

def collision(self,obj):

"""碰撞检测"""

pass

def transobpos(self):

"""更换障碍物位置"""

pass

def set gamestate(self,state):

"""设置游戏状态"""

pass

def get gamestate(self):

"""获取游戏状态"""

pass

def meetsos(self,obj):

"""碰到救援对象"""

pass

def meetobst(self,obj):

"""碰到障碍物"""

pass

def update(self):

"""刷新游戏界面"""

pass

def displayscore(self):

"""显示当前分数"""

pass

def gameover(self,state):

"""游戏结束"""

pass

def main():

"""初始化 pygame、 逻辑控制"""

pygame.init()

screen = pygame.display.set mode((600,600),0,32)

pygame.display.set caption('模拟牧场救援')

timer = pygame.time.Clock()

sosgame = SoSGame(screen)

while True:

timer.tick(30)

for event in pygame.event.get():

if event.type ==QUIT:

pygame.quit()

sys.exit()

keys =pygame.key.get pressed() #轮询键盘事件

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Python入门与实战》_一步步学会Python_8.3.2 项目简介
下一篇:通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.3.3 类的实例化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×