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( ...
随机推荐
- bzoj1296【SCOI2009】粉刷匠
1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1479 Solved: 837 [id=1296" ...
- NYOJ-------三角形
Problem A 三角形 时间限制:1000 ms | 内存限制:65535 KB 描述 在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形:如果可以组成三角形,那么 ...
- Python 多进程教程
Python2.6版本中新添了multiprocessing模块.它最初由Jesse Noller和Richard Oudkerk定义在PEP 371中.就像你能通过threading模块衍生线程一样 ...
- OOAD和UML
ooad: object oriented analysis designer 又有两个分支: ooa(object oriented analysis):what to do ood(object ...
- python os库学习笔记
os.getcwd(): 获取当前目录 os.name: 获取当前使用的操作系统 eg: print os.name os.remove(): 删除指定文件 eg: os.remove('test.t ...
- ADF_ADF基本概要(汇总)
20150601 Created By BaoXinjian
- 判断当前用户有无Administrator的权限
很方便的一个函数,有兴趣的看看! /************************************************************************/ /* 函数说明: ...
- Python 字典 items() 方法
描述 Python 字典 items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组. 语法 items() 方法语法: D.items() ...
- Python asin() 函数
描述 asin() 返回x的反正弦弧度值. 语法 以下是 asin() 方法的语法: import math math.asin(x) 注意:asin()是不能直接访问的,需要导入 math 模块,然 ...
- python标准库介绍——25 errno 模块详解
==errno 模块== ``errno`` 模块定义了许多的符号错误码, 比如 ``ENOENT`` ("没有该目录入口") 以及 ``EPERM`` ("权限被拒绝& ...