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:
Yön fonksiyonum:
Hareket fonksiyonum:
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:
Oyun döngüm: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
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()