pygame自定义字体将字母放在错误的地方

时间:2014-07-08 03:09:05

标签: python fonts pygame

我正在使用的IDE(pyscripter)有字体等错误,所以我正在尝试使用自己的字体。 我在让字母出现在我想要的地方时遇到了问题。例如,

draw_word('abab',[15,10]) 

按照预期制作'abab'这个词(我迄今只制作了a和b)。但是,如果我这样做:

draw_word('abab',[50,10])

然后这些字母被拉出来了。我想把这个词放在x = 50的屏幕上。

draw_word('abab',[5,10])

这会抬起单词,而不是在x = 5时将其放到屏幕上。

我如何解决这个问题及其原因?

完整的代码是:

draw_word('abab',[15,10])

这叫:

  def draw_word(word,xy):
    loc=1 # short for location
    for letter in word:
        draw_letter(letter,[(xy[0]*loc),xy[1]]) #uses loc to move the letter over
        loc+=1 #next letter

这叫:

def draw_letter(letter,xy):
l=pygame.image.load(('letters/'+letter+'.png')).convert()
l.set_colorkey(WHITE)
screen.blit(l,xy)

1 个答案:

答案 0 :(得分:0)

print xy[0]*loc中添加for letter in word,您就会明白为什么在错误的地方收到信件。

x=50示例:第一个字母50 * 1 = 50,下一个字母50 * 2 = 100,下一个字母50 * 3 = 150

你需要:

def draw_word(word,xy):
    loc=0 # short for location
    for letter in word:
        draw_letter(letter,[(xy[0]+loc),xy[1]]) #uses loc to move the letter over
        loc += 20 #next letter

使用loc += 20中的其他值来获得更好的字母间距。


BTW:你可以这样写:

def draw_word(word,xy, distance=20)
    for letter in word:
        draw_letter(letter,xy)
        xy[0] += distance

现在你可以使用它了

draw_word('abab',[15,10]) # distance will be 20
draw_word('abab',[15,10], 30) # distance will be 30