Pygame ile ilgili bir example(örnek) buldum githup ta python2 ile yazılmıştı python3 e göre ayarlıyorum burada takıldım

class Boulder(pygame.sprite.DirtySprite): def __init__(self): self.diameter = random.randint(2, 300) self.radius = self.diameter / 2 self.x_pos = random.randint(0, SCREEN_WIDTH) self.image = pygame.Surface((self.diameter, self.diameter)) #self.image.fill((255,255,255,128)) pygame.draw.circle(self.image, (128,128,128), (self.radius, self.radius), self.radius) self.rect = pygame.Rect(self.x_pos, SCREEN_HEIGHT - (20 + self.radius), self.diameter, self.diameter) self.image = self.image.convert() self.landing_ok = False self.dirty = False return super(pygame.sprite.DirtySprite, self).__init__() <\code>

bu kodlarda hata alıyorum sorunu nasıl halledebilirim?(hata: TypeError: an integer is required (got type str))

Hatanın tamamı;

Traceback (most recent call last):
File “C:\Users\İMAJ\Desktop\lunarlander\aa.py”, line 216, in
lander, moon, boulders, allsprites = initialize()
File “C:\Users\İMAJ\Desktop\lunarlander\aa.py”, line 208, in initialize
boulders = [Boulder() for i in range(random.randint(2,5))]
File “C:\Users\İMAJ\Desktop\lunarlander\aa.py”, line 208, in
boulders = [Boulder() for i in range(random.randint(2,5))]
File “C:\Users\İMAJ\Desktop\lunarlander\aa.py”, line 195, in init
pygame.draw.circle(self.image, (“128”,“128”,“128”), (“self.radius”, “self.radius”), self.radius)
TypeError: an integer is required (got type str)

Merhabalar, kodu aşağıdaki yollardan birisiyle düzenler misiniz?

```python
KODUNUZ
```

ya da

<code>
KODUNUZ
</code>

Hataya gelince,

pygame.draw.circle(self.image, (“128”,“128”,“128”), (“self.radius”, “self.radius”), self.radius)

TypeError: an integer is required (got type str)

Hatadan da anlayabileceğimiz gibi, sayı bekleyen fonksiyona string türünde veri vermişsiniz (bkz: "128", "self.radius") bunları düzelttiğiniz takdirde program bu hatayı vermeyecektir.

bu sefer de aynı satırda “”" TypeError: integer argument expected, got float “”" hatası alıyorum

Hatada “Tamsayı bekliyordum ama kayan noktalı sayı aldım.” diyor kısaca. Anlaşılan self.radius’u kayan noktalı sayı yerine tamsayı vermeniz gerekiyor.

1 Beğeni

self.radius’a random.randint(2, 5) verilmişti (0) yaptım düzeldi ama anlamadım halbuki (2, 5) iki buçuk demek değil birde 0 dışında rakam kabul etmiyor.yardımcı olduğunuz için tşkkrler program sorunsuz çalıştı.

1 Beğeni

2,5 Türkçede kullanılıyor. İngilizcede ve dolayısıyla pythonda 2.5 kullanılıyor.