Python番外篇:用Pygame制作一场漂亮的流星雨

hello,大家好,我是wangzirui32,今天我们来学习如何用Pygame制作一场漂亮的流星雨。
开始学习吧!

前言

最近几乎没有比较大型的流星雨可以欣赏,当我正在家里“愁眉不展”时,我看到了Python。于是,就想用Python模拟一场流星雨,妙~啊!

1. 素材图片

完成这个程序,你需要一张月亮图片:
moon.jpg
月亮和笔者画的一颗小星星:
star.png
星星

2. 项目结构

结构如下:

demo/
	star.py
	demo.py
	star.png
	moon.jpg

其中,star.py文件主要存放Star类,这个类要处理星星移动等操作,demo.py是项目的主文件,我们将在这里编写窗口代码,至于star.png和moon.jpg可以自行导入上面的素材。

3. 编写代码

3.1 Star类

打开star.py,输入以下代码:

# -*-  coding: utf-8 -*-
import pygame
import random

class Star(pygame.sprite.Sprite):
    def __init__(self, screen, width, height):
        super(Star, self).__init__() # 继承精灵类

        self.screen = screen

		# 加载图片并获取rect矩形
        self
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的用pygame制作的小游戏的代码示例,它是一个简单的随机移动的小球游戏: ```python import pygame import random # 初始化pygame pygame.init() # 创建窗口 screen = pygame.display.set_mode((500, 500)) # 创建小球 class Ball(): def __init__(self): self.x = random.randint(0, 500) self.y = random.randint(0, 500) self.radius = random.randint(10, 50) self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) self.speed_x = random.randint(-5, 5) self.speed_y = random.randint(-5, 5) def move(self): self.x += self.speed_x self.y += self.speed_y # 小球碰到边缘反弹 if self.x + self.radius > 500 or self.x - self.radius < 0: self.speed_x = -self.speed_x if self.y + self.radius > 500 or self.y - self.radius < 0: self.speed_y = -self.speed_y def draw(self): pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius) # 创建多个小球 balls = [] for i in range(10): balls.append(Ball()) # 游戏循环 while True: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() # 填充背景色 screen.fill((255, 255, 255)) # 移动和绘制小球 for ball in balls: ball.move() ball.draw() # 刷新屏幕 pygame.display.update() ``` 这个游戏创建了一个Ball类来表示小球,使用随机的位置、半径、颜色和速度创建了多个小球。在游戏循环中,处理了退出事件、填充了背景色、移动和绘制了小球,并刷新了屏幕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值