学到《父与子编程之旅》的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. appium+夜神模拟器+python安卓app爬虫初体验

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

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

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

  6. python学习之爬虫初体验

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

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

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

  8. 菜鸟学IT之python网页爬取初体验

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2881 1. 简单说明爬虫原理 爬虫简单来说就是通过程序模拟浏览器放松请求站 ...

  9. python中matplotlib画图

    参考 https://blog.csdn.net/u010358304/article/details/78906768 https://www.cnblogs.com/onemorepoint/p/ ...

随机推荐

  1. DOM动画效果的基础入门2

    一.动画效果 Transform字面上就是变形,改变的意思,在css3中transform主要包括以下几种: 选转 rotate,扭曲 skew 缩放 scale 和移动translate 以及矩形变 ...

  2. 64位Win7 VS调试、PLSQL与oracle的连接异常问题

    系统换为64位Win7后,VS与Oracle开发环境出现了很多问题.调试无法连接Oracle,PLSQL无法连接Oracle等一系列问题.下面记录一下处理办法: 1.oracle客户端选择32位进行安 ...

  3. 云计算 云服务 hadoop

    云:是一种虚拟化的技术,重在资源管理. 云服务是云计算的一种商业模式,有三个层次: Iaas:场外服务器,存储和网络硬件:节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用 Paas ...

  4. HDU3466背包01

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  5. JavaScriptMinifier C#压缩Javascript

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...

  6. .net如何判断网页是否由搜索引擎蜘蛛访问?

    判断 this.Request.UserAgent Google的蜘蛛: Googlebot百度的蜘蛛:baiduspiderYahoo的蜘蛛:Yahoo SlurpMSN的蜘蛛:MsnbotAlta ...

  7. MS-SQL索引类型

    一.索引的概念     索引就是加快检索表中数据的方法.数据库的索引类似于书籍的索引.在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的 ...

  8. C# DateTime类,TimeSpan类

    DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue     表示 DateTime 的最小可能值 ...

  9. 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统

    上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...

  10. 并行(Parallelism)与并发(Concurrency)

    并行(Parallelism):多任务在同一时刻运行.例如,多个任务在多核处理器上运行. 并发(Concurrency):两个或者两个以上的任务在一段时间内开始.运行.完成,这意味着它们不是在同一时刻 ...