Snake w konsoli - poruszanie

0

Witam forumowiczów,

Od paru dni męczę się ze sposobem przemieszczania węża na planszy. Gdy opracowałem jeden sposób, stwierdziłem że jest on mało wydajny i wpadłem na lepszy pomysł:

Poruszana jest tylko głowa węża. Przemieszczenie tworzy pusty element planszy, na który przekładam ostatni element węża zmieniając mu typ (z tyłka na ciało). Takie działanie tworzy nowy tyłek, będący wcześniej przedostatnim elementem.

Wszystko działa pięknie, ale postanowiłem zwiększyć długość węża i w tym momencie przestało (to znaczy działa dla dwóch pierwszych ruchów, potem się sypie; polecam sprawdzić plik exe).

Bardzo proszę o pomoc i jakieś pomysły :)

PS. Załączam funkcję poruszającą wężem, plik nagłówkowy i plik EXE z programem (ładnie spakowane w ZIPową paczuszkę)

0

wydłużenie długości węża to przesunięcie głowy, dostawienie segmentu ciała za głową, i zostawienie tyłka bez zmian.

2

zapamietujesz pozycje kolejnych segmentow, jak sie poruszasz to usuwasz ostatni element i dodajesz pierwszy, jak jesz ziarenko to tylko dodajesz element z przodu. koniec algorytmu.

2

Onego czasu,kiedy żem był żakiem jeszcze na roku pierwszym,miałem ci ja ćwiczenia z Assemblera.Na ćwiczeniach owych takoż węża narysować trza było życzenie bakałarza spełniając.Zadanie owo takowym sposobem zrobiłem byłem:
Wąż rysowany był * symbolem,ogon jego zasię spacją był,która to szła była za głową i owe * wymazywała była.I głowa,i ogon takoż oddzielne zmienne przechowujące położenie i wektor ruchu miały były.Kiedy wąż skęcał był,punkt w którym zdarzenie owo nastąpiło zapisywany do tablicy był a takoż i wektora ruchu zmiana na bicie najstarszym.Ogon zasię po każdym wykonanym ruchu swym tablicę ową czytał i położenie swe z nią porównywał był,azali czas jest skręcić.Głowa zasię rysowała się co pętli przebieg nowy znak * rysując jako wektor jej ruchu wskazywał.Wektor ów zaś użytkownik klawiszami strzałek zmieniał sobie był.

Mam nadzieję że się Bracie przejaśniło,jak się wziąć za zadanko ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1