学到《父与子编程之旅》的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中的画图初体验的更多相关文章

  1. 如何在Python中快速画图——使用Jupyter notebook的魔法函数(magic function)matplotlib inline

    如何在Python中快速画图--使用Jupyter notebook的魔法函数(magic function)matplotlib inline 先展示一段相关的代码: #we test the ac ...

  2. 炼数成金数据分析课程---10、python中如何画图

    炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...

  3. [转]Python爬虫框架--pyspider初体验

    标签: python爬虫pyspider 2015-09-05 10:57 9752人阅读 评论(0) 收藏 举报  分类: Python(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  4. python中函数的初览

    资料参考来源:https://www.cnblogs.com/haifeima/p/9595449.html 现在听到函数这两个字时还会头疼一会,因为我想到的是数学中的函数,但python中的函数不会 ...

  5. appium+夜神模拟器+python安卓app爬虫初体验

    环境搭建:Windows 7 64bit jdk包:jdk-8u171-windows-x64.exe(http://www.oracle.com/technetwork/java/javase/do ...

  6. Python开发之---PyCharm初体验

    PyCharm 的初始设置(知道) 目标 恢复 PyCharm 的初始设置 第一次启动 PyCharm 新建一个 Python 项目 设置 PyCharm 的字体显示 PyCharm 的升级以及其他 ...

  7. python学习之爬虫初体验

    作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" ** 1.简述爬虫原理 通用爬虫 即(搜索 ...

  8. Python爬虫框架--pyspider初体验

    之前接触scrapy本来是想也许scrapy能够让我的爬虫更快,但是也许是我没有掌握scrapy的要领,所以爬虫运行起来并没有我想象的那么快,看这篇文章就是之前使用scrapy的写得爬虫.然后昨天我又 ...

  9. python中的画图神器——turtle模块

    turtle库的基础命令介绍(1)画布画布cancas是绘图区域,可以设置它的大小和初始位置 turtle.screensize(1000,600,'red') 大小的设置 turtle.setup( ...

随机推荐

  1. 动态布局中RadioGroup的RadioButton有时候不相互排斥的原因

    近期在做一个答题类的模块,有单选.简答.调查问卷等,我是用动态布局的方式生成答题项的.在弄单选的时候遇到一个比較奇葩的问题,在代码中生成RadioGroup和RadioButton的时候.会发现不能相 ...

  2. 【Linux】echo命令

    用途 echo是用于终端打印的基本命令 说明 只需要使用带双引号的文本,结合echo命令就可以将文本打印在终端. [root@localhost test]# echo "Hello Wor ...

  3. 新浪微博API使用初步介绍——解决回调地址的问题

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博API使用初步介绍——解决回调地址的问题 #http://blog.csdn.net/monsion ...

  4. eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

    明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只 ...

  5. 微信小程序独家秘笈之左滑删除

    代码地址如下:http://www.demodashi.com/demo/14056.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  6. div 模糊效果

    -webkit-filter:blur(3px); -moz-filter:blur(3px); filter:url(blur.svg#blur); filter: progid:DXImageTr ...

  7. 转:【微信小程序常见问题】下拉框选择器设置picker属性。(包括:城市、日期和时间选择器)

    1.picker写法(支持日期Date.时间Time和城市自定义) wxml文件 <picker bindchange="bindPickerChange" value=&q ...

  8. TP3.2中filed和find()使用

    1.总结:filed和find(),进行一维数组查询指定字段时,可以进行配合使用,获得结果:key:value; 但官方没有明确指出. 2.filed和getFiled最终的结果是不一样的,一个获得的 ...

  9. java 运行时环境和编译器环境

    必须要保证运行环境高于编译环境 1.编译器的环境设置 单击项目右键-> Properties -> Java Compiler -> 5或6 如果编译器的环境高于运行时环境会报错. ...

  10. 【LeetCode】104. Maximum Depth of Binary Tree (2 solutions)

    Maximum Depth of Binary Tree  Given a binary tree, find its maximum depth. The maximum depth is the ...