如果其他模型不响应-英雄云拓展知识分享
178
2023-10-25
【摘要】 本书摘自《Python入门与实战》一书中第8章,第4节,由王跃进主编。
8.4.2 案例解析
Pygame库为Python开发小游戏提供了很多模块,这些模块完成了与底层开发相关 的内容,使游戏开发人员不必关心怎样与硬件打交道、怎样管理事件等工作,开发人 员的工作重点是游戏逻辑功能的设计。在这个案例中,我们使用Pygame 库来实现。
从技术角度来看,游戏就是具有交互功能的动画片。如果在极短时间内播放形状 相似的多张图片就会感到图片在“动”,这是动画片的基本原理。因此,设计游戏的基 本思想就是让程序不停地接收、处理键盘(鼠标)事件并不停地更新画面内容。
1. 搭建主框架
建立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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~