Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Gra "SNAKE" na ATmega128, LCD-T6963

off 25 Sty 2009 12:23 12349 12
  • Gra "SNAKE" na ATmega128, LCD-T6963

    Witam
    Chciałbym zaprezentowac gre "SNAKE", popularna w starszych telefonach np Noki. Układ zrobiony na mikrokontrolerze ATmega128,
    calośc wyświetlana na graficznym LCD ze sterownikiem Toshiby T6963.

    Gra tradycyjnie polega na zbieraniu pojawiających się w różnych miejscach na ekranie punktach...z każdym punktem zwiększa się długośc węża
    oraz jego prędkośc. Koniec gry następuje gdy wąż wejdzie w samego siebie lub w ścianę.

    Materiały na temat programowania LCD z T6963 dostępne są na stronie:T6963 zastosowanie
    Całośc napisana w WinAvr, płytka drukowana wykonana domową metodą termotransfetu (przy użyciu laminatora:).

    Kilka obrazków z gry i widoki płytki:
    Gra "SNAKE" na ATmega128, LCD-T6963Gra "SNAKE" na ATmega128, LCD-T6963
    Gra "SNAKE" na ATmega128, LCD-T6963Gra "SNAKE" na ATmega128, LCD-T6963


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 25 Sty 2009 14:33
    Myrek1
    Poziom 23  

    Sam rysowałeś zdjęcie węża i napis bit po bicie w programie do LCD? Czy przerobiłeś jakoś mapę bitową?

  • #3 25 Sty 2009 14:48
    krzycho123
    Poziom 31  

    Takie pytanie mi się nasuwa - jak się tym steruje ? nie widać żadnego jojsticka . Myślami ? ;)

  • #4 25 Sty 2009 15:53
    kasaidolar
    Poziom 19  

    Estetycznie Ci to wyszlo - tylko az prosi sie o soldermaske. Szkoda ze nie pomalowales jakims zielonym ;). No i napis PWr wzrusza :) I widze numer indeksu? Na jaki przedmiot to robiles:) ? Pozdrawiam!

    Dodano po 3 [minuty]:

    A schemat wrzucisz tak z ciekawosci?

  • #5 25 Sty 2009 16:31
    off
    Poziom 10  

    Napis i węże robiłem korzystając z programiku (zamiana bitmapy na tablice char)
    programik do pobrania ze stronki:Link

    Faktycznie nie ma pokazane czym gra jest sterowana...zrobiłem tak na szybko klawiaturkę zwierającą piny do masy, piny klawiatury znajdują się po lewej stronie MCU

    Projekt był wykonany na potrzeby zaliczenia przedmiotu: Zastosowanie Analogowych i Cyfrowych Układów Scalonych na PWR:]

    A schemacik przedstawia się następująco:
    Gra "SNAKE" na ATmega128, LCD-T6963
    wstyd tylko tego 7805 bo mogło byc coś ciekawszego ale to było na szybko...i miało działac, niestety pociągnęło to za sobą ten radiatorek...

  • #7 25 Sty 2009 17:28
    krzycho123
    Poziom 31  

    11111olo , kolega napisał że jest na ic T6963C - 240x64 pixeli . Zobacz sobie na allegro , jest kilka sztuk .

  • #8 25 Sty 2009 21:17
    bolek
    Specjalista - oświetlenie sceniczne

    opisał byś trochę sam algorytm gry? :)

  • #9 27 Sty 2009 13:19
    off
    Poziom 10  

    Algorytm gry jest stosunkowo prosty, generalnie jest to dwu kierunkowa lista cykliczna z "głowa",listę te tworzy struktura:

    Code:
    struct snake
    
    {
       unsigned char x;//wspolzedne
       unsigned char y;//wspolzedne
       struct snake *prv;//wskaznik na poprzedni
       struct snake *nxt;//wskaznik na nastepny
    } ;


    Waz składa się z segmentów które są obiektami takiej struktury...każdy segment wskazuje na poprzedni i następny.
    Cały dostępny obszar grafiki został podzielony na jakby punkty o rozmiarach 5x5 pikseli, i współrzędne tych punktów to właśnie współrzędne położenia węża z podanej struktury.
    Poruszanie polega na przesuwaniu odpowiednich wskaźników na dane elementy, zmieniając w ten sposób ich współrzędne. Głowa otrzymuje nowe współrzędne przez dodanie lub odjęcie 1, od odpowiedniej współrzędnej, w zależności od wybranego kierunku ruchu.

    Cały waz nie jest odświeżany na wyświetlaczu, dorysowywana jest tylko głowa i kasowany ogon, w ten sposób nie ma migotania przy większych długościach węża. przy każdym kroku sprawdzam dodatkowo czy współrzędne które dostanie teraz głowa nie należą już do jakiegoś segmentu z ciała węża, lub czy nie wychodzą poza obszar ograniczony ścianami.

    Całością poruszania steruje Timerek, który taktuje przesuwanie węża, kierunki zmieniane sa w przerwaniu, ale wprowadzane przy kolejnym takcie Timerka, dzięki temu użytkownik może np. kliknac dwa kierunki i zostanie wybrany zawsze ten ostatni.

  • #10 28 Sty 2009 19:25
    m3
    Poziom 11  

    Jak na termotransfer całkiem dobrze Ci wyszło ;] Jest trochę podtrawień na poligonach, ale generalnie estetycznie ;]
    Czy mi się wydaje czy nie ma soldermaski?

  • #11 30 Sty 2009 14:36
    Jacek31
    Warunkowo odblokowany

    No no.. Bardzo ładny projekt, a płytka drukowana pełen profesjonal jak na samoróbkę. Koledze naprawdę przysługują gratulacje.
    Gierkę można na tym procu jeszcze bardziej rozbudować, dodając labirynt w którym trzeba tak kierować wężem który rośnie w miarę jedzenia, aby wszamać wszystkie perełki i nie ugryźć się w ogon. Ja kiedyś coś takiego pisałem na lekcje informy, jeszcze w Turbo Pscalu. Działało w trybie tekstowym wykorzystując znaki specjalne do rysowania planszy.

  • #12 01 Lut 2009 12:35
    ciastek4
    Poziom 13  

    Hej możesz mi wytłumaczyć jak zrobiłeś wymiary w Eaglu?
    Nurtuje mnie to :)

    pozdrawiam

  • #13 03 Lut 2009 16:15
    off
    Poziom 10  

    Wymiary płytki są tylko dorysowane jako warstwa opisów elementów, a zwymiarowac można korzystając z opcji Mark (ikonka tuż pod okiem Show, na projekcie płytki),
    tylko należy wcześniej przestawic siatkę (Grid) na odpowiednia jednostkę np. [mm]