Hangman 프로젝트를 계속하고 있으며 for 루프에 문제가있어서 그 안에 함수를 수행하고 있습니다. 예를 들어 'CANADA'라는 이름의 레벨을 누르고 'B'를 누르면 캐나다에 Bs가 없으므로 행맨의 첫 번째 줄을 그려야합니다. ... 좀 더 코드 후Python의 루프 함수 For
def hangman1():
pygame.draw.line(screen, black, (775, 250), (775, 50), (4))
def hangman2():
pygame.draw.line(screen, black, (750, 250), (800, 250), (4))
def hangman3():
pygame.draw.line(screen, black, (775, 50), (925, 50), (4))
def hangman4():
pygame.draw.line(screen, black, (925, 50), (925, 175), (4))
def hangman5():
pygame.draw.circle(screen, black, (925, 100), 30, (0))
def hangman6():
pygame.draw.line(screen, black, (925, 125), (925, 200), (4))
def hangman7():
pygame.draw.line(screen, black, (885, 160), (965, 160), (4))
def hangman8():
pygame.draw.line(screen, black, (925, 200), (900, 225), (4))
def hangman9():
pygame.draw.line(screen, black, (925, 200), (950, 225), (4))
그런
letters = list('abcdefghijklmnopqrstuvwxyz')
a = font2.render(str(letters[0]), True, (black))
b = font2.render(str(letters[1]), True, (black))
c = font2.render(str(letters[2]), True, (black))
d = font2.render(str(letters[3]), True, (black))
e = font2.render(str(letters[4]), True, (black))
f = font2.render(str(letters[5]), True, (black))
g = font2.render(str(letters[6]), True, (black))
h = font2.render(str(letters[7]), True, (black))
i = font2.render(str(letters[8]), True, (black))
j = font2.render(str(letters[9]), True, (black))
k = font2.render(str(letters[10]), True, (black))
l = font2.render(str(letters[11]), True, (black))
m = font2.render(str(letters[12]), True, (black))
n = font2.render(str(letters[13]), True, (black))
o = font2.render(str(letters[14]), True, (black))
p = font2.render(str(letters[15]), True, (black))
q = font2.render(str(letters[16]), True, (black))
r = font2.render(str(letters[17]), True, (black))
s = font2.render(str(letters[18]), True, (black))
t = font2.render(str(letters[19]), True, (black))
u = font2.render(str(letters[20]), True, (black))
v = font2.render(str(letters[21]), True, (black))
w = font2.render(str(letters[22]), True, (black))
x = font2.render(str(letters[23]), True, (black))
y = font2.render(str(letters[24]), True, (black))
z = font2.render(str(letters[25]), True, (black))
... 나중에
hangman = [hangman1, hangman2, hangman3, hangman4, hangman5, hangman6, hangman7, hangman8, hangman9]
for linebyline in hangman:
...
: 이것은 내가 지금까지 한 일이다 elif b1.collidepoint(pygame.mouse.get_pos()):
letter = letters[1]
check = country.count(letter)
if check >= 1:
if letter == letters[0]:
aPosition = 325, 235
a3 = screen.blit((a), (375, 235))
a4 = screen.blit((a), (425, 235))
a1.x, a1.y = -500, -500
elif letter == letters[2]:
cPosition = 300, 235
c1.x, c1.y = -500, -500
elif letter == letters[13]:
nPosition = 450, 235
n1.x, n1.y = -500, -500
elif letter == letters[3]:
dPosition = 600, 235
d1.x, d1.y = -500, -500
else:
b2 = font.render(str(letters[1]), True, (red))
screen.blit(b2, (485, 325))
linebyline()
time.sleep(0.5)
bPosition = -500, -500
b1.x, b1.y = -500, -500
B를 누르면 빨간색으로 변하고 0.5 초 후에 사라집니다. bu 그것은 선을 그리지 않습니다. 어떤 도움이 필요합니까?
EDIT : 다른 모듈을 사용하여 일부 테스트를 수행했는데 기능 문자는 정상적인 텍스트 인쇄로 완벽하게 작동합니다. 그러나 드로잉 (Pygame)으로 다시 테스트했을 때 효과적 이었지만 다른 것들 (예 : time.sleep()
)을 결합하면 흰색 화면이 나타납니다. print
와 결합하면 그림이 작동하지 않지만 인쇄는 수행됩니다. 또한 time.sleep(1)
을 추가하면 다른 작업을 수행하지 않고 정확히 9 초 동안 검은 색 화면이 나타납니다. 이건 내 테스트 코드입니다 : 그것은 셸에서 동시에 단어의 무리를 인쇄
import pygame, sys, random, time
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((1000, 700))
pygame.display.set_caption("Hangman: Countries")
black = 0, 0, 0
def hangman1():
pygame.draw.line(screen, black, (775, 250), (775, 50), (4))
print 'test'
def hangman2():
pygame.draw.line(screen, black, (750, 250), (800, 250), (4))
print 'test somethin'
def hangman3():
pygame.draw.line(screen, black, (775, 50), (925, 50), (4))
print 'test something else'
def hangman4():
pygame.draw.line(screen, black, (925, 50), (925, 175), (4))
print 'eggs'
def hangman5():
pygame.draw.circle(screen, black, (925, 100), 30, (0))
print 'hangman'
def hangman6():
pygame.draw.line(screen, black, (925, 125), (925, 200), (4))
print 'facebook'
def hangman7():
pygame.draw.line(screen, black, (885, 160), (965, 160), (4))
print 'internet'
def hangman8():
pygame.draw.line(screen, black, (925, 200), (900, 225), (4))
print 'more tests'
def hangman9():
pygame.draw.line(screen, black, (925, 200), (950, 225), (4))
print 'cheese'
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
screen.fill((255, 255, 255))
list1 = [hangman1(), hangman2(), hangman3(), hangman4(), hangman5(), hangman6(), hangman7(), hangman8(), hangman9()]
for greet in list1:
greet
time.sleep(1)
pygame.display.flip()
다음 구초 후 교수형 집행에 화면 변경이 완벽하게 그려, 단어의 동일한 세트는 다시 올 . 어떤 아이디어라도, 파이 게임에서 경험이있는 사람은 누구입니까?
는 다른 또 다른 들여 쓰기를 필요합니까? – scohe001
또한 letter_number = ord (my_letter) - 96'을 사용하여 문자 코드를 단순화 할 수 있습니다 – scohe001
일반적인 의견 - Python의 근본적인 교리 중 하나는 DRY입니다 ** ** Reapeat Yourself **. 코드를 잘 살펴보고 변경 될 수있는 항목에 대해 생각해보십시오. 아마도 단일 함수 또는 단일 행으로 축소되었을 것입니다. – MattDMo