如何绘制具有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值似乎不起作用.
我正在使用Pygame/SDL的操纵杆模块从游戏手柄获取输入.每当我调用它的get_hat()方法时,它就会打印到控制台.这是有问题的,因为我使用控制台来帮助我调试,现在它SDL_JoystickGetHat value:0:每秒被淹没60次.有没有办法可以禁用它?通过Pygame/SDL中的选项或在函数调用时抑制控制台输出?我在Pygame文档中没有提到这一点.
编辑:原来是由于在编译SDL库时打开了调试.
我在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)
它运作得很好.船移得太快了.它几乎不可能只移动一个位置,左或右.我怎么能这样做,所以每次按下按键时船只移动一次?
为什么在导入pygame时会出现消息,它会打印版本和欢迎消息.消息显示
"pygame 1.9.4 Hello from the pygame community.
https://www.pygame.org/contribute.html"
Run Code Online (Sandbox Code Playgroud)
如何禁用此消息?
我想知道如何将pygame项目中图像的大小缩放到屏幕的分辨率.例如,设想以下场景假设当前窗口显示模式; 我假设全屏将是相同的:
我有一个1600x900背景图像,当然在1600x900窗口中本地显示
在一个1280x720窗口中,我显然可以将这个图像缩放到1280x720
然而,如果我需要添加,请说一个尺寸适合原始背景的300x300 px图像x,y 1440,860(示例尺寸)会发生什么1600x900?当然,对于1600x900我当然可以原生使用图像,但是较小/较大的窗口大小呢?
基本上,如何将图像缩放到窗口大小然后相应地定位?我想必须有一个非常简单的自动化方法,但现在我无法弄清楚,坦率地说没有时间去搜索它...
提前谢谢,Ilmiont
我对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和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) 我似乎无法在任何地方找到这个问题的答案.我意识到你必须使用pyOpenGL或类似的东西做openGL的东西,但我想知道它是否可以做非常基本的3D图形而没有任何其他依赖.
我刚开始学习一些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应该做什么,除了将所需的表面"粘贴"到屏幕上.我希望我已经足够清楚了.
我尝试使用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)