最简方块射击游戏核心原理_方向.py

最简方块射击游戏核心原理_方向.py

python simple square shoot demo方块射击演示
python simple square shoot demo方块射击演示

python simple square shoot demo方块射击演示

以下是部分代码预览:

"""最简方块射击游戏核心原理_方向.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资源。)

李兴球

李兴球的博客是Python创意编程原创博客