学到《父与子编程之旅》的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. 参数关键点和return返回多个(伪多个)值问题

    # -*- coding: cp936 -*- #python 27 #xiaodeng #参数关键点和return返回多个(伪多个)值问题 #传递参数的概念: #即:对象作为输入,发送给函数的方式 ...

  2. win10下Visual Studio 2015,C++ x64编译zlib

    前提安装了visual studio 2015      PS.几乎所有方式,x64的编译都会有点坑,鉴于网上的x86编译方式非常的多,所以不再累赘x86的编译方式 zlib下载源: 官网:http: ...

  3. 防止线程退出的几种方案-不再while(true)

    有时候 调试程序的时候 .我们需要防止程序退出.比如调试一个定时服务. 方法1 while(true) {Thread.Sleep(1000)} 方法 2——(推荐) Well when you do ...

  4. springmvc json结合

    获取json数据     名字一样就获取了 user @RequestMapping("/addUser") public String addUser(User user,Htt ...

  5. 兼容火狐,ie8的 js urlencode和urldecode

    function UrlEncode(str)//url编码{ var i,temp,p,q; var result=""; for(i=0;i<str.length;i++ ...

  6. 【ERROR】bash: vim: command not found的解决办法

    今天在学习鸟哥的菜的时候,发现自己linux不可以启用vim命令,错误为:bash: vim: command not found. 机器环境:VMWare8+RED HAT Enterprise5 ...

  7. win7 下jenkins配置与使用

    一.Jenkins的配置 1. 下载地址: Jenkins的官方网站:http://jenkins-ci.org/ 目前最新版本的Windows版:http://mirror.xmission.com ...

  8. Linux内核同步 - Seqlock

    一.前言 普通的spin lock对待reader和writer是一视同仁,RW spin lock给reader赋予了更高的优先级,那么有没有让writer优先的锁的机制呢?答案就是seqlock. ...

  9. 封ip对爬虫的影响

    今天要聊的是封ip对爬虫的影响.我认为封ip能拒绝一部分网络请求,减轻服务器的压力,但是如果要是建立一个好的ip池,封对爬虫的影响不大. 爬取国内一个拍卖公司的网站,刚开始用多进程下载,每分钟能爬取 ...

  10. Latex中定义、定理、引理、证明 设置方法总结

    Latex中定义.定理.引理.证明 设置方法总结 在LaTex中需要有关定理.公理.命题.引理.定义等时,常用如下命令 \newtheorem{定理环境名}{标题}[主计数器名] \newtheore ...