项目报告:turtle画小猪佩奇

news2025/1/17 3:47:06

目录

  • 项目:
    • 一、项目思路
    • 二、项目实战
      • 1. 导入模块
      • 2. 创建画布
      • 3. 绘制鼻子
      • 4. 绘制猪头
      • 5. 绘制耳朵
      • 6. 绘制眼睛
      • 7. 绘制脸
      • 8. 绘制嘴
      • 9. 绘制身体
      • 10.绘制手
      • 11.绘制脚
      • 12.绘制尾巴
    • 三、项目展示
  • 总结:

项目:

​ 我们做的项目是小猪佩奇绘画的一个项目,我们学习了这么久,对绘画工具也了解了一些,这些绘画工具用法很多,可以搭配数学使用,从而达到绘制图形的效果,数学研究的越深,这个绘画就画的越好。

项目总体分三块:项目思路、项目实战、项目演示

但是我们做项目之前还有一些准备工作,首先得有python解释器,然后还得有python编辑器(我用的PyCharm,也可以用自带的),环境得配置好,这是最基本的;我们用python画图得有turtle这个模块,如果没有得下载,否则项目无法进行。

一、项目思路

​ 先设置画板大小,然后设置画笔颜色,粗细,定位好位置,依次画鼻子、头、耳朵、眼睛、脸、身体、手、脚、尾巴

二、项目实战

1. 导入模块

import turtle as t

说明:
turtle是Python内置的一个模块,俗称海龟绘图,它基于tkinter模块,提供简单的绘图工具。

2. 创建画布

​ 我们定义一个 画布,将画布设置为 840 像素宽和 500 像素高的大小。然后设置画笔的大小为 4隐藏小海龟图标。调用 colormode(255) 设置 RGB 色彩值范围为 0~255。调用 speed(10) 将画笔速度设置为 10

# 创建画布
t.pensize(4)
t.hideturtle()
t.colormode(255)    # 设置色彩
t.setup(840, 500)   # 设置宽高
t.speed(10)         # 设置画笔速度

# 添加文字
t.penup()
t.goto(-350, 0)
t.color('black')
t.write('zz', font=('宋体', 40, 'normal'))

3. 绘制鼻子

# 鼻子
t.color((255, 155, 192), "pink")  # 画笔色是浅粉,填充色是粉色
t.pu()
t.goto(-100, 100)
t.pd()
t.seth(-30)
t.begin_fill()
a = 0.4
# 绘制一个椭圆作为鼻子的轮廓
for i in range(120):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.08     # 加速
        t.lt(3)  # 向左转3度
        t.fd(a)  # 向前走a的步长
    else:
        a = a - 0.08    # 减速
        t.lt(3)  # 向左转3度
        t.fd(a)  # 向前走a的步长
t.end_fill()
# 左鼻孔
t.pu()
t.seth(90)
t.fd(25)
t.seth(0)
t.fd(10)
t.pd()
t.pencolor(255, 155, 192)
t.seth(10)
t.begin_fill()
t.circle(5)
t.color(160, 82, 45)
t.end_fill()
# 右鼻孔
t.pu()
t.seth(0)
t.fd(20)
t.pd()
t.pencolor(255, 155, 192)
t.seth(10)
t.begin_fill()
t.circle(5)
t.color(160, 82, 45)
t.end_fill()

4. 绘制猪头

# 头
t.color((255, 155, 192), "pink")    # 画笔色是浅粉,填充色是粉色
t.pu()
t.seth(90)
t.fd(41)
t.seth(0)
t.fd(0)
t.pd()
t.begin_fill()
t.seth(180)
t.circle(300, -30)
t.circle(100, -60)
t.circle(80, -100)
t.circle(150, -20)
t.circle(60, -95)
t.seth(161)
t.circle(-300, 15)
t.pu()
t.goto(-100, 100)
t.pd()
t.seth(-30)
a = 0.4
for i in range(60):
    if 0 <= i < 30 or 60 <= i < 90:
        a = a + 0.08
        t.lt(3)  # 向左转3度
        t.fd(a)  # 向前走a的步长
    else:
        a = a - 0.08
        t.lt(3)
        t.fd(a)
t.end_fill()

5. 绘制耳朵

# 左耳
t.color((255, 155, 192), "pink")    # 画笔色是浅粉,填充色是粉色
t.pu()
t.seth(90)
t.fd(-7)
t.seth(0)
t.fd(70)
t.pd()
t.begin_fill()
t.seth(100)
t.circle(-50, 50)
t.circle(-10, 120)
t.circle(-50, 54)
t.end_fill()
# 右耳
t.pu()
t.seth(90)
t.fd(-12)
t.seth(0)
t.fd(30)
t.pd()
t.begin_fill()
t.seth(100)
t.circle(-50, 50)
t.circle(-10, 120)
t.circle(-50, 56)
t.end_fill()

6. 绘制眼睛

# 左眼
t.color((255, 155, 192), "white")   # 画笔色是浅粉,填充色是白色
t.pu()
t.seth(90)
t.fd(-20)
t.seth(0)
t.fd(-95)
t.pd()
t.begin_fill()
t.circle(15)
t.end_fill()
# 左眼珠
t.color("black")    # 设置为黑色
t.pu()
t.seth(90)
t.fd(12)
t.seth(0)
t.fd(-3)
t.pd()
t.begin_fill()
t.circle(3)
t.end_fill()
# 右眼
t.color((255, 155, 192), "white")   # 画笔色是浅粉,填充色是粉色
t.pu()
t.seth(90)
t.fd(-25)
t.seth(0)
t.fd(40)
t.pd()
t.begin_fill()
t.circle(15)
t.end_fill()
# 右眼珠
t.color("black")    # 设置为黑色
t.pu()
t.seth(90)
t.fd(12)
t.seth(0)
t.fd(-3)
t.pd()
t.begin_fill()
t.circle(3)
t.end_fill()

7. 绘制脸

# 脸
t.color((255, 155, 192))
t.pu()
t.seth(90)
t.fd(-95)
t.seth(0)
t.fd(65)
t.pd()
t.begin_fill()
t.circle(30)
t.end_fill()

8. 绘制嘴

# 嘴
t.color(239, 69, 19)
t.pu()
t.seth(90)
t.fd(15)
t.seth(0)
t.fd(-100)
t.pd()
t.seth(-80)
t.circle(30, 40)
t.circle(40, 80)

9. 绘制身体

# 身体
t.color("red", (255, 99, 71))   # 填充为红色
t.pu()
t.seth(90)
t.fd(-20)
t.seth(0)
t.fd(-78)
t.pd()
t.begin_fill()
t.seth(-130)
t.circle(100, 10)
t.circle(300, 30)
t.seth(0)
t.fd(230)
t.seth(90)
t.circle(300, 30)
t.circle(100, 3)
t.color((255, 155, 192), (255, 100, 100))
t.seth(-135)
t.circle(-80, 63)
t.circle(-150, 24)
t.end_fill()

10.绘制手

# 左手
t.color((255, 155, 192))
t.pu()
t.seth(90)
t.fd(-40)
t.seth(0)
t.fd(-27)
t.pd()
t.seth(-160)
t.circle(300, 15)
t.pu()
t.seth(90)
t.fd(15)
t.seth(0)
t.fd(0)
t.pd()
t.seth(-10)
t.circle(-20, 90)
# 右手
t.pu()
t.seth(90)
t.fd(30)
t.seth(0)
t.fd(237)
t.pd()
t.seth(-20)
t.circle(-300, 15)
t.pu()
t.seth(90)
t.fd(20)
t.seth(0)
t.fd(0)
t.pd()
t.seth(-170)
t.circle(20, 90)

11.绘制脚

# 左脚
t.pensize(10)
t.color((240, 128, 128))
t.pu()
t.seth(90)
t.fd(-75)
t.seth(0)
t.fd(-180)
t.pd()
t.seth(-90)
t.fd(40)
t.seth(-180)
t.color("black")
t.pensize(15)
t.fd(20)
# 右脚
t.pensize(10)
t.color((240, 128, 128))
t.pu()
t.seth(90)
t.fd(40)
t.seth(0)
t.fd(90)
t.pd()
t.seth(-90)
t.fd(40)
t.seth(-180)
t.color("black")
t.pensize(15)
t.fd(20)

12.绘制尾巴

# 尾巴
t.pensize(4)
t.color((255, 155, 192))
t.pu()
t.seth(90)
t.fd(70)
t.seth(0)
t.fd(95)
t.pd()
t.seth(0)
t.circle(70, 20)
t.circle(10, 330)
t.circle(70, 30)

三、项目展示

在这里插入图片描述

总结:

​ 我觉得此次项目非常成功,从组队到选择项目,一气呵成,组完便选;从小组分工到完成项目,分工明确,各司其职,其中遇到了很多问题,比如说:这个头和身体对接不上,小猪的鼻孔位置偏离了,不过在我们互帮互助下完成了这个项目,看到成品的那一刻,我觉得我们几天的勤勤恳恳都是值得的。非常感谢你们的配合,跟你们合作很愉快,谢谢你们!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

农场农庄偷菜卖菜h5多端流量主小程序开发

农场农庄偷菜卖菜h5多端流量主小程序开发 种菜&#xff0c;收菜&#xff0c;偷菜&#xff0c;卖菜&#xff09;玩法。 功能&#xff1a;动态背包&#xff0c;动态排行榜&#xff0c;定时收获&#xff0c;广告组件接入&#xff0c;背景音乐&#xff0c;按钮点击声音接入&#x…

多线程概念,常用接口与多进程之间的比较

多线程概念&#xff0c;常用接口与多进程之间的比较 多线程概念与常用接口多线程概念与相对于线程的区别什么是多线程&#xff08;概念&#xff09;进程和线程的区别在Linux系统下&#xff0c;进程和线程的区别如下&#xff1a;多进程和多线程优缺点比较&#xff1a;在多任务处…

国产仪器 1612A无线信道仿真器

1612A无线信道仿真器是一款专门的无线信道仿真设备&#xff0c;可准确实时仿真复杂的无线信道特征&#xff0c;包含路径损耗、延迟、多径衰落以及噪声等&#xff0c;重现真实的信号传播环境&#xff0c;用于对比测试及反复测试&#xff0c;加快问题的发现及解决的过程。本产品突…

canvas学习笔记

其实还有react还没有学&#xff0c;但是公司技术栈里面有canvas&#xff0c;所以先系统学习一下canvas 一、canvas 简介 ​<canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也…

微服务之服务间通信:关于Feign的练习demo

一、主要流程&#xff1a; 创建两个最基础的springboot项目调用方引入Feign的依赖在调用方服务项目中创建agent接口类&#xff0c;类使用FeignClient注解&#xff0c;注解重点配置url&#xff08;即被调用方服务所在的地址ip端口号&#xff09;、写接口方法等。在具体业务代码…

Softing邀您参加第16届诊断大会

第16届机电车辆系统诊断大会将于2023年5月23-24日在德累斯顿举行。今年的主题将再次围绕预测性维护、远程诊断、机器学习、标准化以及检验和ePTI方面的当前挑战和新技术展开。 在5月23日&#xff08;周二&#xff09;&#xff0c;Softing汽车电子的创新与测试经理-Jrgen Heilm…

【FMC147】 基于VITA57.4标准的单通道6GSPS 12位采样ADC,单通道 6GSPS 16位采样DAC子卡模块

板卡概述 FMC147是一款单通道6.4GSPS&#xff08;或者配置成2通道3.2GSPS&#xff09;采样率的12位AD采集、单通道6GSPS&#xff08;或配置成2通道3GSPS&#xff09;采样率16位DA输出子卡模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.4规范&#xff0c;该模块可以作…

React 内 JSX了解及使用

Jsx的全称是Javascript XML&#xff0c;react定义的一种类似XML的JS拓展语法&#xff1a;JSXML&#xff0c;使我们可以用类似于xml方式描述视图。 本质是React.createElement(component, props, ...children) 的语法糖 原理&#xff1a;babel-loader会预编译JSx为React.creat…

【论文阅读-TPAMI2021】Curriculum Learning(课程学习)综述

简介 Curriculum learning (CL&#xff0c;课程学习)是一种模型训练策略&#xff0c;通过先让模型学习简单数据后再学习困难数据的方式模拟学生进行课程学习的场景。通用的课程学习框架为Difficulty Measurer &#xff08;困难程度评估&#xff09; Training Scheduler&#x…

基于分页实现数据的增删查改

一&#xff1a;主要思路 1:分页功能: 新建一个实体类&#xff0c;用来存储每页数据&#xff0c;数据量&#xff0c;页码&#xff0c;页数&#xff0c;下一页&#xff0c;上一页的相关信息。 Data public class PageModel<T> {//本页数据private List<T> pageDat…

当年差点把我折磨疯的DOS下的打字游戏

最近群里有人喊有没有好用的打字游戏&#xff0c;想给学生找点事儿做&#xff0c;省得他们调皮。我就突然想到当年差点把我折磨疯的这个TT游戏。 记得之前有一个版本我可以使用&#xff0c;打开一看自己当初还写了一段好简单的介绍&#xff0c;就一行字 把tt.com文件拖到DOSB…

C. Plasticine zebra(思维)

Problem - C - Codeforces 这道题目要求你从一个由b和w组成的字符串中选择连续的、交替出现的颜色块来拼出斑马纹路&#xff0c;然后对这个字符串进行零次或多次的切分、翻转和粘合操作&#xff0c;以达到最大的斑马长度。 具体来说&#xff0c;Grisha想要选择若干连续的、交替…

STM32HAL库 总线舵机驱动库的编写

STM32 HAL库 总线舵机驱动库的编写 文章目录 STM32 HAL库 总线舵机驱动库的编写1 理论基础1.1 硬件1.2 电路图1.3 原理1.4 通信协议 2 程序编写2.1 cube mx设置&#xff08;1&#xff09;USART1设置&#xff08;2&#xff09;USART3设置 2.2 程序编写&#xff08;1&#xff09;…

【C程序设计】——最简单的C语言程序

目录 &#x1f34a;&#x1f34a;一、最简单的C语言程序 1.1 最简单的C语言程序举例 1.2 C语言程序的结构 首先&#xff0c;让我们先了解一下C语言的特点&#xff1a; 语言简洁、紧凑&#xff0c;使用方便、灵活&#xff1b;运算符丰富&#xff1b;数据类型丰富&#xff1b…

806. 写字符串需要的行数

806. 写字符串需要的行数 一、题目描述&#xff1a; 我们要把给定的字符串 S 从左到右写到每一行上&#xff0c;每一行的最大宽度为100个单位&#xff0c;如果我们在写某个字母的时候会使这行超过了100 个单位&#xff0c;那么我们应该把这个字母写到下一行。我们给定了一个数…

关于ubuntu20.04 apt 安装源中搜索不到最新版本gcc 12的问题

一、问题描述 最近在搞Open 3d 点云point cloud 相关的东西&#xff0c;过程需要安装较高版本的cmake 3.20版本以上&#xff0c;3.20版本又需要gcc 更高版本 至少11.0以上&#xff0c;理论上本机配置的有 ubuntu 官方的源和阿里云的源&#xff0c;不过 通过搜索就只能搜索安装的…

大模型中的temperature参数+随机采样策略

一、问题来源&#xff1a; 使用GPT-3.5的时候发现相同的输入会得不一样的结果 二、根因定位&#xff1a; 核心就在于采样策略&#xff0c;一图胜千言&#xff1a; 上图中语言模型 (language model) 的预测输出其实是字典中所有词的概率分布&#xff0c;而通常会选择生成其中…

【JavaScript全解析】ES6定义变量与箭头函数详解

箭头函数可以说是ES6的一大亮点,使用箭头函数,可以简化编码过程,使代码更加的简洁 本文由千锋前端老师独家创作&#xff0c;主要给大家介绍了关于ES6中箭头函数的相关资料,文中通过实例代码介绍的非常详细,觉得有帮助的话可以【关注】持续追更~ ES6定义变量 我们现在知道定义…

二、easyUI中的layout(布局)组件

1.layout&#xff08;布局&#xff09;组件的概述 布局容器有5个区域&#xff1a;北、南、东、西和中间。中间区域面板是必须的&#xff0c;边缘的面板都是可选的。每个边缘区域面板都可以通过拖拽其边框改变大小&#xff0c;也可以点击折叠按钮将面板折叠起来。布局可以进行嵌…

前端单元测试是怎么做的?

为什么要做单元测试 1. 执行单元测试&#xff0c;就是为了证明这段代码的行为和我们期望的一致 2. 进行充分的单元测试&#xff0c;是提高软件质量&#xff0c;降低开发成本的必由之路 3. 在开发人员做出修改后进行可重复的单元测试可以避免产生那些令人不快的负作用 怎么去…