如何使用Python代码实现赏月美景效果?

简介: 中秋节到来的时候,大多数人都喜欢看晚上的月亮,因为非常的好看。有句古话说得好“十五的月亮十六圆”,今年中秋节的景色真的非常美,真的让人难以忘记。于是,我也利用这个节日自己动手编写了代码,简单实现了一副中秋美景图。

图片.png

  • 我们可以使用 turtle 库绘制月亮、云朵、山以及古诗,游戏模块使用 pygame 库,配上美美的背景音乐。

1.导入所需要的库(turtle 库、time 库、pygame 库)

import turtle
import time
import pygame
  • 使用 import 导入需要使用的函数库,实现需要的功能。本文章实现的功能是绘制月亮、云朵和山川的图案和显示古诗句。

2.绘制月亮和云朵

def drawMoon():    #绘制月亮
  turtle.penup()   #画笔拿起
  turtle.goto(-150, 0)
  turtle.fillcolor((255, 215, 0))   #圆月的颜色
  turtle.pendown()   #画笔放下
  turtle.begin_fill()
  turtle.circle(112)
  turtle.end_fill()  #turtle.begin_fill()到turtle.end_fill() 颜色填充
def drawCloud(): #绘制云朵
   turtle.penup()
   turtle.goto(-500, 200)
   turtle.fillcolor((245, 245, 245))
   turtle.pencolor((255, 255, 255))
   turtle.pensize(5)
   turtle.pendown()
   turtle.forward(250)
   def cloud(mode='right'):
      for i in range(90):
         turtle.pensize((i+1)*0.2+5)
         turtle.right(1) if mode == 'right' else turtle.left(1)
         turtle.forward(0.5)
      for i in range(90):
         turtle.pensize(90*0.2+5-0.2*(i+1))
         turtle.right(1) if mode == 'right' else turtle.left(1)
         turtle.forward(0.5)
   cloud()
   turtle.forward(100)
   cloud('left')
   turtle.forward(600)

3.绘制山川

   def drawMountain(): #绘制山川
   turtle.penup()
   turtle.goto(-500, -250)
   turtle.pensize(4)
   turtle.fillcolor((36, 36, 36))
   turtle.pencolor((31, 28, 24))
   turtle.pendown()
   turtle.begin_fill()
   turtle.left(20)
   turtle.forward(400)
   turtle.right(45)
   turtle.forward(200)
   turtle.left(60)
   turtle.forward(300)
   turtle.right(70)
   turtle.forward(300)
   turtle.goto(500, -300)
   turtle.goto(-500, -300)
   turtle.end_fill()

4.添加合适的背景音乐

   def initTurtle():
   pygame.mixer.init()
   pygame.mixer.music.load('zqbg.mp3')
   pygame.mixer.music.play(-1, 20.0)
   turtle.hideturtle()
   turtle.setup(1000, 600)
   turtle.title('中秋赏月')
   turtle.colormode(255)
   turtle.bgcolor((193, 210, 240))
   turtle.speed(10)

5.添加合适的古诗句

  def writePoetry():
  turtle.penup()
  turtle.goto(400, -150)
  turtle.pencolor((250, 240, 230))
  #古诗句
  potery = ["\n人\n有\n悲\n欢\n离\n合","\n月\n有\n阴\n晴\n圆\n缺","\n但\n愿\n人\n长\n久\n", "千\n里\n共\n婵\n娟\n"]
  #诗句的位置(可自行设计添加), 最好2/4句五言诗
  coordinates = [(300, -150), (200, -150), (100, -150)]
  for i, p in enumerate(potery):
    turtle.write(p, align="center", font=("STXingkai", 50, "bold"))
    if (i + 1) != len(potery):
      time.sleep(2)
      turtle.goto(coordinates[i])

6.调用主函数

    def main():
    initTurtle()
    drawMoon()          #绘制月亮
    drawCloud()         #绘制云朵
    drawMountain()      #绘制山
    writePoetry()       #写诗
    turtle.done()

    if __name__ == '__main__':
    main()

7.程序运行所需要的背景音乐下载地址
链接:https://pan.baidu.com/s/1VI5WIDeOMYE_KjMKsRqHCQ?pwd=4ry4提取码:4ry4
编写代码使用的软件是 pycharm,使用软件之前需要进行软件的环境配置。还需要下载需要的库函数,实现需要的功能。
8.编译软件截图
图片.png
9.代码运行截图
图片.png
10.在 pycharm 中导入 pygame 库
(1)打开 pycharm 找到 file;
图片.png
(2)找到 setting 这个选项;
图片.png
(3)打开 setting 后,在窗口的搜索栏中搜索 project,找到你所对应的项目,点击下面的 python interpreter;
图片.png
(4)点击 python Interpreter 后可以看到该项目所导入的库,找到+号点击;
图片.png
(5)点击+后但弹出的窗口可以看到可安装的库,搜索 pygame,安装对应模块一般只安装第一个即可,点击 install package 即可进行安装,等一会则安装完成,项目中即可正常使用 pygame 库,若没有 pygame,则有可能是你的 pycharm 还没有这个库,需要进行安装;
图片.png
(6)验证是否导入成功,在对应项目中 import pygame 若没有报错则导入成功;
图片.png
图片.png
最后你的项目就可以正常编译,并运行看到实际效果了。

相关文章
|
2月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
59 6
|
3月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
2天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
3天前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
1月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
71 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
84 33
|
3月前
|
人工智能 数据挖掘 Python
Python编程基础:从零开始的代码旅程
【10月更文挑战第41天】在这篇文章中,我们将一起探索Python编程的世界。无论你是编程新手还是希望复习基础知识,本文都将是你的理想之选。我们将从最基础的语法讲起,逐步深入到更复杂的主题。文章将通过实例和练习,让你在实践中学习和理解Python编程。让我们一起开启这段代码之旅吧!
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
56 10
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
114 8
|
2月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
74 11

热门文章

最新文章