标签: pygame

如何捕获pygame屏幕?

如何捕获和保存一系列图像或pygame屏幕的视频?
基本上我想在youtube上分享我的游戏视频.另外,想要制作一个教程.

游戏主要在循环中呈现:

def main():
    while True:
        GetInput()
        Move()
        Shift()
        Draw()
Run Code Online (Sandbox Code Playgroud)

随着Draw()功能在做blit()之前做了所有的事情pygame.display.flip()

python pygame video-capture

11
推荐指数
1
解决办法
1万
查看次数

导入pygame时"通用包装器中没有匹配的体系结构"

我在运行Snow Leopard 10.6.8和Python 2.7.2的MacBook Pro上.我去了pygame网站,下载并安装了所有必需的框架和程序,编译并安装了pygame,但是我无法将模块导入到python中.我从pygame网站下载了一个示例程序,每次运行它都会出现此错误:

Traceback (most recent call last):
File "/Users/jesse/Downloads/PurpleMines/PurpleMines.py", line 3, in <module>
from pygame import *
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/__init__.py", line 95, in <module>
from pygame.base import *
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so, 2): no suitable image found.  Did find:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pygame/base.so: no matching architecture in universal wrapper
Run Code Online (Sandbox Code Playgroud)

我猜它与运行64位操作系统有关的问题?

在此先感谢您的帮助.

python macos pygame osx-snow-leopard python-2.7

11
推荐指数
1
解决办法
7958
查看次数

如何将这个(100,100)numpy数组转换为pygame中的灰度精灵?

我正在尝试制作一种称为Gabor补丁的特殊光栅,其中的一个示例可以在本教程的底部找到,其代码我移植到python.

使用matplotlib的imshow函数,我获得了以下补丁.用matplotlib的imshow显示python生成的Gabor补丁

虽然着色不同,但我怀疑这与matplotlib如何显示数值有关.在本质上,这图像是2D,100逐100像素阵列从含有值-1.01.0(含).如果有人想尝试操纵有问题的数组,我在这里将它保存为pickle对象.

我的问题如下:如何在确保满足以下条件的同时将此数组传输到pygame表面?

  1. 着色转换为灰度着色(cf:第一个链接中的最后一个图像)
  2. 解决方案必须使用pygame版本1.9.1release.出于某种莫名其妙的原因,我找不到1.9.2在我的操作系统上安装的方法(Ubuntu 13.04).在PIP上似乎没有PPA和pygame显然没有.

非常感谢您提前,如果我能提供更多信息,请告诉我!

编辑

关于@ Veedrac的解决方案(与我自己非常相似),这是我在matplotlib中使用灰度色彩图时的补丁imshow.这就是我想要的:

from matplotlib.pyplot import *
import matplotlib.cm as cm

figure()
imshow(g, cm=cm.Greys_r)
show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python pygame numpy

11
推荐指数
1
解决办法
2681
查看次数

Homebrew:没有smpeg的公式

我正在尝试使用Python3在我的Mac OS 10.6.8上安装Pygame.我正在尽力遵循这里的说明:http://florian-berger.de/en/articles/installing-pygame-for-python-3-on-os-x

直到这一步,一切似乎都很顺利:

brew install sdl sdl_image sdl_mixer sdl_ttf smpeg portmidi
Run Code Online (Sandbox Code Playgroud)

然后它失败了"没有可用的smpeg公式".如果我尝试,我会得到同样的错误:

brew install smpeg
Run Code Online (Sandbox Code Playgroud)

我查看了/ usr/local/Library/Formula,实际上它并不存在.

前进的聪明方法是什么?*查找,安装和修复旧配方?*使用另一种安装smpeg的方法?*与Homebrew相比,有更聪明的方法来安装Pygame吗?

我很欣赏有关采取方法的指导,以及有关如何将其解决方法的帮助链接.我有点达到我的系统管理技能的极限.

谢谢!

注意:我链接到的指令(使用直线点,前面没有特殊路径),加上下面选择的答案和我的评论,导致Pygame在Python 2.7中工作.我很高兴.稍后我会弄清楚如何在Python3中完成这项工作,但是现在这是一个非常可靠的胜利.

homebrew pygame python-2.7 python-3.x

11
推荐指数
1
解决办法
3109
查看次数

PyGame - 获取加载图像的大小

您好,即使您可能认为存在类似的问题,但我的情况与完全不同.

我正在尝试从目录加载图像,并将我的屏幕大小(自动)设置为正在加载的图像的大小为"背景".

import pygame
import sys
from pygame.locals import *

image_resources = "C:/Users/user/Desktop/Pygame App/image_resources/"

class load:
    def image(self, image):
        self.image = image
        return (image_resources + image)
    def texture(self, texture):
        self.texture = texture
        return (image_resources + texture)

bg = load().image("bg_solid_black.jpg")

pygame.init()

#screen = pygame.display.set_mode((width,height),0,32)

#background = pygame.image.load(bg).convert()

#width = background.get_width()
#height = background.get_height()
Run Code Online (Sandbox Code Playgroud)

我用"load()"类加载的图像被设置为变量"bg",我想使用我加载的任何大小为"bg"来确定窗口的大小.如果你试图移动

background = pygame.image.load(bg).convert()

width = background.get_width()
height = background.get_height()
Run Code Online (Sandbox Code Playgroud)

除此之外:

screen = pygame.display.set_mode((width,height),0,32)
Run Code Online (Sandbox Code Playgroud)

PyGame返回一个错误,其中指出未设置显示模式.如果我这样做:

screen = pygame.display.set_mode((width,height),0,32)

background = pygame.image.load(bg).convert()

width = background.get_width()
height = …
Run Code Online (Sandbox Code Playgroud)

python oop pygame image

11
推荐指数
1
解决办法
2万
查看次数

Pygame中的抗锯齿形状

我正在使用Pygame来绘制一些东西.问题是它们有很多别名边缘:

别名的同心圆

我想让它们更柔和,像这样:

光滑的同心圆


到目前为止,我的想法是绘制双倍大小的形状,然后使用

pygame.transform.smoothscale(surf, (w/2, h/2))
Run Code Online (Sandbox Code Playgroud)

把它缩小到我想要的尺寸.

不幸的是,如果我在透明表面上绘制我的形状,平滑刻度会使触摸透明像素的边缘变黑!

  • 如何在不将alpha透明像素变为黑色的情况下平滑图片,或者
  • 我怎么做antialias边缘?

python pygame antialiasing

11
推荐指数
2
解决办法
8255
查看次数

Android上的Pygame

我想知道是否有人可以给我详细说明如何在Android手机上运行使用Pygame开发的游戏/应用程序.我最近完成了对PacMan的编程,它在我的计算机上完美运行,但我认为如果我可以在手机上运行它会很棒.我尝试按照http://pygame.renpy.org/android-packaging.html上的说明操作,但每次我在IDLE上运行"import android"时,我都会收到错误消息,说它没有找到模块.有人可以清楚地解释如何设置Android模块吗?

另外,在我的程序中,我使用了if(event.key == K_UP或event.key == K_w)等代码:direction = UP.但是手机上没有箭头键.我需要使用什么代码来查看用户是否用手指向上滑动屏幕 - >向下或向左 - >向右等.

任何帮助都会很棒.谢谢<3

python android pygame

11
推荐指数
1
解决办法
3万
查看次数

python库pygame:居中文本

我有一个代码:

# draw text
font = pygame.font.Font(None, 25)
text = font.render("You win!", True, BLACK)
screen.blit(text, [SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2])
Run Code Online (Sandbox Code Playgroud)

我如何获得像java中的文本宽度和高度方法,所以我可以将文本居中,如:

screen.blit(text, [SCREEN_WIDTH / 2 - text_w / 2, SCREEN_HEIGHT / 2 - text_h / 2])
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,那么另一种方式是什么?我找到了这个例子,但我并没有真正理解它.

python pygame python-3.x

11
推荐指数
3
解决办法
1万
查看次数

Python:改变音频文件的音高

这是我在堆栈上的第一篇文章.到目前为止,这个网站非常有用,但我是一个新手,需要清楚解释我的问题,这与Python中的音调转换音频有关.我安装了当前的模块:numpy,scipy,pygame和scikits"samplerate"api.

我的目标是采用立体声文件,并以尽可能少的步骤以不同的音高播放.目前,我使用pygame.sndarray将文件加载到数组中,然后使用scikits.samplerate.resample应用samplerate转换,然后将输出转换回声音对象以使用pygame进行回放.问题是垃圾音频来自我的扬声器.当然,我错过了几个步骤(除了对数学和音频一无所知).

谢谢.

import time, numpy, pygame.mixer, pygame.sndarray
from scikits.samplerate import resample

pygame.mixer.init(44100,-16,2,4096)

# choose a file and make a sound object
sound_file = "tone.wav"
sound = pygame.mixer.Sound(sound_file)

# load the sound into an array
snd_array = pygame.sndarray.array(sound)

# resample. args: (target array, ratio, mode), outputs ratio * target array.
# this outputs a bunch of garbage and I don't know why.
snd_resample = resample(snd_array, 1.5, "sinc_fastest")

# take the resampled array, make it an object and stop playing after …
Run Code Online (Sandbox Code Playgroud)

python pygame scipy audio-processing

10
推荐指数
1
解决办法
6998
查看次数

Pygame中两首音乐曲目之间的淡入淡出

我的目的是让两首音乐曲目在性质上相似,在不同的时间彼此淡化.当发生这样的淡入淡出时,一个音乐曲目应该在短时间内从全音量淡入淡出,并且同时,另一个音轨应该从0渐变到100并且从同一时间索引继续播放.他们必须能够在任何时候动态地执行此操作 - 当某个动作发生时,淡入淡出将发生并且新音轨将开始播放在另一个音轨停止的相同位置.

无论是使用音量操作还是通过启动和停止音乐,这都可能是合理的(但是,似乎只存在"淡出"选项,而且缺少"fadein"选项).我怎样才能做到这一点?存在的最佳方法是什么?如果不可能使用Pygame,Pygame的替代品是可以接受的.

python pygame playback

10
推荐指数
1
解决办法
1752
查看次数