Çözüldü Pygame kodunda line hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Fueren

Hectopat
Katılım
23 Aralık 2023
Mesajlar
2.053
Makaleler
2
Çözümler
36
Daha fazla  
Cinsiyet
Erkek
Meslek
YKS Öğrencisi
Hocam bu kod bizim hocamızın istediği bir oyunun kodu. Atasözü eşleştirme oyunu diyebiliriz aslında. Ben bu oyunda önce "words" adında içinde listeler olan bir liste oluşturdum. İstediğim şey oluşturduğum "rect1, rect2, rect3" şekillerinin içine bu atasözlerinin yazılması. Fakat bir line hatası alıyorum sebebi nedir? Çözüp yollayabilir misiniz?

Python:
import pygame, sys, random

pygame.init()

def display_text(val: str, pos: tuple):
 text_surf = font.render(val, True, 'white')
 text_rect = text_surf.get_rect(center = pos)
 screen.blit(text_surf, text_rect)

screen = pygame.display.set_mode((850, 600))
pygame.display.set_caption('Atasözü Eşleştirme Oyunu')
clock = pygame.time.Clock()
font = pygame.font.SysFont('Calibri', 20, False, False)
canDraw = True

rect1 = pygame.rect.Rect((100, 100), (225, 100))
rect2 = pygame.rect.Rect((100, 250), (225, 100))
rect3 = pygame.rect.Rect((100, 400), (225, 100))

rect_meaning1 = pygame.rect.Rect((525, 100), (225, 100))
rect_meaning2 = pygame.rect.Rect((525, 250), (225, 100))
rect_meaning3 = pygame.rect.Rect((525, 400), (225, 100))

words = [['Mart kapıdan baktırır,', 'kazma kürek yaktırır'], ['Otu çek, köküne bak'], ['Etle tırnak arasına girilmez']]
words_alt = words

num = random.randint(0, len(words) - 1)

screen.fill('#63a0b0')

pygame.draw.rect(screen, '#93b858', rect1)
pygame.draw.rect(screen, '#93b858', rect2)
pygame.draw.rect(screen, '#93b858', rect3)

pygame.draw.rect(screen, '#bfc965', rect_meaning1)
pygame.draw.rect(screen, '#bfc965', rect_meaning2)
pygame.draw.rect(screen, '#bfc965', rect_meaning3)

while True:
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 pygame.quit()
 sys.exit()

 while canDraw:
 if len(words[num]) > 1:
 display_text(words[num][0], (rect1.centerx, rect1.centery - 15))
 display_text(words[num][1], (rect1.centerx, rect1.centery + 15))
 words.remove(words[num])

 elif len(words[num]) == 1:
 display_text(words[num][0], rect1.center)
 words.remove(words[num])

 num_alt = num

 while num != num_alt:
 num = random.randint(0, len(words) - 1)

 if len(words[num]) > 1:
 display_text(words[num][0], (rect2.centerx, rect1.centery - 15))
 display_text(words[num][1], (rect2.centerx, rect1.centery + 15))
 words.remove(words[num])

 elif len(words[num]) == 1:
 display_text(words[num][0], rect2.center)
 words.remove(words[num])

 num_alt = num

 while num != num_alt:
 num = random.randint(0, len(words) - 1)

 if len(words[num]) > 1:
 display_text(words[num][0], (rect3.centerx, rect1.centery - 15))
 display_text(words[num][1], (rect3.centerx, rect1.centery + 15))
 words.remove(words[num])

 elif len(words[num]) == 1:
 display_text(words[num][0], rect3.center)
 words.remove(words[num])

 canDraw = False

 pygame.display.update()
 clock.tick(60)
 
Çözüm
Hala hatayı paylaşmıyorsunuz.

Çözdüm çünkü hocam. Metinlerin yazılmasını bir fonksiyona atadım ve parametrelere "rect" ve "Word" ekledim. Sırasıyla fonksiyonu kullanınca line hatasının words listesinden çıkardığım elementlerden kaynaklı olduğunu düşündüm. Doğru mudur bilemem.
Hala hatayı paylaşmıyorsunuz.

Çözdüm çünkü hocam. Metinlerin yazılmasını bir fonksiyona atadım ve parametrelere "rect" ve "Word" ekledim. Sırasıyla fonksiyonu kullanınca line hatasının words listesinden çıkardığım elementlerden kaynaklı olduğunu düşündüm. Doğru mudur bilemem.
 
Artı -1 Eksi
Çözüm

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı