我正在使用的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)
答案 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