以下是部分代码预览:
"""最简方块射击游戏核心原理_方向.py""" import pygame import random import math # 定义颜色常量 BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) BLUE = (0, 0, 255) SCREEN_WIDTH = 700 SCREEN_HEIGHT = 400 class Block(pygame.sprite.Sprite): """ 定义方块类 """ def __init__(self, color): # 调用父类的初始化方法 pass class Player(pygame.sprite.Sprite): """ 玩家类 """ def __init__(self): """ 当玩家实例化时给它设定image和rect属性. """ # 调用父类的初始化方法 super().__init__() pass class Bullet(pygame.sprite.Sprite): """ 此类代表子弹. """ def __init__(self, start_x, start_y, dest_x, dest_y): """ 它有起点和终点坐标 """ # 调用父类型初始化方法 super().__init__() # 给子弹设置图形对象 self.image = pygame.Surface([4, 10]) self.image.fill(BLACK) self.rect = self.image.get_rect() pass def update(self): """ 更新子弹坐标. """ # 浮点数表示更精确 pass # 初始化派gei pygame.init() # 新建屏幕图层 screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT]) pygame.display.set_caption("最简方块射击游戏核心原理_方向.py") # 所有的角色列表,包括玩家,方块,当单击鼠标时也会把子弹加到此列表 all_sprites_list = pygame.sprite.Group() # 所有方块列表 block_list = pygame.sprite.Group() # 所有子弹列表 bullet_list = pygame.sprite.Group() # 创建玩家对象,并添加到所有角色列表 player = Player() all_sprites_list.add(player) # 此变量用来结束while循环. done = False # 此变量用来设置帧率即fps(frame per second,每秒显示的帧图数) clock = pygame.time.Clock() score = 0 player.rect.x = SCREEN_WIDTH / 2 player.rect.y = SCREEN_HEIGHT / 2 # -------- 游戏主循环 ----------- while not done: # --- 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # 调用update方法更新所有角色列表 all_sprites_list.update() # 遍历每颗子弹,看看有没有碰到方块 for bullet in bullet_list: # 检测有没有碰到方块列表中的方块,返回的是一个被击中的方块列表 block_hit_list = pygame.sprite.spritecollide(bullet, block_list, True) # 对每个被击中的方块而言,都要把相应的子弹给从组中移除 for block in block_hit_list: bullet_list.remove(bullet) all_sprites_list.remove(bullet) score += 1 print(score) # 飞出屏幕的子弹也要把它从列表中移除 if bullet.rect.y < -10: bullet_list.remove(bullet) all_sprites_list.remove(bullet) # --- 接下来是画一帧 # 首先把背景填白 screen.fill(WHITE) # 把所有角色画上去 all_sprites_list.draw(screen) # 把所画的显示出来 pygame.display.flip() # --- 设置帧率为60 clock.tick(60) pygame.quit()
如需要查看完整代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)
发表评论