Python Yılan oyunu problemi

Şu anda konuyu okuyanlar (Üyeler: 1, Ziyaretçi & Botlar: 0)


Lapassion

Üyecik
Katılım
20 Kas 2018
Mesajlar
10
Puanları
3
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()
 
Üst
stat counter