pygame实现旋转的摩天轮

董世浩编辑:

QQ:2801081173

说明:在pycharm平台实现的图像旋转

一、案例描述

通过确定圆心,在一个以坐标原点为圆心的假想圆的圆周上绘制一定数量的点,并在这些点和圆心之间做直线,同时为每条直线圆心处的点和圆周上的点设定一种颜色,使得颜色渐变,最终让其旋转起来。

知识点:

窗口的绘制,等分点的寻找

二、实现步骤

​ 1、首先使用pygame创建一个窗口,以便显示图像

​ 2、通过循环找出半径为300,圆心位置在(500,500)上的30个等分点

​ 3、构建draw()函数,进行圆心位置与等分点的连线

​ 4、设置时钟信号与清屏功能,产生旋转效果

三、实现算法

首先,使用DDA算法画直线

    DDA算法'''if k > -1 and k < 1:# X 最大位移while True:if x > x1:breakadd_pixel(x, y, bx, 1)x = x+1y = y+kelif k >= 1:# Y 最大位移while True:if y > y1:breakadd_pixel(x, y, bx, 1)y = y+1x = x+1/kelse:while True:if y < y1:breakadd_pixel(x, y, bx, 1)y = y-1x = x-1/k

再实现Bresenham算法构建直线

    if k > 1:while True:if y > y1:breakadd_pixel(x, y, ax, 0)y = y + 1d = d + 1 / kif d > 0.5:x = x + 1d = d - 1elif k > 0:while True:if x > x1:breakadd_pixel(x, y, ax, 0)x = x + 1d = d + kif d > 0.5:y = y + 1d = d - 1elif k > -1:while True:if x > x1:breakadd_pixel(x, y, ax, 0)x = x + 1d = d - kif d > 0.5:y = y - 1d = d - 1else:while True:if y < y1:breakadd_pixel(x, y, ax, 0)y = y - 1d = d - 1 / kif d > 0.5:x = x + 1d = d - 1

实现旋转的摩天轮的完整代码:

import pygame, os
import numpy as nppi = 3.1415
FPS = 100thare = 0fpsClock = pygame.time.Clock()
# 初始化pygame
pygame.init()
R = 300 # 半径
number_point = 30 # 等分点数量temp = np.linspace(0, 2 * np.pi, 1000)
X = np.sin(temp) * R
Y = np.cos(temp) * R# 设置窗口的大小,单位为像素
screen = pygame.display.set_mode((1000, 1000))
pygame.display.set_caption('xuanzhaun')
# 定义颜色
BLACK = ( 0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = ( 0, 255, 0)
BLUE = ( 0, 0, 255)
# 设置背景颜色
screen.fill(WHITE)# 绘制一条线
def draw():for i in range(30):m = int(x[i] + 500)n = int(y[i] + 500)pygame.draw.line(screen, GREEN, [500, 500], [m,n], 3)pygame.draw.circle(screen, BLUE, [m,n], 10, 0)#pygame.display.update()# 设置pygame时钟的间隔时间fpsClock.tick(FPS)while(thare<100000):x = []y = []for i in range(number_point):x.append(R * np.sin(i * 2 * pi / number_point + thare))y.append(R * np.cos(i * 2 * pi / number_point + thare))thare = thare+1pygame.draw.circle(screen, GREEN, [500, 500], 300, 1)draw()pygame.display.update()screen.fill(WHITE)

四、实现效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4N40Sutf-1603118083564)(file:///C:\Users\dsh\AppData\Roaming\Tencent\Users\2801081173\QQ\WinTemp\RichOle\2O4NR87HYLS}~X`UY7EUD%M.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuvnDkFG-1603118083567)(C:\Users\dsh\Desktop\发发发.gif)]

五、总结

pygame.display.update()
screen.fill(WHITE)

### 四、实现效果[外链图片转存中...(img-4N40Sutf-1603118083564)][外链图片转存中...(img-cuvnDkFG-1603118083567)]### 五、总结​ 在老师发了本次作业后,我最开始看了关于MFC实现的相关程序,仔细阅读完程序后,就决定用Python来实现这么一个动画过程。在实现的过程中,也是遇到了许多的小问题,比如设置好增加角度循环,再重绘显示后,在背景框上并没有动画的显示。在翻阅资料后才知道,必须在绘制过程中加一个时钟延时过程,才可以看见动画效果。

pygame实现旋转的摩天轮相关推荐

  1. 动画-实现一个摩天轮

    实现一个摩天轮效果 1.全部代码 2.添加图片 3.定义动画 4.调用动画 1.全部代码 <!DOCTYPE html> <html lang="en"> ...

  2. css3动画的实例——摩天轮

    css3动画的实例讲解 什么困难都不能阻挡我们的学习路程,相比知识,我们更应该拥有的是逆战的勇气,这样才能更好地学好知识,那让我们来一起学习吧.下面就是我的css3动画的实例--摩天轮,在过程中可以联 ...

  3. 摩天轮社区_看房日记:难得!宜宾,又来一楼盘!一线江景+公园+学校,还有小户型、摩天轮...

    文/ 冰冰 宜宾,又来一新盘 算是目前临港在售楼盘中,离江最近的一个盘 一线江景+公园+学校+小户型+摩天轮 要知道,在临港,最缺的就是学校和桥,而这个楼盘,居然两样都不缺! 究竟是谁? 冰冰到现场来 ...

  4. UESTC_摩天轮 2015 UESTC Training for Dynamic ProgrammingProblem K

    K - 摩天轮 Time Limit: 10000/4000MS (Java/Others)     Memory Limit: 262143/262143KB (Java/Others) Submi ...

  5. CSS3干货15:旋转摩天轮

    今天做项目,无意看到个摩天轮效果,甚是有意思,决定自己来做做.原效果是JS 写的,我懒得用JS,就用 CSS3 写一个.那么多美女围绕着转,开心的要死,所以放了个单纯的小男孩在中间代表我的心情~ 效果 ...

  6. pygame 如何旋转图片

    可以使用 pygame.transform.rotate(图片对象,旋转角度)来实现. 一开始是我按下方红框写代码,但是火箭并未被旋转. 实际上pygame.transform.rotate(Surf ...

  7. 2D动画——CSS制作摩天轮

    1.步骤 需要的素材分为三个部分,一个是底部位置固定的支架:一个是中间旋转的骨架:一个是单个座位: 分为三个盒子分别装这三种素材,第一个盒子放骨架,第二个盒子利用绝对定位放在第一个盒子之上,里面放单个 ...

  8. 利用CSS3动画制作摩天轮

    本篇文章向大家介绍利用CSS3动画制作摩天轮旋转特效,代码很简单,还不赶紧学起来,发给你的小朋友看看吧! 运行效果: 代码: <!DOCTYPE html> <html>< ...

  9. 运用css和Html动画实现会动的摩天轮

    摩天轮效果图如下: html布局如下 css样式如下: * {margin: 0;padding: 0; }body, html {height: 100%; }body {background: u ...

最新文章

  1. adb 命令 (01)
  2. opencv图片线性混合可调
  3. 飞桨 AI Studio 课程学习 可以成为一名优秀的算法工程师
  4. VS2015配置内核WDK7600环境,32位下.
  5. ElasticSearch 新增节点,横向扩容
  6. 删库跑路如何预防?—— Oracle创建只读账号详细教程
  7. ”三不跳“ - 再说跳槽
  8. 百度富文本编辑器 设置图片的显示大小
  9. 实验室设备管理系统的设计与实现程序设计与实现
  10. 实体消歧 Entity Disambiguiation
  11. Linux学习简单教程和常用命令(小白学习法)
  12. hosts.ics或hosts权限修改、GitHub无法访问Windows下载问题
  13. 工具人实锤!我用java中的文件IO流帮同事处理了足足18M的文本数据,泪目(一)
  14. 太为难我了,阿里面试了7轮...
  15. 【C++ set的基本操作】
  16. 中科燕园GIS外包--移动GIS
  17. 自定义控件:图片轮播,点击图片进入webview
  18. vSphere ESXI 详细安装教程,附文件
  19. 2020新版siteground主机空间服务器购买选择图文教程-跨境电商外贸网站最佳主机空间
  20. 目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

热门文章

  1. 寄语八十年代的新一代
  2. spring什么时候实例化bean
  3. Related Field got invalid lookup: icontains
  4. vue.js 获取当前屏幕的宽度_vue 获取当前屏幕的宽度,图片等比例缩放,动态设置css样式...
  5. Vim插件管理工具Vundle以及常用插件
  6. 【leetcode买卖股票系列问题】多次买卖/手续费/冻结期
  7. 金山WPS移动端笔试-android方向
  8. BREW J2ME相得益彰
  9. 8.spring系列- java注解
  10. delphi fastreport常用打印设置