标签: pygame

在pygame中绘制透明矩形

如何绘制具有alpha颜色的矩形?我有:

windowSurface = pygame.display.set_mode((1000, 750), pygame.DOUBLEBUF)
pygame.draw.rect(windowSurface, pygame.Color(255, 255, 255, 128), pygame.Rect(0, 0, 1000, 750))
Run Code Online (Sandbox Code Playgroud)

但我希望白色矩形透明度为50%,但alpha值似乎不起作用.

python pygame

29
推荐指数
2
解决办法
4万
查看次数

如何在Python中抑制控制台输出?

我正在使用Pygame/SDL的操纵杆模块从游戏手柄获取输入.每当我调用它的get_hat()方法时,它就会打印到控制台.这是有问题的,因为我使用控制台来帮助我调试,现在它SDL_JoystickGetHat value:0:每秒被淹没60次.有没有办法可以禁用它?通过Pygame/SDL中的选项或在函数调用时抑制控制台输出?我在Pygame文档中没有提到这一点.

编辑:原来是由于在编译SDL库时打开了调试.

python pygame sdl

28
推荐指数
5
解决办法
5万
查看次数

如何在pygame中获得键盘输入?

我在pygame 1.9.2中制作游戏.这是一个非常简单的游戏,其中一艘船在五列坏人之间移动,他们通过缓慢向下移动进行攻击.我试图使船只用左右箭头键左右移动.这是我的代码:

keys=pygame.key.get_pressed()
if keys[K_LEFT]:
    location-=1
    if location==-1:
        location=0
if keys[K_RIGHT]:
    location+=1
    if location==5:
        location=4
Run Code Online (Sandbox Code Playgroud)

它运作得很好.船移得太快了.它几乎不可能只移动一个位置,左或右.我怎么能这样做,所以每次按下按键时船只移动一次?

keyboard pygame

28
推荐指数
3
解决办法
12万
查看次数

为什么在导入pygame时,会打印版本和欢迎消息.怎么删除它?

为什么在导入pygame时会出现消息,它会打印版本和欢迎消息.消息显示

"pygame 1.9.4 Hello from the pygame community.
 https://www.pygame.org/contribute.html" 
Run Code Online (Sandbox Code Playgroud)

如何禁用此消息?

python terminal pygame

26
推荐指数
4
解决办法
7748
查看次数

如何在Pygame中将图像缩放到屏幕大小

我想知道如何将pygame项目中图像的大小缩放到屏幕的分辨率.例如,设想以下场景假设当前窗口显示模式; 我假设全屏将是相同的:

  • 我有一个1600x900背景图像,当然在1600x900窗口中本地显示

  • 在一个1280x720窗口中,我显然可以将这个图像缩放到1280x720

  • 然而,如果我需要添加,请说一个尺寸适合原始背景的300x300 px图像x,y 1440,860(示例尺寸)会发生什么1600x900?当然,对于1600x900我当然可以原生使用图像,但是较小/较大的窗口大小呢?

基本上,如何将图像缩放到窗口大小然后相应地定位?我想必须有一个非常简单的自动化方法,但现在我无法弄清楚,坦率地说没有时间去搜索它...

提前谢谢,Ilmiont

python scaling pygame background image

25
推荐指数
2
解决办法
7万
查看次数

我在哪里可以找到并安装pygame的依赖项?

我对linux比较新,我正在尝试为python安装pygame dev环境.当我运行setup.py时,它说我需要安装以下依赖项,其中一个是我找到并安装的(SDL).然而,其他人更难以捉摸.

Hunting dependencies...
sh: smpeg-config: command not found
WARNING: "smpeg-config" failed!
SDL     : found 1.2.14
FONT    : not found
IMAGE   : not found
MIXER   : not found
SMPEG   : not found
PNG     : not found
JPEG    : not found
SCRAP   : found
PORTMIDI: not found
PORTTIME: not found
Run Code Online (Sandbox Code Playgroud)

如果你能给我一些指导,我会很感激.

谢谢.

python linux debian pygame

24
推荐指数
3
解决办法
2万
查看次数

线程Thread-1中的Python异常(最有可能在解释器关闭期间引发)?

我和我的朋友一直致力于一个大型项目,以便在python和PyGame中学习和娱乐.基本上它是一个小村庄的AI模拟.我们想要一个日/夜循环,所以我找到了一种利用numpy改变整个表面颜色的巧妙方法(特别是交叉渐变教程) - http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro. HTML

我将它实现到代码中并且工作正常,但速度非常慢,比如<1 fps slow.所以我看看线程(因为我想最终添加它)并在队列中找到这个页面 - 在python中学习队列模块(如何运行它)

我花了大约15分钟制作一个基本系统,但是一旦我运行它,窗口关闭,它说

Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Run Code Online (Sandbox Code Playgroud)

编辑:这就是它所说的全部,没有回溯错误

我不知道我做错了什么,但我想我错过了一些简单的事情.我在下面添加了代码的必要部分.

q_in = Queue.Queue(maxsize=0)

q_out = Queue.Queue(maxsize=0)

def run():    #Here is where the main stuff happens
    #There is more here I am just showing the essential parts
    while True:
        a = abs(abs(world.degree-180)-180)/400.

        #Process world
        world.process(time_passed_seconds)

        blank_surface = pygame.Surface(SCREEN_SIZE)
        world.render(blank_surface)    #The world class renders everything onto a blank surface
        q_in.put((blank_surface, a))
        screen.blit(q_out.get(), (0,0))

def DayNight():
    while True:
        blank_surface, a = …
Run Code Online (Sandbox Code Playgroud)

python queue multithreading pygame numpy

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

pyGame做3d吗?

我似乎无法在任何地方找到这个问题的答案.我意识到你必须使用pyOpenGL或类似的东西做openGL的东西,但我想知道它是否可以做非常基本的3D图形而没有任何其他依赖.

python 3d pygame

23
推荐指数
5
解决办法
2万
查看次数

与blitting有点混淆(Pygame)

我刚开始学习一些pygame(整体编程很新),我有一些关于它是如何工作的非常基本的问题.

我还没有找到一个地方解释我何时需要blit或不在屏幕上包含某个表面.例如,绘制圆形时:

circle = pygame.draw.circle(screen, (0, 0, 0), (100, 100), 15, 1)
Run Code Online (Sandbox Code Playgroud)

我不需要这样做screen.blit(circle),但在显示文字时:

text = font.render("TEXT", 1, (10, 10, 10)) 
textpos = text.get_rect()
textpos.centerx = screen.get_rect().centerx
screen.blit(text, textpos)
Run Code Online (Sandbox Code Playgroud)

如果我不blit,文本将不会出现.

说实话,我真的不知道blitting应该做什么,除了将所需的表面"粘贴"到屏幕上.我希望我已经足够清楚了.

python pygame blit

23
推荐指数
2
解决办法
4万
查看次数

如何在python中播放wav文件?

我尝试使用pygame来播放这样的wav文件:

import pygame
pygame.init()

pygame.mixer.music.load("mysound.wav")
pygame.mixer.music.play()
pygame.event.wait()
Run Code Online (Sandbox Code Playgroud)

但它改变了声音,我不知道为什么!我看了这个链接解决方案,并不能解决我的播放波形文件的问题!

对于这个解决方案,我不知道应该导入什么?

s = Sound() 
s.read('sound.wav') 
s.play()
Run Code Online (Sandbox Code Playgroud)

对于这个解决方案/ dev/dsp在新版本的linux中不存在:

from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
try:
  from ossaudiodev import AFMT_S16_NE
except ImportError:
  if byteorder == "little":
    AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
  else:
    AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
Run Code Online (Sandbox Code Playgroud)

当我尝试pyglet它给我这个错误:

import pyglet

music = pyglet.resource.media('mysound.wav')
music.play()

pyglet.app.run()
--------------------------

nima@ca005 Desktop]$ python …
Run Code Online (Sandbox Code Playgroud)

python audio pygame pyglet

23
推荐指数
3
解决办法
7万
查看次数

标签 统计

pygame ×10

python ×9

3d ×1

audio ×1

background ×1

blit ×1

debian ×1

image ×1

keyboard ×1

linux ×1

multithreading ×1

numpy ×1

pyglet ×1

queue ×1

scaling ×1

sdl ×1

terminal ×1