Python008: Python大作业之移动的小火车动画(一)

Python大作业

1. 要求
  • 使用Python语言,使用的库不限
  • 如下图1的火车轨道
  • 如下图2的火车(2节车厢)
  • 小火车可以在轨道上动态的运行
  • 小火车的大小可调、轨道的大小可调

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2. 用到的第三方库和函数
  • 实现这个小火车可以用turtle库matplotlib库Tkinter库

  • 但是在这里我选择使用的是Pygame库,仅调用极少量的库函数,其余为自己写的函数完成

    • 主要也想挑战一下自己,我开始做的时候比较晚,打听了一下很多同学用turtle库做的,但没听到用Pygame库做出来的,于是那我就Pygame吧~
  • 先介绍Pygame的最小框架代码如下:

import time
import pygame
from Common import Colors  # 自己定义的Color类位于Common文件中(本文暂时未给出)

# ==================================================================================================
WINDOW_SIZE = (1500, 800)  # 定义窗口的宽、高
FONT_SIZE = 30  # 设置字体大小
CARGE_SIZE = CarrigSize.middle  # 确定车的大小,关系到点源的选取和车厢的绘制
TRACK_SIZE = TrackSize.large  # 指定车轨道的大小
START_POINT = (150, 750)  # 指定轨道的起点
TRAIN_SPEED = Speed.High_speed  # 指定小火车的速度
# ==================================================================================================
# 初始化
pygame.init()
# 创建窗口--大小
MyWindow = pygame.display.set_mode(WINDOW_SIZE)
# 设置窗口标题
pygame.display.set_caption("懂王唐王的小火车")
# 设置窗口背景为白色
MyWindow.fill(Colors.white)		# 颜色Color类为我自己封装的一个类吗,为了方便调用,当然你也可以选择使用RGB元组(255,255,255)
# 刷新窗口
pygame.display.flip()


# 循环保持程序的一直运行
# gameloop
g_bFlag = True
while g_bFlag:
    # ======================动画帧的刷新=========================#

    time.sleep(TRAIN_SPEED)
    # 4.检测事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:		#点击窗口的x即可退出程序,否则游戏将一直运行,并执行此循环
            g_bFlag = False

用到的Pygame库中的相关绘图函数汇总余下

# ==============================显示图形(高亮的函数是在本作业中用到的函数)=======================================#
# 1.画直线:line(画在哪, 线的颜色, 线的起点, 线的终点, 线宽=1)
pygame.draw.line()
# 2.画折线:lines(画在哪, 线的颜色, 是否闭合, 点的列表, 线宽=1)
pygame.draw.lines()
# 3.画圆:circle(where, color, 圆心坐标, 半径, 线宽)   线宽 = 0 表示实心圆
pygame.draw.circle()
# 4.画矩形:rect(where, color, 矩形范围, 线宽 = 0)
pygame.draw.rect()
# 5.画椭圆本质是画矩形的内切椭圆:ellipse(where, color, 矩形范围, 线宽 = 0)
# 本作业中并未用到
pygame.draw.ellipse()
# 6.画弧线:arc(where, color, 矩形范围, 起始弧度(rad), 终止弧度(rad), 线宽 = 1)
pygame.draw.arc()

# ===========================开始界面的静态效果================================#
# ====图片====#(在本作业中也没有用到,这里仅作为学习记录)
# image1 = pygame.image.load('pict/猫咪2.jpg')   # 1.加载图片
# MyWindow.blit(image1, (0, 0))  			   	# 2.渲染图片
# 操作图片
#   1)获取大小
# w, h = image1.get_size()
#   2)旋转和缩放
# image2 = pygame.transform.scale(image1, MyWindow.get_size())  # 方式1:会发生形变
# image3 = pygame.transform.rotozoom(image1, 0, 2)  			# 方式2:不会形变
# MyWindow.blit(image3, (0, 0))									# 渲染

# 4.刷新       -第一次刷新用   pygame.display.flip()
#             -第二次以后用   pygame.display.update()
4. 后续的算法和实现请看下文

书接下文:Python009: Python大作业之移动的小火车动画(二)设计思路

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
python大作业 一、Turtle创意大PK 自拟题目,完成一个利用Python程序的创意绘图,采用turtle库绘图为主,不少于50行代码,可选采用其他库。 (滑稽绘制) 二、程序练习 2.1 问题描述(10分) 人们常常提到"一万小时定律",就是不管你做什么事情,只要坚持一万小时,应该都可以成为该领域的专家。那么,10000小时是多少年多少天呢? 2.2 问题描述(10分)0380031003800341590145037657 编写计算从n到m和的函数‬,函数名为sum(n,m)‬,函数返回值为n到m所有数据的和‬,使用该函数计算输入数据x,y之间所有数据的和。 2.3 问题描述(15分) 编写函数judgeTri(a,b,c),判断以参数a,b,c的值为边长能否构成三角形并判断三角形的形状;若是锐角三角形,返回R;若是直角三角形,返回Z;若是钝角三角形,返回D;若三边长不能构成三角形,返回ERROR。 2.4 问题描述(15分) 用户输入一个字符串,分别统计其中小写字母、大写字母、数字、空格和其他字符的个数,并在一行内输出小写字母、大写字母、数字、空格和其他字符的个数。 2.5 问题描述(20分) 程序的功能: (1) 使用随机库功能,生成一个包含10个不重复且小于200的正整数列表ls1,输出ls1。‬ (2) 使用列表排序方法,对ls1按奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变进行排序,再输出ls1。‬ (3) 使用列表排序方法,对ls1按元素字符长度降序进行排序,输出ls1。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咖啡与乌龙

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值