Python中的画图初体验
学到《父与子编程之旅》的16章了,跟书上的例子进行学习,学会了画圆,我又找到了画线的方法,于是就可以在screen上画日本国旗了:
手动画的不好看,也可以不手动画,直接画线:
当然也可以直接画个矩形套在外面:
代码如下:
import pygame,sys
from pygame.locals import *
print pygame.ver
pygame.init()
screen = pygame.display.set_mode([,])
color=(,,)
points=[]
screen.fill([,,])
pygame.draw.circle(screen,[,,],[,],,)
##pygame.draw.line(screen,color,(,),(,),)
##pygame.draw.line(screen,color,(,),(,),)
##pygame.draw.line(screen,color,(,),(,),)
##pygame.draw.line(screen,color,(,),(,),)
pygame.draw.rect(screen,[,,],[,,,],)
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
## if event.type==MOUSEBUTTONDOWN:
## points.append(event.pos)
## if len(points)>:
## pygame.draw.lines(screen,color, False, points, )
## pygame.display.update()
pygame.quit()
下面画一个“艺术品”,100个随机颜色随机大小的矩形,这也是书上的例子,不过让我改了一种写法,熟悉一下Python:
import pygame,sys,random
from pygame.color import THECOLORS
class draw:
def drawThePic(self):
pygame.init()
screen = pygame.display.set_mode([,])
screen.fill([,,])
for i in range():
forRect = []
for j in range():
forRect.append(random.randint(,))
pygame.draw.rect(screen,self.chooseColor(),forRect,)
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
def chooseColor(self):
color_name = random.choice(THECOLORS.keys())
color = THECOLORS[color_name]
return color
drawer = draw()
drawer.drawThePic()
上面这段程序需要注意一下,刚接触Python,调试中总会出现问题,比如改变列表中的变量的值的时候并不改变列表的值,还有方法定义的时候一定要在括号里加上self,还有调用的时候也要在前面加上self或者其他类的名字。
接下来,画一个正弦曲线:
以上是通过一个又一个小矩形拼成的不连续的正弦曲线,也可以画一个连续的正弦曲线,如下:
代码如下(##后面是之前画“艺术品”时的代码,#后面是不连续正弦曲线的代码):
import pygame,sys,random
from pygame.color import THECOLORS
import math
class draw:
def drawThePic(self):
pygame.init()
screen = pygame.display.set_mode([,])
screen.fill([,,])
plotPoints = []
for x in range(,):
y = int(math.sin(x/640.0 * * math.pi) * +)
plotPoints.append([x,y])
# forRect = [x,y,,]
## for j in range():
## forRect.append(random.randint(,))
# pygame.draw.rect(screen,self.chooseColor(),forRect,)
pygame.draw.lines(screen,self.chooseColor(),False,plotPoints,)
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
def chooseColor(self):
color_name = random.choice(THECOLORS.keys())
color = THECOLORS[color_name]
return color
drawer = draw()
drawer.drawThePic()
至此,我已经学会了画线,画正弦曲线,画圆,画矩形,um……附上一个“艺术品”的图片:
接下来,我们来做些背景图片:
代码如下:
import pygame, sys
class ImageRun:
def letImageRun(self):
pygame.init()
screen = pygame.display.set_mode([,])
screen.fill([,,])
background = pygame.image.load("C:/Users/dswu/Desktop/back.jpg")
screen.blit(background,(,))
my_image = pygame.image.load("C:/Users/dswu/Desktop/fuck16.jpg")
screen.blit(my_image, [,])
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type ==pygame.QUIT:
running = False
pygame.quit()
runImage = ImageRun()
runImage.letImageRun()
在此基础上我们就可以做个小动画了,让图片动起来:
以下代码能够让妙蛙种子左右来回运动(碰壁就反弹):
import pygame, sys
class ImageRun:
def letImageRun(self):
pygame.init()
screen = pygame.display.set_mode([,])
screen.fill([,,])
background = pygame.image.load("C:/Users/dswu/Desktop/back.png")
screen.blit(background,(,))
my_image = pygame.image.load("C:/Users/dswu/Desktop/player.png")
x =
y =
x_speed =
screen.blit(my_image, [x,y])
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type ==pygame.QUIT:
running = False
#Let the image run.
for looper in range(,):
pygame.time.delay()
background = pygame.image.load("C:/Users/dswu/Desktop/back.png")
screen.blit(background,(,))
pygame.display.flip()
pygame.time.delay()
x = x + x_speed
if x < or x > screen.get_width() - my_image.get_width():
x_speed = - x_speed
screen.blit(my_image,[x,y])
pygame.display.flip()
pygame.quit()
runImage = ImageRun()
runImage.letImageRun()
接下来……
Python中的画图初体验的更多相关文章
- 如何在Python中快速画图——使用Jupyter notebook的魔法函数(magic function)matplotlib inline
如何在Python中快速画图--使用Jupyter notebook的魔法函数(magic function)matplotlib inline 先展示一段相关的代码: #we test the ac ...
- 炼数成金数据分析课程---10、python中如何画图
炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...
- [转]Python爬虫框架--pyspider初体验
标签: python爬虫pyspider 2015-09-05 10:57 9752人阅读 评论(0) 收藏 举报 分类: Python(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- python中函数的初览
资料参考来源:https://www.cnblogs.com/haifeima/p/9595449.html 现在听到函数这两个字时还会头疼一会,因为我想到的是数学中的函数,但python中的函数不会 ...
- appium+夜神模拟器+python安卓app爬虫初体验
环境搭建:Windows 7 64bit jdk包:jdk-8u171-windows-x64.exe(http://www.oracle.com/technetwork/java/javase/do ...
- Python开发之---PyCharm初体验
PyCharm 的初始设置(知道) 目标 恢复 PyCharm 的初始设置 第一次启动 PyCharm 新建一个 Python 项目 设置 PyCharm 的字体显示 PyCharm 的升级以及其他 ...
- python学习之爬虫初体验
作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" ** 1.简述爬虫原理 通用爬虫 即(搜索 ...
- Python爬虫框架--pyspider初体验
之前接触scrapy本来是想也许scrapy能够让我的爬虫更快,但是也许是我没有掌握scrapy的要领,所以爬虫运行起来并没有我想象的那么快,看这篇文章就是之前使用scrapy的写得爬虫.然后昨天我又 ...
- python中的画图神器——turtle模块
turtle库的基础命令介绍(1)画布画布cancas是绘图区域,可以设置它的大小和初始位置 turtle.screensize(1000,600,'red') 大小的设置 turtle.setup( ...
随机推荐
- python中的多态
# -*- coding: cp936 -*- #python 27 #xiaodeng #python中的多态 #多态:一个操作的意义取决于被操作对象的类型,相同的消息给予不同的对象会引发不同的动作 ...
- Visual C#两分钟搭建BHO IE钩子
微软在1997年正式推出Browser Helper Object (BHO), 使程序员能够更好的对IE进行二次开发和操作. 在通过编写BHO程序数月后, 我希望把我的一些经验告诉才开始的同志, 避 ...
- js 随机变换图片
<div style="position:absolute;left:40%;top:10%;border-style:dotted"> <img src=&qu ...
- HDUOJ---1862EXCEL排序
EXCEL排序 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 谷歌地图地理解析和反解析geocode.geocoder详解(转)
谷歌地图地理解析和反解析geocode.geocoder详解 谷歌Geocoder服务 实例代码 地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. ...
- Jmeter --- 逻辑控制之if控制器
一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...
- DBA_实践指南系列4_Oracle Erp R12系统备份和恢复Backup(案例)
2013-12-04 Created By BaoXinjian
- GraphX实现N度关系
背景 本文给出了一个简单的计算图中每一个点的N度关系点集合的算法,也就是N跳关系. 之前通过官方文档学习和理解了一下GraphX的计算接口. N度关系 目标: 在N轮里.找到某一个点的N度关系的点集合 ...
- 关于父进程和子进程的关系(UAC 绕过思路)
表面上看.在windows中. 假设是a进程创建了b进程,那么a进程就是b进程的父进程.反之,假设是b创建了a,那么b进程就是a的父进程,这是在windows出现以来一直是程序员们都证实的,可是在在w ...
- 关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
最近在centos7中通过rpm方式安装了最新版本的mysql-server 5.7 (mysql57-community-release-el7-7.noarch.rpm) ,发现安装成功后无法使用 ...