Prosty snake


(Rosiak112) #1

Zacząłem pisać snake, w pygame, ale to nie ma znaczenia bo mój problem nie odnosi się do konkretnej funkcji z biblioteki.

Mój kod:

http://wklejto.pl/108945

Chodzi o to że nie mam pojęcia jak prosto zrobić żeby wąż się cały czas poruszał...


(Marcinch7) #2

Dużo tego kodu napisałeś...

Zrób dwie zmienne: xx i yy.

Po wciśnięciu S nastaw xx na 0 i yy na 1.

Po wciśnięciu W nastaw xx na 0 i yy na -1.

Po wciśnięciu A nastaw xx na -1 i yy na 0.

Po wciśnięciu D nastaw xx na 1 i yy na 0.

Po wszystkim użyj move(xx,yy);


(Rosiak112) #3

Przecież dokładnie tak zrobiłem, tylko że z x i y.

A już widze swój bład, ale problem w tym że on teraz cały czas przyspiesza...

A poza tym jak nacisnę w dół to jedzie w dół a jak nacisnę w lewo to już nie zmienia kierunku, jak już się porusza.


(Logic) #4

zapamiętaj ostatni wybrany kierunek poruszania węża global_dx i global_dy

i podstaw do move, czyli zmodyfkuj kod

if keys[K_s]:

global_dx = 0

global_dy = 1

if keys[K_w]:

global_dx = 0

global_dy = -1

... itd a potem

move(global_dx, global_dy)

wtedy wąż poruszać będzie się cały czas zgodnie z ostatnim wyborem kierunku.

Na moim blogu znajdziesz parę tutoriali pygame http://vim.pl/blog, tam częściej zaglądam i szybciej odpowiem.


(Rosiak112) #5

Przerobiłem według twojego pomysłu, ale nadal nie osiągnąłem tego czego chciałem:

http://wklejto.pl/108984


(Razi) #6

A co chcesz osiągnąć? Rozbij to na pojedyncze operacje i zapisz w postaci kodu.

Z tego poprawionego kodu wnioskuję że wąż się powinien poruszać cały czas.

W 41 linijce masz literówkę, wada dynamicznego typowania.


(Logic) #7

Nadpisujesz sobie x i y. Użyj tak jak pokazałem dodatkowych zmiennych do określenia kierunku global_x i global_y czy jak to sobie nazwiesz.

Zamknij to w klasie unikniesz globalnych. Zmienna speed nie jest widoczna w funkcji move()