Snake w konsoli - poruszanie

Odpowiedz Nowy wątek
2011-09-28 10:16
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ę)

edytowany 3x, ostatnio: robin3d, 2011-09-28 10:17

Pozostało 580 znaków

2011-09-28 10:48
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.

No tak, ale wąż się nie porusza poprawnie na tym algorytmie gdy jego długość jest > 3. Polecam obczaić plik EXE :) Dla dł = 3 wszystko działa. - robin3d 2011-09-28 10:58
nie będę „obczajał” żadnych plików EXE, bo już walczę dziś z wirusem. - Azarien 2011-09-28 12:24
No tak, rzeczywiście. jestem skurwielem, który pod pozorem pomocy będzie zawirusowywał cudze kompy... Rozszyfrowałeś mnie. - robin3d 2011-09-28 13:12
ty to mówisz… - Azarien 2011-09-28 20:30

Pozostało 580 znaków

2011-09-28 11:09

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.


░█░█░█░█░█░█░█░█░█░█░█░
Ta metoda działa bardzo dobrze, ale wymagała wprowadzenia kilku zmian. Po pierwsze: musiałem stworzyć zmienną w wężu, która zawierała by współrzędne (lub wskaźnik) do elementu za nią. Po drugie: pomocne okazało się dodanie dwóch zmiennych do planszy, opisujących współrzędne danego punktu. Po takich zabiegach wszystko jest ok, dzięki :) - robin3d 2011-09-28 13:17

Pozostało 580 znaków

2011-09-28 13:31
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 ;)


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB, 2011-09-28 13:31
I to jest odpowiedź, ludzki język, bez kombinowania, przystępnie, zrozumiale - więcej takich postów proszę ;-) - Jadeszek 2011-09-28 17:32

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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