Pygame的混音器模块pygame.mixer.get_busy返回一个简单的布尔值.
我的问题是我有声音不断播放,如爆炸和枪声,并且需要知道特定声音何时播放以防止游戏对话重叠.
我考虑制作一个当前播放对话的列表,创建一个计时器,在每个声音被触发时倒计时,但这需要我在主游戏循环中添加声音效果(处理声音的模块)更新.
这似乎很混乱,就像一个巨大的减速.
有更清洁的方法吗?
假设我有一个列表,如:
li = ['0', ['1', '2'], ['3', ['4', '5'], '6', ['7'], '8'], '9']
Run Code Online (Sandbox Code Playgroud)
我如何实现一个以下列形式产生元组的函数(elem, indexes):
elem 是元素indexes 是达到那个元素所需的指数. 例:
>>> for x in my_func(li):
print x
('0', [0])
('1', [1, 0])
('2', [1, 1])
('3', [2, 0])
('4', [2, 1, 0])
('5', [2, 1, 1])
('6', [2, 2])
('7', [2, 3, 0])
('8', [2, 4])
('9', [3])
Run Code Online (Sandbox Code Playgroud) 我正在制作一个非常简单的游戏,其中鸟(玩家)必须躲避岩石,如果它被岩石击中,你就输了.我试图使用pygame.sprite.collide_rect()来判断它们是否触及,但我似乎无法确定如何正确使用它.
这是我的代码:
import pygame
import os, sys
import random
import time
img_path = os.path.join('C:\Python27', 'player.png')
img_path2 = os.path.join('C:\Python27', 'rock.png')
class Bird(object):
def __init__(self):
self.image_s = pygame.image.load(img_path)
self.image_b = self.image_s.get_rect()
self.x = 0
self.y = 0
def handle_keys(self):
key = pygame.key.get_pressed()
dist = 2
if key[pygame.K_DOWN]:
self.y += dist
elif key[pygame.K_UP]:
self.y -= dist
if key[pygame.K_RIGHT]:
self.x += dist
elif key[pygame.K_LEFT]:
self.x -= dist
def draw(self, surface):
surface.blit(self.image, (self.x, self.y))
def background(self, surface):
bg = os.path.join('C:\Python27', 'bg.png')
self.image2 = pygame.image.load(bg)
surface.blit(self.image2, …Run Code Online (Sandbox Code Playgroud) 我刚刚阅读了生成器,并想知道如何使用生成器:
假设有两个文件,每个文件都有一个时间列.每个文件按升序时间排序,我希望使用时间优先级抓取这些文件中的行.而不是写一个简单的表达式(见下文),我想知道创建一个生成器next()是否是一个更好/适当的方式来读取这两个文件的时间优先级.
for line1 in file1:
do_something
try:
if time1<time2:
do_something
continue
else:
do_something
except:
pass
for line2 in file2:
do_something
if time2>time1:
break
Run Code Online (Sandbox Code Playgroud) 我有这个字符串:
"{'osFreeMem': 286494720, 'osUpTime': 19230718, 'sysload': [0.24609375, 0.62109375, 0.734375], 'nodeUpTime': 1831, 'osTotMem': 536870912, 'nodeMemory': {'heapTotal': 8766304, 'heapUsed': 7789588, 'rss': 22773760}}"
Run Code Online (Sandbox Code Playgroud)
我想要一个包含这些值的字典:
'osFreeMem': 286494720
'osUpTime': 19230718
'sysload': [0.24609375, 0.62109375, 0.734375]
'nodeUpTime': 1831
'osTotMem': 536870912
'nodeMemory': {'heapTotal': 8766304, 'heapUsed': 7789588, 'rss': 22773760}
Run Code Online (Sandbox Code Playgroud)
我怎么能得到这份清单?
说我有一个字符串
"There are LJFK$(#@$34)(,0,ksdjf apples in the (4,5)"
Run Code Online (Sandbox Code Playgroud)
我希望能够将数字动态提取到列表中:[34, 0, 4, 5].
有没有一种简单的方法在Python中执行此操作?
换句话说,
有没有办法提取由任何分隔符分隔的连续数字簇?
我没有在JSON上的Pandas文档和cookbook中找到任何内容(只是引用了CSV和带有分隔符的文本文件).
是否已经定义了将JSON直接加载到DataFrame中的函数?如果有不同的选择,哪个最有效?
我正在尝试编写一个Python库,它将实现某个聊天协议的客户端.
连接到服务器后,
我启动主循环,从服务器读取并处理收到的命令,这里我需要调用回调函数(如on_message或on file_received等).
我应该怎么做呢?
应该为每个回调函数启动一个新线程吗?也许一些回调需要一些时间才能返回,我会暂停.
另外,
如果我从服务器读取的主循环在一个线程中,我可以从另一个线程写入套接字(向服务器发送消息)吗?
还是有更好的方法?谢谢.
我遇到了一个逻辑错误,即无论输入如何,精灵都不会移动.
我的代码将在下面,因此没有遗漏任何背景,它相当短.
有没有更好的方法将精灵从blit中移开?
我已经看到了一些关于更新精灵或其他一些东西的东西,完全不同于简单的blitting它.
import pygame
pygame.init()
import random
import math
screen=pygame.display.set_mode([700,400])
black = ( 0, 0, 0)
white = ( 255, 255, 255)
red = ( 255, 0, 0)
player_x=350
player_y=200
player_x_vel=0
player_y_vel=0
rot_player=pygame.image
pi=math.pi
class Player(pygame.sprite.Sprite):
def __init__(self):
global player
pygame.sprite.Sprite.__init__(self)
self.pos=(350,200)
self.image=pygame.image.load("arrowtest.png").convert()
self.rect=self.image.get_rect()
screen=pygame.display.get_surface()
self.area=screen.get_rect()
self.speed=10
self.state="still"
self.reinit()
def reinit(self):
self.state="still"
self.movepos=[0,0]
def update(self):
newpos=self.rect.move(self.movepos)
if self.area.contains(newpos):
self.rect=newpos
pygame.event.pump()
def moveup(self):
self.movepos[1]-=(self.speed)
self.state="moveup"
def movedown(self):
self.movepos[1]+=(self.speed)
self.state="movedown"
def moveleft(self):
self.movepos[0]-=(self.speed)
self.state="moveleft"
def moveright(self):
self.movepos[0]+=(self.speed)
self.state="moveright"
def moveupright(self): …Run Code Online (Sandbox Code Playgroud) 我刚开始学习pygame图形.我在pygame中画了一个圆圈,想知道我是如何编程来改变颜色的.
例如:它将颜色从蓝色更改为红色.
我需要它来改变颜色,直到我关闭pygame,如果颜色逐渐从一个变为另一个而不是瞬间改变,那将会很好吗?我有什么想法可以做到这一点?
import pygame
pygame.init()
RED = (255, 0, 0)
BLUE = ( 0, 0,255)
BLACK = ( 0, 0, 0)
SIZE = (1000,1000)
screen = pygame.display.set_mode(SIZE)
pygame.draw.circle(screen,RED,(500,500),200)
pygame.display.flip()
pygame.time.wait(3000)
pygame.quit()
Run Code Online (Sandbox Code Playgroud)