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

这是一个使用Python的pygame库编写的最简单方块射击游戏的示例。游戏包括Player、Block和Bullet类,实现了子弹发射、碰撞检测以及得分系统。玩家在屏幕中央,通过发射子弹击中方块得分,子弹会因碰到方块或飞出屏幕而消失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()

如需要查看完整代码,请扫码付款:

VIP免费查看

当前隐藏内容需要支付

39元

已有0人支付

立即购买

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值