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:
Chodzi o to że nie mam pojęcia jak prosto zrobić żeby wąż się cały czas poruszał…
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:
Chodzi o to że nie mam pojęcia jak prosto zrobić żeby wąż się cały czas poruszał…
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);
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.
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.
Przerobiłem według twojego pomysłu, ale nadal nie osiągnąłem tego czego chciałem:
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.
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()