Ich versuche, einen Code für ein PvP-Schlachtschiff-Spiel zu schreiben, und ich bin irgendwie fest.Wie kann ich meinen Code auf einen Klick warten lassen?
Ich werde Ihnen die Codes zuerst zeigen dann erklären, wie sie funktionieren.
Hier ist der erste Code. Diese Funktion wird verwendet, um jeweils Schiffe auf einem Gitter zu suchen:
für die Funktiondef ship_builder(name):
# client ship value = 6, server ship value = 7
v_or_h = randrange(2)
if v_or_h == 0:
vertical = True
else:
vertical = False
if name == 'destroyer':
print('Click a cell to build a destroyer.')
if vertical == True:
print('Vertical')
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
col = (pos[0] // (cell_side + margin)) + 1
row = (pos[1] // (cell_side + margin)) + 1
grid[row][col] = 7
for i in range(3):
row += 1
grid[row][col] = 7
elif vertical == False:
print('Horizontal')
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
col = (pos[0] // (cell_side + margin)) + 1
row = (pos[1] // (cell_side + margin)) + 1
grid[row][col] = 7
for i in range(3):
col += 1
grid[row][col] = 7
elif name == 'frigate':
print('Click a cell to build a frigate')
if vertical == True:
print('Vertical')
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
col = (pos[0] // (cell_side + margin)) + 1
row = (pos[1] // (cell_side + margin)) + 1
grid[row][col] = 7
for i in range(2):
row += 1
grid[row][col] = 7
elif vertical == False:
print('Horizontal')
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
col = (pos[0] // (cell_side + margin)) + 1
row = (pos[1] // (cell_side + margin)) + 1
grid[row][col] = 7
for i in range(2):
col += 1
grid[row][col] = 7
Zweitens ist ein for-Schleife oben:
for ship in ['destroyer','frigate']:
ship_builder(ship)
color_change()
#color_change() is a function that colors the responding cells for the ships.
Dies ist, wie sie funktionieren sollen. Zuerst wird ship_builder
mit dem Namen eines Schiffes (zB "Schlachtschiff") aufgerufen. Als Erstes überprüft der Code, ob das Schiff vertikal oder horizontal platziert werden soll. Je nach Wert kann der Benutzer auf eine Zelle klicken, um den Standort zu bestimmen. Hier habe ich ein Problem. Der Code springt einfach über diesen Teil und geht ohne etwas zu tun.
Meine Frage ist: Warum springt es über den Mausklick-Teil? Soll pygame.event.get() Python nicht auf eine Aktion warten lassen?
Ich bin mir nicht sicher, ob ich es wesentlich erklärte. Hinterlasse mir einen Kommentar, wenn ich weitere Informationen zur Verfügung stellen muss. Ich brauche wirklich Hilfe!
Vielen Dank!
Ich habe keine so detaillierte Antwort erwartet! Schätze es sehr! –