Python turtle 模块可以编写游戏,是真的吗?

1. 前言

turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI 程序。

本文使用 turtle 模块编写一个简单的小游戏,通过此程序的编写过程聊一聊对 turtle 模块的感悟。

编写游戏,如果要做专业的、趣味性高的,还是请找 pygame,本文用 turtle 编写游戏的目的是为了深度理解 turtle 的功能。

turtle 模块的使用相对而言较简单,对于基础方法不做讲解。只聊 turtle 模块中稍难或大家忽视的地方。

2. 需求描述

程序运行时,画布上会出现**一个红色的小球很多绿色、蓝色的小球**。

刚开始红色的小球会朝某一个方向移动,使用者可以通过按下上、下、左、右方向键控制红色小球的运动方向。

绿色、蓝色小球以初始的默认方向在画布上移动。

当红色的小球碰到绿色小球时,红色小球球体会变大,当红色小球碰到蓝色小球时,红色球体会变小。

当红色小球球体缩小到某一个阈值时,游戏结束。

在这里插入图片描述

3. 制作流程

3.1 初始化变量

本程序需要使用到 turtlerandommath 模块,使用之前,先导入。

import turtle
import random
import math
'''
初始化游戏界面大小
'''
# 游戏区域的宽度
game_wid = 600  
# 游戏区域的高度
game_hei = 400  
# 砖块的大小,以及每一个小球初始大小
cell = 20
# 红球初始大小
red_size = cell
# 红色小球
red_ball = None
# 存储绿色小球的列表
green_balls = []
# 存储蓝色小球的列表
blue_balls = []
# 红色小球的方向 当前方向 0 向右,90 向上 180 向左 -90 向下
dir = 0

上述代码说明:

红色小球只有一个,由变量 red_ball 保存,红色小球在运动过程中可以改大小,red_size 保存其大小。

绿色和蓝色小球会有很多,这里使用 green_ballsblue_balls 2 个列表存储。

3.2 通用函数

随机位置计算函数: 为小球们随机生成刚开始出现的位置。

'''
随机位置计算函数
'''
def rand_pos():
    # 水平有 30 个单元格,垂直有 20 个单元格
    x = random.randint(-14, 14)
    y = random.randint(-9, 9)
    return x * cell, y * cell

绘制指定填充颜色的小正方形: 在游戏里有一个虚拟区域,四周使用很多小正方形围起来。

'''
绘制一个指定填充颜色的正方形
填充颜色可以不指定
'''
def draw_square(color):
    if color is not None:
        # 的颜色就填充
        turtle.fillcolor(color)
        turtle.begin_fill()
    for i in range(4):
        turtle.fd(cell)
        turtle.left(90)
    if color is not None:
        turtle.end_fill()

自定义画笔形状:

使用 turtle 制作游戏的底层思想:

当我们导入 turtle 模块时,意味着我们有了一支可以在画布上画画的画笔,画笔的默认形状是一个小海龟。

本文称这支默认画笔叫主画笔,可以使用 turtle 模块中的 turtle.Turtle() 类创建更多画笔 ,并且可以使用 ``turtle模块提供的turtle.register_shape(name, shape)` 方法为每一支画笔定制画笔形状。

如上所述,是使用 turtle 设计游戏的关键。

强调一下:

*通过主画笔创建更多的

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚大果壳

码文不易,晚上熬夜需要点咖啡钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值