Python Yılan oyunu problemi

Bu konuyu okuyanlar

Lapassion

Öğrenci
Katılım
20 Kasım 2018
Mesajlar
11
Reaksiyon puanı
3
Puanları
3
Yaş
24
Yılan oyunu yazmaya çalıştım.Fakat kıvrılma hareketini nasıl yazacağımla ilgili bir fikrim yok.Yılanın başını çevirdiğimde bütün kuyruk da başıyla beraber dönüyor.Şimdilik yılanı tek karede bırakmak zorunda kalıyorum.Bu sorunu çözmeme yardım edebilecek birisi var mı?Bu arada Class kullanmıyorum.Yeni başladığım için bana zor geliyor.Mümkünse Class kullanmadan yardımcı olunuz.Aslında amacım yılanın her karesinin kendinden önceki karenin koordinatlarını tekrar etmesi.Böylece kıvrım yapabilirim ama bunu nasıl kodlayabilirim bilmiyorum.
Koad aşağıdadır.
global değişkenler:
pygame.init()

pencerem=pygame.display.set_mode((800,600))

WHITE=(255,255,255)

BLACK=(0,0,0)

RED=(255,0,0)

GREEN=(0,255,0)

knmx=60

knmy=60

sagx=20

asagiy=20

yemx=100

yemy=100

haritasol=False

haritasag=False

haritayuk=False

haritaasg=False

yembyk=10

saga=True

sola=False

asg=False

yuk=False

hiz=10

tailsize=2

uyku=0.05

konum=[knmx,knmy]

gercekhiz=0.02 #ters orantı

Yön fonksiyonum:
def yon(x):

if int(x)==273 and (saga or sola)==True and (yuk and asg)==False:

a=True

b=False

c=False

d=False

return a,b,c,d

elif int(x)==274 and (saga or sola)==True and (yuk and asg)==False:

a=False

b=False

c=False

d=True

return a,b,c,d

elif int(x)==275 and (saga and sola)==False and (yuk or asg)==True:

a=False

b=True

c=False

d=False

return a,b,c,d

elif int(x)==276 and (saga and sola)==False and (yuk or asg)==True:

a=False

b=False

c=True

d=False

return a,b,c,d

else:

return yuk,saga,sola,asg

Hareket fonksiyonum:

def hareket():

global n,m
if yuk==True:

for i in range(1):

n=knmy-hiz

m=knmx

sleep(uyku)

return n,m

if asg==True:

for i in range(1):

n=knmy+hiz

m=knmx

sleep(uyku)

return n,m

if sola==True:

for i in range(1):

m=knmx-hiz

n=knmy

sleep(uyku)

return n,m

if saga==True:

for i in range(1):

m=knmx+hiz

n=knmy

sleep(uyku)

return n,m
Oyun döngüm:
while True:

pencerem.fill(BLACK)

for i in range(1):

bas=pygame.draw.rect(pencerem, RED, (knmx,knmy,sagx,asagiy))

konum.append=[knmx,knmy]







for olay in pygame.event.get():

if olay.type==QUIT:

pygame.quit()

elif olay.type==KEYDOWN:

kolay=olay.key

yuk,saga,sola,asg=yon(kolay)

sleep(0.1)

knmy,knmx=hareket()

if knmx==800 and saga:

knmx=0

elif knmx==0 and sola:

knmx=800

elif knmy==0 and yuk:

knmy=600

elif knmy==600 and asg:

knmy=0

sleep(gercekhiz)



pygame.display.flip()
 

High Noon

Asistan
Katılım
12 Haziran 2017
Mesajlar
353
Reaksiyon puanı
80
Puanları
28
Yaş
37
Merhaba, kusura bakma sorunu cevaplayacak kadar bilgili değilim ancak sana bir sorum olacak: "Python'da profesyonel bilgin var mı yoksa temel bilgilere dayanarak mı yaptın oyunu? Ben anlayamadım çünkü :)"
 

Eminkrkt

Jet Sesi, Özgürlüğün Sesidir!
Moderatör
Katılım
3 Mayıs 2021
Mesajlar
2,179
Çözümler
8
Reaksiyon puanı
1,778
Puanları
113
Merhaba, kusura bakma sorunu cevaplayacak kadar bilgili değilim ancak sana bir sorum olacak: "Python'da profesyonel bilgin var mı yoksa temel bilgilere dayanarak mı yaptın oyunu? Ben anlayamadım çünkü :)"
Orta düzeyde bi bilgin olması seni sürükler bazı kütüphaneler vardır bu kütüphanelerin özel kodları vardır belki pygame bilmediğin için sana karmaşık gelebilir
 
Üst