IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 画一个中秋节赏月图 -> 正文阅读

[游戏开发]画一个中秋节赏月图

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语?●

好久没有发过“画画”的推文了

正好中秋节快到了

那就画一个“中秋赏月图”吧

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“中秋赏月图”获取源代码

2:加入群聊:729683466。在群文件中下载源代码以及相关资料。

效果演示

ss

93c999e0fff3abab7be231f487bad3b5.png

809a4cd7ced158377cd59547b1e47c45.gif

往期精选

python小游戏之《躲避太空垃圾》

python爬取《鹿鼎记》小说

?🛠

开发工具

python3.6.4,第三方库:turtle,time

讲解部分

一:turtle简介

turtle是一个非常常见的模块,作用就是画画,如果水平高的朋友可以用turtle去开发一些轻量级的游戏,只是这个turtle模块似乎没有那种载入声音的函数,所以,如果想写游戏,最好还是用pygame,毕竟人家上来就是专业团队。

19f74e6545e9ef0fea3710e4bc2f7923.png

不过,说到画画,那么turtle才是专业团队,pygame只能靠边站。不知道大家有没有在电脑上画过画,就是电脑自带的画画工具。基本的要素就是抬起笔,放下笔,修改笔的颜色,或者在一个封闭空间里面填充颜色之类的。

而turtle就是用代码控制这些抬起笔,放下笔的操作。

二:如何画画

一幅中秋赏月图,是由好几个元素组成的,分别是金黄色的月亮,流动的云彩,蓝色的背景,下方的山脉和一首诗。我们把画这几个元素的代码打包成不同的函数,在main中直接调用即可,这样简单清晰,容易理解。

我们用最简单的话月亮的函数举例子。

def draw_moon():
    turtle.color(BC)
    turtle.fillcolor('Gold')
    turtle.penup()
    turtle.goto(-150, 0)
    turtle.pendown()
    turtle.begin_fill()
    turtle.circle(110)
    turtle.end_fill()

首先,把画笔的颜色修改成BC,把填充颜色修改成"Gold",之后抬起笔,代码就是

turtle.penup()

再去把笔移动到指定的位置,由于这时候笔是离开画布的,所以不会在画布上生成任何痕迹。

turtle.goto(-150, 0)

到达指定位置后,放下笔,开始画画,用一个画圆圈的函数画,然后画出来以后填充成金色。这样,一个月亮就画出来了。

另一个比较重要的函数,就是用turtle在画布上写字。代码如下:

def draw_words():
    # 明月出天山,苍茫云海间.长风几万里,吹度玉门关。
    turtle.penup()
    turtle.pencolor('Yellow1')
    turtle.goto(400, -150)
    turtle.write("明\n月\n出\n天\n山\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(300, -150)
    turtle.write("苍\n茫\n云\n海\n间\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(200, -150)
    turtle.write("长\n风\n几\n万\n里\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(100, -150)
    turtle.write("吹\n度\n玉\n门\n关\n", align="center", font=("STXingkai", 50, "bold"))

和画图案一样,首先要做的就是设置画笔的颜色,然后用turtle.goto()到达要写字的位置,然后调用最终要的这个函数

turtle.write("明\n月\n出\n天\n山\n", align="center", font=("STXingkai", 50, "bold"))

其中需要设置字体,字号之类的参数。尤其要注意换行符的使用,因为我们要写的字是纵向排版的。

三:主函数

在主函数中,需要将这几个自定义额画画的小函数组合起来,就可以连接成一幅“中秋赏月图”。

def main():
    draw_init()
    draw_moon()
    draw_cloud()
    draw_mountain()
????draw_words()

代码相当浅显易懂,相信稍微有点python基础的同学都能看懂。

四:完整代码

# -*- coding: utf-8 -*-
import turtle
import time
BC = 'DodgerBlue4'
def draw_moon():
    turtle.color(BC)
    turtle.fillcolor('Gold')
    turtle.penup()
    turtle.goto(-150, 0)
    turtle.pendown()
    turtle.begin_fill()
    turtle.circle(110)
    turtle.end_fill()


def draw_words():
    # 明月出天山,苍茫云海间.长风几万里,吹度玉门关。
    turtle.penup()
    turtle.pencolor('Yellow1')
    turtle.goto(400, -150)
    turtle.write("明\n月\n出\n天\n山\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(300, -150)
    turtle.write("苍\n茫\n云\n海\n间\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(200, -150)
    turtle.write("长\n风\n几\n万\n里\n", align="center", font=("STXingkai", 50, "bold"))
    time.sleep(1)
    turtle.goto(100, -150)
    turtle.write("吹\n度\n玉\n门\n关\n", align="center", font=("STXingkai", 50, "bold"))


def draw_mountain():
    turtle.fillcolor('grey21')
    turtle.pencolor('grey31')
    turtle.pensize(4)
    turtle.penup()
    turtle.goto(-500, -250)
    turtle.begin_fill()
    turtle.pendown()
    turtle.left(15)
    turtle.forward(400)
    turtle.right(30)
    turtle.forward(200)
    turtle.left(40)
    turtle.forward(300)
    turtle.right(50)
    turtle.forward(300)
    turtle.goto(500, -300)
    turtle.goto(-500, -300)
    turtle.end_fill()


def draw_cloud():
    step = 0.5  # 画弧时的步长
    angle = 1  # 每次改变的角度
    disize = 0.2  # 每次增加或减少的线宽
    psize = 5  # 初始线宽
    turtle.pencolor('WhiteSmoke')
    turtle.pencolor('Gainsboro')
    turtle.pensize(psize)
    turtle.penup()
    turtle.goto(-500, 200)
    turtle.pendown()
    turtle.forward(250)
    for i in range(90):
        psize += disize
        turtle.pensize(psize)
        turtle.right(angle)
        turtle.forward(step)
    for i in range(90):
        psize -= disize
        turtle.pensize(psize)
        turtle.right(angle)
        turtle.forward(step)
    turtle.forward(100) 
    for i in range(90):
        psize += disize
        turtle.pensize(psize)
        turtle.left(angle)
        turtle.forward(step)
    for i in range(90):
        psize -= disize
        turtle.pensize(psize)
        turtle.left(angle)
        turtle.forward(step) 
    turtle.forward(600)   




def draw_init():
    turtle.setup(1000, 600)
    # turtle.colormode(255) # 设置GBK颜色范围为0-255
    turtle.bgcolor(BC)
    turtle.speed(10) # 设置画笔速度为10


def main():
    draw_init()
    draw_moon()
    draw_cloud()
    draw_mountain()
    draw_words()


    turtle.exitonclick()  #点击才关闭画画窗口


if __name__ == '__main__':
    main()

作者|齐

编辑|齐

感谢大家观看

有钱的老板可打赏一下小编哦

扫描二维码

关注我们

QQ群:729683466

???

参考来源

代码来源:github

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 08:17:57  更:2021-09-19 08:19:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:03:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码