用pygame做一个简单的python小游戏---七彩同心圆

用pygame做一个简单的python小游戏—七彩同心圆

这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习。

玩法:每次点击鼠标时,会以鼠标为圆心,不断向外扩展圆(类似于水波浪的扩散),从而形成一个同心圆,并达到随机大小后停止扩展。其中每个同心圆的颜色都是随机的。

效果图:
在这里插入图片描述
在这里插入图片描述

代码实现:

import pygame, random, sys, time

pygame.init()
screen = pygame.display.set_mode([600, 400])
screen.fill((255, 255, 255))
radiusr = 0
arrradiusr = [0] * 10  # 圆的半径
arraddradiusr = [0] * 10  # 圆的半径增量
arrradiusbool = [False] * 10  # 圆是否存在   False代表该索引值下的圆不存在,True代表存在
arrradiusx = [0] * 10  # 圆的坐标x轴
arrradiusy = [0] * 10  # 圆的坐标y轴
RGBx = [0] * 10  # 颜色RGB值第一个值
RGBy = [0] * 10  # 颜色RGB值第二个值
RGBz = [0] * 10  # 颜色RGB值第三个值

while True:
    time.sleep(0.1)  # 0.1秒
    for event in pygame.event.get():  # 监听器
        if event.type == pygame.MOUSEBUTTONDOWN:  # 鼠标按下
            num = arrradiusbool.index(False)   #获取圆不存在的索引值
            arrradiusbool[num] = True          #将该索引值的圆设置为存在
            arrradiusr[num] = 0                #该圆的半径设置为0
            arrradiusx[num], arrradiusy[num] = pygame.mouse.get_pos()        #获取鼠标坐标
            RGBx[num] = random.randint(0, 255)       #获取颜色值
            RGBy[num] = random.randint(0, 255)       #获取颜色值
            RGBz[num] = random.randint(0, 255)       #获取颜色值
            pygame.draw.circle(screen, pygame.Color(RGBx[num], RGBy[num], RGBz[num]),     #画圆
                               (arrradiusx[num], arrradiusy[num]), arrradiusr[num], 1)
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    for i in range(10):
        if arrradiusbool[i] == False:     #如果圆不存在则跳过循环
            pass
        else:
            if (arrradiusr[i] < random.randint(10, 50)):       #随机圆的大小
                arraddradiusr[i] = random.randint(0, 5)        #圆的随机半径增量
                arrradiusr[i] += arraddradiusr[i]
                pygame.draw.circle(screen, pygame.Color(RGBx[i], RGBy[i], RGBz[i]),     #画圆
                                   (arrradiusx[i], arrradiusy[i]), arrradiusr[i], 1)
            else:
                arrradiusbool[i] = False    #若圆已达到最大,这将该索引值的圆设置为不存在
    pygame.display.update()

END!

  • 63
    点赞
  • 250
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
好的,非常感谢您的提问,我将为您详细解释如何使用 Pygame 制作一个贪吃蛇小游戏。 首先需要安装 Pygame,可以使用 pip 命令进行安装,如下所示: ``` pip install pygame ``` 接着,我们需要创建一个 Python 文件,比如 `snake_game.py`,并导入 Pygame 库: ```python import pygame ``` 然后,我们需要初始化 Pygame,以及设置游戏窗口的大小和标题: ```python pygame.init() # 游戏窗口大小 window_size = (400, 400) # 设置游戏窗口标题 pygame.display.set_caption("贪吃蛇") # 创建游戏窗口 screen = pygame.display.set_mode(window_size) ``` 接下来,我们需要定义一些常量,比如贪吃蛇的颜色、大小、速度等: ```python # 贪吃蛇颜色 snake_color = (0, 255, 0) # 贪吃蛇大小 snake_size = 20 # 贪吃蛇速度 snake_speed = 10 ``` 然后,我们需要定义一个贪吃蛇类,来表示贪吃蛇的状态: ```python class Snake: def __init__(self, x, y): self.x = x self.y = y self.direction = "RIGHT" self.segments = [(x, y), (x - snake_size, y), (x - 2 * snake_size, y)] ``` 在这个类中,我们记录了贪吃蛇的位置、方向以及身体的每个部分的位置。注意,在这里我们使用了元组来表示每个身体部分的位置,因为它们是不可变的。 接下来,我们需要定义一些函数来控制贪吃蛇的移动和绘制: ```python def move_snake(snake): # 获取贪吃蛇头部位置 x, y = snake.segments[0] # 根据方向移动贪吃蛇头部位置 if snake.direction == "UP": y -= snake_size elif snake.direction == "DOWN": y += snake_size elif snake.direction == "LEFT": x -= snake_size elif snake.direction == "RIGHT": x += snake_size # 将新的头部位置添加到贪吃蛇身体中 snake.segments.insert(0, (x, y)) # 删除贪吃蛇尾部位置 snake.segments.pop() def draw_snake(snake): for segment in snake.segments: pygame.draw.rect(screen, snake_color, (segment[0], segment[1], snake_size, snake_size)) ``` 在这里,`move_snake` 函数根据贪吃蛇的方向来移动它的头部,然后将新的位置添加到身体的前端,并删除身体的尾部以保持长度不变。`draw_snake` 函数则使用 Pygame 的 `draw.rect` 函数来绘制贪吃蛇的每个身体部分。 然后,我们需要定义一个游戏循环,来处理用户输入和游戏逻辑: ```python # 创建贪吃蛇对象 snake = Snake(window_size[0] // 2, window_size[1] // 2) # 游戏循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: snake.direction = "UP" elif event.key == pygame.K_DOWN: snake.direction = "DOWN" elif event.key == pygame.K_LEFT: snake.direction = "LEFT" elif event.key == pygame.K_RIGHT: snake.direction = "RIGHT" # 移动贪吃蛇 move_snake(snake) # 绘制游戏场景 screen.fill((0, 0, 0)) draw_snake(snake) pygame.display.flip() # 控制游戏帧率 pygame.time.Clock().tick(snake_speed) # 退出 Pygame pygame.quit() ``` 在游戏循环中,我们首先处理 Pygame 的事件,比如判断用户是否按下了方向键来改变贪吃蛇的方向。然后,我们移动贪吃蛇并绘制游戏场景。最后,我们使用 Pygame 的 `time.Clock` 函数来控制游戏帧率,以确保游戏运行流畅。 这就是使用 Pygame 制作贪吃蛇小游戏的全部过程。希望这个解释能对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值