首页 > 编程 > Python > 正文

《Hello World》python学习之pygame画图模块

2019-11-08 03:00:47
字体:
来源:转载
供稿:网友

python学习之pygame画图模块

1 安装

cmd中执行命令:pip install pygame 20170217-1.JPG 如果已经安装,则会告知“Requirement already satisified”。

2 功能

2.1 新建窗口

代码

import pygamepygame.init()screen = pygame.display.set_mode([640, 480])running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = Falsepygame.quit()

执行:

20170217-2.JPG 生成一个640*480大小的黑色窗口。

2.2 画图

代码

import pygame, syspygame.init()screen = pygame.display.set_mode([640,480])screen.fill([255,255,255]) # fill screen with white pygame.draw.circle(screen, [255,0,0],[100,100], 30, 0) # draw red circlepygame.display.flip()running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = Falsepygame.quit()

执行

20170217-3.JPG

代码screen.fill([255,255,255])将画布设置为了白色。

注意:除了pygame可以画出很多形状,如aalines,arc,circle,ellipse,lines,polygon…且可以对其大小颜色等属性进行设置。

2.3 单个像素

可以用大量很小的圆或矩形形成一个像素点。

import pygame, sysimport math pygame.init()screen = pygame.display.set_mode([640,480])screen.fill([255, 255, 255])running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False for x in range(0, 640): y = int(math.sin(x/640.0 * 4 * math.pi) * 200 + 240) # sine wave formula # draw the wave using small rectangles pygame.draw.rect(screen, [0,0,0],[x, y, 1, 1], 1) # x, y is the location of each rectangle # in the wave pygame.display.flip() pygame.time.delay(30)pygame.quit()

执行

20170217-4.JPG

2.4 图像

在屏幕上画图是一种方法,另一种是将照片添加在屏幕上。

import pygame, syspygame.init()screen = pygame.display.set_mode([640,480])screen.fill([255, 255, 255])my_ball = pygame.image.load("beach_ball.png") # load the image from a file screen.blit(my_ball, [50, 50]) # draw or 'blit' it to the screenpygame.display.flip()running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = Falsepygame.quit()

2.5 动画

在新的位置画出图形,再把原来的图形擦掉。

import pygame, syspygame.init()screen = pygame.display.set_mode([640,480])screen.fill([255, 255, 255])my_ball = pygame.image.load('beach_ball.png')screen.blit(my_ball,[50, 50]) # draw the beach ballpygame.display.flip()pygame.time.delay(2000)screen.blit(my_ball, [150, 50]) # draw it again, somewhere else# "erase" the first beach ballimagepygame.draw.rect(screen, [255,255,255], [50, 50, 90, 90], 0) pygame.display.flip()running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = Falsepygame.quit()

2.6 在2D空间中反弹

import pygame, syspygame.init()screen = pygame.display.set_mode([640,480])screen.fill([255, 255, 255])my_ball = pygame.image.load('beach_ball.png')x = 50y = 50x_speed = 10 # now we have both x_speedy_speed = 10 # and y_speedrunning = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.time.delay(20) pygame.draw.rect(screen, [255,255,255], [x, y, 90, 90], 0) x = x + x_speed # move the ball hirizontally y = y + y_speed # and vertically if x > screen.get_width() - 90 or x < 0: # bounce off the sides x_speed = - x_speed if y > screen.get_height() - 90 or y < 0: # bounce off the top, bottom y_speed = -y_speed screen.blit(my_ball, [x, y]) pygame.display.flip()pygame.quit()

20170217-5.JPG


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表