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()

 

posted @ 2018-09-18 20:01  liang哥哥  阅读(474)  评论(0)    收藏  举报