当前位置: 首页 > news >正文

Pygame中Sprite的使用方法6-6

4 重新绘制界面

每次碰撞发生后,程序界面需要重新绘制,代码如下所示。

screen.fill(WHITE)
all_sprites_list.draw(screen)
pygame.display.flip()

其中,screen表示程序的整个界面,将其绘制为白色背景;之后通过all_sprites_list.draw()绘制碰撞后剩下的方块(碰撞的方块已经在group中删除);最后显示重新绘制的内容。

5 完整代码

以上程序的完整代码如下所示。

import pygame, random
from pygame.locals import *class Block(pygame.sprite.Sprite):def __init__(self, color, width, height):super().__init__()self.image = pygame.Surface((width, height))self.image.fill(color)self.rect = self.image.get_rect()GREEN = (0, 255, 0)
RED = (255, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
screen_width = 1000
screen_height = 600
done = False
score = 0
clock = pygame.time.Clock()pygame.init()
screen = pygame.display.set_mode((screen_width, screen_height))
block_list = pygame.sprite.Group()
all_sprites_list = pygame.sprite.Group()
block_bad_list = pygame.sprite.Group()for i in range(50):block = Block(GREEN, 20 ,15)block.rect.x = random.randrange(screen_width)block.rect.y = random.randrange(screen_height)block_list.add(block)all_sprites_list.add(block)for i in range(10):block = Block(RED, 20 ,15)block.rect.x = random.randrange(screen_width)block.rect.y = random.randrange(screen_height)block_bad_list.add(block)all_sprites_list.add(block)player = Block(BLUE, 20, 15)
all_sprites_list.add(player)while not done:for event in pygame.event.get():if event.type == pygame.QUIT:done = Truescreen.fill(WHITE)pos = pygame.mouse.get_pos()player.rect.x = pos[0]player.rect.y = pos[1]blocks_hit_list = \pygame.sprite.spritecollide(player, block_list, True)for block in blocks_hit_list:score += 1print('当前分数为:'+str(score))blocks_hit_list = \pygame.sprite.spritecollide(player, block_bad_list, True)for block in blocks_hit_list:score -= 1print('当前分数为:'+str(score))all_sprites_list.draw(screen)pygame.display.flip()clock.tick(60)pygame.quit()

http://www.lryc.cn/news/174312.html

相关文章:

  • react多条件查询
  • 2023/09/17
  • Linux centos7压缩包安装mysql-8.0.34 并设置开机自启
  • iOS——present相关属性以及dismiss多级的方法
  • MinDoc v0.4:轻量级文档在线管理系统
  • Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!
  • Opencv 4.5.5 linux contrib编译
  • Windows 11 家庭中文版添加本地安全策略
  • TCP三次握手四次挥手
  • C语言基础-结构体
  • Codeforces Round 848 (Div. 2)C
  • 数据分发服务DDS
  • Linux 文件 目录管理 链接
  • R统计绘图-线性混合效应模型详解(理论、模型构建、检验、选择、方差分解及结果可视化)
  • 钾和钠含量
  • Linux离线安装elasticsearch|header|kibna插件最详细
  • 网络协议学习地图分享
  • nlohmann/json——NLOHMANN_JSON_SERIALIZE_ENUM
  • 类和对象:运算符重载
  • Vue中使用VueAMap
  • Vue中的路由介绍以及Node.js的使用
  • 将本地项目上传至Github详解
  • Vivado下PLL实验
  • 简单理解推挽输出和开漏输出
  • C++之va_start、vasprintf、va_end应用总结(二百二十六)
  • OpenCV自学笔记十一:形态学操作(一)
  • 封装全局异常处理
  • python的requests响应请求,结果乱码,即使设置了response.encoding也没有用的解决方法
  • PyCharm 手动下载插件
  • Gnomon绑定基础(约束 IK 节点)