python pygame实现滚动横版射击游戏城市之战

这篇文章主要为大家详细介绍了python pygame实现滚动横版射击游戏城市之战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

pygame城市之战横版射击游戏,按上下左右方向箭头操作飞机。这是一个横板射击小游戏,在黑夜的城市上空,你将要操作一架飞机去射击敌机,爆炸效果还不错。

在游戏中定义了滚动的背景类,定义了飞机类Plane,定义了子弹类,敌机类,爆炸类等,是学习Pygame和面向对象编程的好例子。

代码:

 import math import time import pygame from pygame.locals import * from random import choice,randint class ScrolledBackground(pygame.sprite.Sprite): def __init__(self,image,screen): pygame.sprite.Sprite.__init__(self) self.screen = screen self.width = screen.get_width() self.height = screen.get_height() self.image0 = pygame.image.load(image).convert_alpha() self.image1 = pygame.image.load(image).convert_alpha() self.rect0 = self.image0.get_rect() self.rect1 = self.image1.get_rect() self.rect1.left = self.rect0.right self.dx = -10 self.dy = 0 def update(self): pass def draw(self): pass class Plane(pygame.sprite.Sprite): def __init__(self,image,keys,screen): pygame.sprite.Sprite.__init__(self) self.keys = keys     # 上下左右按键 self.image = pygame.image.load(image).convert_alpha() self.screen = screen self.rect = self.image.get_rect() self.rect.centery = self.screen.get_height()//2 self.xspeed = 0 self.yspeed = 0 self.dead = False     # 新增加的属性 def keys_check(self,all_keys): pass def update(self): self.rect.move_ip(self.xspeed,self.yspeed) def draw(self): self.screen.blit(self.image,self.rect) class Bullet(pygame.sprite.Sprite): def __init__(self,image,plane,group,screen): pygame.sprite.Sprite.__init__(self) self.plane = plane self.image = pygame.image.load(image).convert_alpha() self.rect = self.image.get_rect() self.rect.center = plane.rect.center self.group = group self.group.add(self) self.screen = screen self.screen_width = screen.get_width() self.screen_height = screen.get_height() def update(self): self.rect.move_ip(10,0) if self.rect.left > self.screen_width : self.group.remove(self) def split_images(image,rows,cols): """image是一张图片,把它切分为若干图,返回列表""" global explosion_images_list image = pygame.image.load(image) step_width = image.get_width()//cols step_height = image.get_height()//rows pass class Explosion(pygame.sprite.Sprite): """爆炸效果类,显示一系列帧图""" def __init__(self,surimages,position,group): pygame.sprite.Sprite.__init__(self) self.surimages = surimages      # 爆炸效果用到的surface列表 self.index = 0 self.amounts = len(surimages) self.image = self.surimages[self.index]   # 初始造型 self.rect = self.image.get_rect()    # 矩形对象 self.rect.center = position      # 爆炸位置 self.group = group self.group.add(self) self.interval_time = 0.01      # 造型切换时间 self.begin_time = time.time()     # 爆炸起始时间 def update(self):         # 换造型 if time.time() - self.begin_time >= self.interval_time: # 超时,则换造型 if self.index 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持html中文网。

以上就是python pygame实现滚动横版射击游戏城市之战的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python