pygame
import pygame, sys
from pygame.locals import *
import numpy as np
pygame.init() # 用于初始化,需要在调用其他pygame函数前被调用 # screen = pygame.display.set_mode((400, 300)) # 用于创建Surface对象用于绘图,为该函数提供一个元祖来表示对象的大小 # pygame.display.set_caption('hello world!') # 为窗口设置指定的标题 # while True: # sysFont = pygame.font.SysFont('None', 19) # 创建字体对象 # rendered = sysFont.render('Hello World', 0, (255, 100, 100)) # 在Surface对象上呈现文本 # screen.blit(rendered, (100, 100)) # 在Surface对象上进行绘制 # for event in pygame.event.get(): # 用于获取Event对象 # if event.type == QUIT: # pygame.quit() # sys.exit() # pygame.display.update()
import pygame, sys from pygame.locals import * import numpy as np pygame.init() # 用于初始化,需要在调用其他pygame函数前被调用 clock = pygame.time.Clock() # 创建一个时钟对象 screen = pygame.display.set_mode((400, 300)) # 用于创建Surface对象用于绘图,为该函数提供一个元祖来表示对象的大小 pygame.display.set_caption('hello world!') # 为窗口设置指定的标题 # img = pygame.image.load('d:/dd.jpg') img = pygame.image.load('d:/c.jpg') steps = np.linspace(20, 360, 40).astype(int) right = np.zeros((2, len(steps))) down = np.zeros((2, len(steps))) left = np.zeros((2, len(steps))) up = np.zeros((2, len(steps))) right[0] = steps right[1] = 20 down[0] = 360 left[0] = steps[::-1] left[1] = 360 up[0] = 20 up[1] = steps[::-1] pos = np.concatenate((right.T, down.T, left.T, up.T)) i = 0 while True: # 清屏 screen.fill((255, 255, 255)) if i >= len(pos): i = 0 screen.blit(img, pos[i]) i += 1 for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update() clock.tick(30) # 设置时钟周期,30即每秒钟的帧数
import pygame, sys from pygame.locals import * import numpy as np import matplotlib as mpl mpl.use('Agg') # 指定了使用非交互式后端 import matplotlib.pyplot as plt import matplotlib.backends.backend_agg as agg fig = plt.figure(figsize=[3, 3]) # 创建了一个大小为3x3平方英寸的图像 ax = fig.add_subplot(111) canvas = agg.FigureCanvasAgg(fig) # 在非交互模式下创建一个画布 def plot(data): ax.plot(data) canvas.draw() # 在画布上进行绘制 renderer = canvas.get_renderer() # 获取画布渲染器 raw_data = renderer.tostring_rgb() size = canvas.get_width_height() return pygame.image.fromstring(raw_data, size, 'RGB') pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode((400, 400)) pygame.display.set_caption('Animating Objects') img = pygame.image.load('d:/dd.jpg') steps = np.linspace(20, 360, 40).astype(int) right = np.zeros((2, len(steps))) down = np.zeros((2, len(steps))) left = np.zeros((2, len(steps))) up = np.zeros((2, len(steps))) right[0] = steps right[1] = 20 down[0] = 360 left[0] = steps[::-1] left[1] = 360 up[0] = 20 up[1] = steps[::-1] pos = np.concatenate((right.T, down.T, left.T, up.T)) i = 0 history = np.array([]) surf = plot(history) while True: # 清屏 screen.fill((255, 255, 255)) if i >= len(pos): i = 0 screen.blit(img, pos[i]) i += 1 for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update() clock.tick(30) # 设置时钟周期,30即每秒钟的帧数
# 平铺图片的完整代码 # pygame的surfarray模块可以处理PygameSurface对象和Numpy数组之间的转换 import pygame, sys from pygame.locals import * import numpy as np pygame.init() img = pygame.image.load('d:/dd.jpg') pixels = pygame.surfarray.array2d(img) # 将像素存入一个二维数组 x = pixels.shape[0] * 7 # shape属性获取像素数组pixels的形状,并据此来创建游戏界面,游戏界面的长和宽都是像素的7倍大小 y = pixels.shape[1] * 7 screen = pygame.display.set_mode((x, y)) pygame.display.set_caption('Surfarry Demo') new_pixels = np.tile(pixels, (7, 7)).astype(int) # tile函数可以平铺图片由于颜色是定义为整数,所以像素需要转换成整数 while True: # 清屏 screen.fill((255, 255, 255)) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()
# 聚类程序的完整代码 import pygame, sys from pygame.locals import * import numpy as np import sklearn.cluster positions = np.random.randint(0, 400, size=(30, 2)) # 在400x400像素的方块内随机生成30个坐标点 # 使用欧式距离来初始化关联矩阵 positions_norms = np.sum(positions ** 2, axis=1) S = - positions_norms[:, np.newaxis] - positions_norms[np.newaxis, :] + 2 * np.dot(positions, positions.T) # 将上步的结果提供给AffinityPropagation类,该类将每一个数据点标记合适的聚类编号 aff_pro = sklearn.cluster.AffinityPropagation().fit(S) labels = aff_pro.labels_ polygon_points = [] for i in range(max(labels) + 1): polygon_points.append([]) # 对数据点进行聚类 for i in range(len(labels)): polygon_points[labels[i]].append(positions[i]) pygame.init() screen = pygame.display.set_mode((400, 400)) while True: for i in range(len(polygon_points)): # 为每一个聚类绘制多边形,该函数的参数包括Surface对象,颜色和数据点列表 pygame.draw.polygon(screen, (255, 0, 0), polygon_points[i]) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()