<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=23&amp;t=2416&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-02-27T09:45:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=2416&amp;mode</id>
<entry>
<author><name><![CDATA[jachu]]></name></author>
<updated>2013-02-27T09:45:41+01:00</updated>
<published>2013-02-27T09:45:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29369#p29369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29369#p29369"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29369#p29369"><![CDATA[
<div class="quotetitle">kila napisał(a):</div><div class="quotecontent"><br />Krauser - skąd masz tą wiedzę? Skąd masz na to czas???? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> jestem amatorem... :p<br /></div><br /><br />Zamiast pierdzielic na forum jak np ja <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> to siedzi cicho i klepie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=110">jachu</a> — 27 lut 2013, o 09:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-02-25T22:25:21+01:00</updated>
<published>2013-02-25T22:25:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29271#p29271</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29271#p29271"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29271#p29271"><![CDATA[
<div class="quotetitle">kila napisał(a):</div><div class="quotecontent"><br />Krauser - skąd masz tą wiedzę? Skąd masz na to czas???? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> jestem amatorem... :p<br /></div><br /><br />No ja bym się chciał dowiedzieć też, gdzie sprzedają czas na wiadra <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 25 lut 2013, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2013-02-25T19:17:18+01:00</updated>
<published>2013-02-25T19:17:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29241#p29241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29241#p29241"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29241#p29241"><![CDATA[
Krauser - skąd masz tą wiedzę? Skąd masz na to czas???? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> jestem amatorem... :p<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 25 lut 2013, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sonix]]></name></author>
<updated>2013-02-24T11:55:57+01:00</updated>
<published>2013-02-24T11:55:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29098#p29098</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29098#p29098"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29098#p29098"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />w sumie Krauzer to proponuję użyć NunChuck od Wii <br />masz w nim SW, Analog  i akcelerometr  zresztą całosc pracuje na I2C <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Myślę że jak już kolega Krauser zaczął seryjne pisanie gier, to chyba w kolejnym projekcie będzie coś z podłączeniem Kinect'a do ATB  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /><br />Rządzisz Krauser  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=127">Sonix</a> — 24 lut 2013, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2013-02-24T11:01:38+01:00</updated>
<published>2013-02-24T11:01:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29086#p29086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29086#p29086"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29086#p29086"><![CDATA[
Masakra, to ja ledwo diodą zamrugać potrafię a tu takie cuda robicie <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 24 lut 2013, o 11:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-23T14:42:58+01:00</updated>
<published>2013-02-23T14:42:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29006#p29006</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29006#p29006"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29006#p29006"><![CDATA[
w sumie Krauzer to proponuję użyć NunChuck od Wii <br />masz w nim SW, Analog  i akcelerometr  zresztą całosc pracuje na I2C <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 lut 2013, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-23T14:31:12+01:00</updated>
<published>2013-02-23T14:31:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29003#p29003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29003#p29003"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=29003#p29003"><![CDATA[
Raczej nie tutaj, ale ogólnie to mam zamiar wykorzystać taki rodzaj sterowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 23 lut 2013, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2013-02-23T12:53:14+01:00</updated>
<published>2013-02-23T12:53:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28995#p28995</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28995#p28995"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28995#p28995"><![CDATA[
<strong>Krauser</strong> a myślałeś nad tym aby w przyszłości dać sterowanie za pomocą liska do którego ostatnio <strong>Antystatyczny</strong> przygotował bibliotekę?  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 23 lut 2013, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-23T11:53:46+01:00</updated>
<published>2013-02-23T11:53:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28991#p28991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28991#p28991"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28991#p28991"><![CDATA[
Widać odświeżanie. Można by jeszcze zmodyfikować kod i rysować linie poziome/pionowe kolorem wybranym wcześniej. Da się sterować dwiema rękami. Autko podąża do punktu wskazanego na ekranie, ale jak ktoś naciśnie skrają pozycję poza drogą to zmienna new_x jest ograniczana do do skrajnej pozycji na drodze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 23 lut 2013, o 11:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[patol]]></name></author>
<updated>2013-02-23T09:57:30+01:00</updated>
<published>2013-02-23T09:57:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28984#p28984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28984#p28984"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28984#p28984"><![CDATA[
Szczęka opada... <br />Chciałbym kiedyś zbudować sterownik stacji lutowniczej do BGA z wykorzystaniem takiego wyświetlacza, aby rysował mi wykresy temperatur w czasie, ale jeszcze wiele wody w rzekach upłynie, zanim będę mógł zabrać się za coś podobnego.<br />Nic tylko pogratulować wiedzy koledze Krauser.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=640">patol</a> — 23 lut 2013, o 09:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[osa1313]]></name></author>
<updated>2013-02-22T23:21:38+01:00</updated>
<published>2013-02-22T23:21:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28977#p28977</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28977#p28977"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28977#p28977"><![CDATA[
Krauser a kiedy będzie need for speed? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Zazdroszczę ogromnej wiedzy ; )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=211">osa1313</a> — 22 lut 2013, o 23:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-22T22:59:40+01:00</updated>
<published>2013-02-22T22:59:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28975#p28975</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28975#p28975"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28975#p28975"><![CDATA[
Nieeee , noo nieeee - Sun .... chyba będzie trzeba kolegę Krausera zbanować z forum bo znacznie zawyża jego poziom <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> hahahahahaa<br /><br />(oczywiście ŻART) ..... ale poważnie osłabia mnie nasz kolega i umieram z zazdrości że nie mam na razie czasu pobrykania z tym wyświetlaczem .... Dla mnie każdy projekt kolegi Krauser to kolejne odkrywanie możliwości tego cacuszka SSD1963 .... a z drugiej strony NIESAMOWICIE patrzy się na KUNSZT pomysłowości i programowania<br /><br />MEGA ODLOT <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 lut 2013, o 22:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2013-02-22T22:27:05+01:00</updated>
<published>2013-02-22T22:27:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28973#p28973</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28973#p28973"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28973#p28973"><![CDATA[
Takie cuda można na AVR robić:D !!!  Bardzo płynnie chodzi ta grafika, chyba zapodałeś kwarc ze 100MHz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Jestem pełen podziwu!!! Gratuluje!!!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 22 lut 2013, o 22:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jachu]]></name></author>
<updated>2013-02-22T22:13:40+01:00</updated>
<published>2013-02-22T22:13:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28969#p28969</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28969#p28969"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28969#p28969"><![CDATA[
Krauser no wypas <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=110">jachu</a> — 22 lut 2013, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-22T21:48:27+01:00</updated>
<published>2013-02-22T21:48:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28966#p28966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28966#p28966"/>
<title type="html"><![CDATA[Re: Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28966#p28966"><![CDATA[
hmmm Kolego kiedy będzie port na Xboxa360 , PSP4 ??<br />Jak zwykle kawał dobrej roboty ... mosz ta glaca na gnyku <br />... Gratulacje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 22 lut 2013, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-22T21:45:14+01:00</updated>
<published>2013-02-22T21:45:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28965#p28965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28965#p28965"/>
<title type="html"><![CDATA[Gra zręcznościowa na ATB + TFT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2416&amp;p=28965#p28965"><![CDATA[
<img src="http://forum.atnel.pl/_obrazki/o/54_bea60828fb9d57acd17a64cfb3fe53ba.png" alt="Obrazek" /><br />Poprzednio trenowaliśmy umysł, a teraz poćwiczymy zręczność. Oczywiście na zestawie ATB z dołączonym wyświetlaczem graficznym, który podłączony jest jak poprzednio do portu A, portu C i PD.2. Do PB.0 podłączony jest buzzer. Nazwa gry (Polskie drogi) dużo mówi o tym co będzie zadaniem gracza  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> Trzeba oczywiście omijać dziury na drodze i zaparkowane auta. Trzecia pomyłka kończy grę i wyświetla wynik. Reset rozpoczyna program od początku. Ekran gry i działanie wygląda następująco:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/54_640b9bb122421fea7cbb59fa3af96e6e.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/54_640b9bb122421fea7cbb59fa3af96e6e.jpg" alt="Obrazek" /></a><br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />Opis działania programu:<br />- Dzięki wykorzystaniu bibliotek do TFT z książki &quot;Język C Pasja programowania mikrokontrolerów 8-bitowych&quot; Mirosława Kardasia przygotowanie programu znacznie się uprościło  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />- W książce opisane jest wykorzystanie dodatkowej pamięci. Tutaj również to jest potrzebne z tym, że obraz jest przewijany o jedną linię. Dzięki temu można załadować na początku 4 ekrany, a w pętli głównej tylko wyświetlać samochód gracza i dziury w drodze<br />- Autko nie jest wyświetlane jako bitmapa, a złożone jest z linii. Nie potrzeba zatem korzystać z karty pamięci, ani wypełniać pamięci danymi o każdym pikselu. Wykorzystane są linie poziome i pionowe, których kod jest bardzo podobny do wyświetlania prostokąta. Myślę, że po lekturze każdy stworzy takie funkcje. Głównym celem takiego podejścia jest zwiększenie szybkości rysowania. <br />- Program korzysta z funkcji <strong>srand</strong> i <strong>rand</strong> do generowania losowej pozycji dziur w drodze. Argument funkcji <strong>srand</strong> zależy od momentu dotknięcia przez gracza ekranu i w sumie można by nawet nie korzystać z tych funkcji.<br />- Wszystkie 3 mapki do gry generowane są programowo, ale można również wykorzystać bitmapy jeśli ktoś dysponuje odpowiednimi zdjęciami.<br />- Zmiana pozycji samochodu jest możliwa tylko w osi x jako, że ekran jest przewijany (w osi y).<br /><br />Główne pliki programu:<br />- main.c<br />[syntax=c]/*<br /> * main.c<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;main.h&quot;<br />#include &quot;game03.h&quot;<br /><br /><br />static void __init3( void ) __attribute__ (( section( &quot;.init3&quot; ), naked, used ));<br /><br />/* main function */<br />int main(void) {<br /><br />uint8_t start = 0;<br />uint16_t new_x = CAR_X, counter = 0;<br /><br />uint16_t seed; /* for random */<br /><br />i2cSetBitrate(400);/* I2C speed */<br /><br />u_init(); /* unused port initialization and buzzer */<br /><br />tft_init();/* TFT LCD initialization */<br /><br />stmpe811_init(); /* STMPE811 initialization */<br /><br />setCurrentFont(&amp;CourierNew12ptFontInfo);<br /><br />fx_ptr = SSDXBUF0;<br />tft_fill_rect(0, 0, 320, 240, BG_COLOR);<br />tft_puts_P( 100, 100, PSTR(&quot;POLISH ROADS&quot;), black, BG_COLOR );<br /><br />tft_puts_P( 100, 140, PSTR(&quot;TAP TO START&quot;), black, BG_COLOR );<br /><br /><br />Set_color32(black);<br />tft_line(85, 0, 0, 190);<br />tft_line(234, 0, 319, 190);<br /><br />fx_ptr = SSDXBUF1;<br />tft_fill_rect(0, 0, 320, 240, BG_COLOR);<br />draw_map1();<br /><br />fx_ptr = SSDXBUF2;<br />tft_fill_rect(0, 0, 320, 240, BG_COLOR);<br />draw_map2();<br /><br />fx_ptr = SSDXBUF3;<br />tft_fill_rect(0, 0, 320, 240, BG_COLOR);<br />draw_map3();<br /><br />fx_ptr = SSDXBUF4;<br />tft_fill_rect(0, 0, 320, 240, BG_COLOR);<br />draw_map1();<br /><br />sei();/* enable interrupts */<br /><br />/* main loop */<br />while(1) {<br />seed++;<br />if (st_intX_flag) /* screen touched */<br />{<br />if(start == 0) start = 1;<br />else<br />{<br />new_x = check_position();<br />/* correct new position - stay on the road */<br />if(new_x &gt; 220 - CAR_W/2) new_x = 220 - CAR_W/2;<br />if(new_x &lt; 100 + CAR_W/2) new_x = 100 + CAR_W/2;<br />}<br />srand(seed);<br />st_intX_flag = 0;<br />} /* if (st_intX_flag) */<br /><br />if(start == 1)<br />{<br />car_x = new_x = CAR_X;<br />setxbuf(SSDXBUF4); /* begin from the last screen */<br />screen_pos = SSDXBUF4;<br />start = 2;<br />}<br />else if (start == 2)<br />{<br />draw_car(car_x - CAR_W/2, CAR_Y, ROAD_COLOR); /* remove */<br /><br />setxbuf(screen_pos--); /* scrolling */<br />if(screen_pos == SSDXBUF1)<br />{<br />screen_pos = SSDXBUF4;<br />counter++;<br />}<br /><br />if(new_x &lt; car_x) car_x--; /* move car to new position */<br /><br />if( new_x &gt; car_x ) car_x++;<br /><br />fx_ptr = screen_pos;<br />draw_car(car_x - CAR_W/2, CAR_Y, navy); /* draw car on the screen */<br /><br />if(detect_colision())<br />{<br />short_beep();<br />_delay_ms(1000);<br />draw_car(car_x - CAR_W/2, CAR_Y, ROAD_COLOR);<br />start = 1;<br />if(cars) /* continue */<br />cars--;<br />else /* game over */<br />{<br />tft_puts_P( 140, 100, PSTR(&quot;GAME&quot;), black, ROAD_COLOR );<br />tft_puts_P( 140, 120, PSTR(&quot;OVER&quot;), black, ROAD_COLOR );<br />display_number(140, 140, counter);<br />while(1); /* end */<br />}<br />}<br />if(screen_pos == SSDXBUF4)<br />{<br />move_hole( 124+rand()%50, rand()%100, hole_index[0] ); /* random position */<br />move_hole( 124+rand()%50, rand()%100, hole_index[1] ); /* random position */<br />}<br />_delay_ms(3); /* game speed */<br />}/* if(!start) */<br />}/* while(1) */<br />}/* main() */<br /><br /><br />static void __init3( void )<br />{<br />    MCUSR = 0;<br />    WDTCSR = (1&lt;&lt;WDCE) | (1&lt;&lt;WDE);<br />    WDTCSR = 0;<br />}[/syntax]<br />- main.h<br />[syntax=c]/*<br /> * main.h<br /> */<br /><br />#ifndef MAIN_H_<br />#define MAIN_H_<br /><br />#define BUZ PB0<br /><br />static inline void short_beep(void)<br />{<br />PORTB |= (1&lt;&lt;BUZ);<br />_delay_ms(5);<br />PORTB &amp;= ~(1&lt;&lt;BUZ);<br />}<br /><br />static inline void u_init(void)<br />{<br />DDRB |= (1&lt;&lt;BUZ);<br />PORTD = 0xFF;<br />PORTB = 0xFF &amp; ~(1&lt;&lt;BUZ);<br />}<br /><br />#endif /* MAIN_H_ */[/syntax]<br />- game03.c<br />[syntax=c]/*<br /> * game01.c<br /> */<br />#include &quot;game03.h&quot;<br /><br />uint8_t cars = 2, obstacles, hole_index[5];<br />int16_t screen_pos;<br />uint16_t car_x = CAR_X;<br />OBSTACLE obstacle[10];<br /><br />/* faster than bitmap */<br />void draw_car(uint16_t x, uint16_t y, uint32_t color)<br />{<br />tft_hline(   x,  2+x, 20+y, color);<br />tft_vline( 2+x,  5+y, 45+y, color);<br />tft_vline( 3+x,  3+y, 20+y, color);<br />tft_vline( 3+x, 34+y, 48+y, color);<br />tft_vline( 4+x,  2+y, 22+y, color);<br />tft_vline( 4+x, 36+y, 48+y, color);<br />tft_vline( 5+x,  1+y, 13+y, color);<br />tft_vline( 5+x, 21+y, 49+y, color);<br />tft_vline( 6+x,  1+y, 13+y, color);<br />tft_vline( 6+x, 22+y, 37+y, color);<br />tft_vline( 6+x, 41+y, 49+y, color);<br />tft_vline( 7+x,  1+y, 12+y, color);<br />tft_vline( 7+x, 22+y, 37+y, color);<br />tft_vline( 7+x, 44+y, 49+y, color);<br />tft_vline( 8+x,    y, 12+y, color);<br />tft_vline( 8+x, 22+y, 37+y, color);<br />tft_vline( 8+x, 45+y, 49+y, color);<br />tft_vline( 9+x,    y, 12+y, color);<br />tft_vline( 9+x, 22+y, 37+y, color);<br />tft_vline( 9+x, 45+y, 49+y, color);<br />tft_vline(10+x,    y, 11+y, color);<br />tft_vline(10+x, 22+y, 37+y, color);<br />tft_vline(10+x, 46+y, 49+y, color);<br />tft_vline(11+x,    y, 11+y, color);<br />tft_vline(11+x, 22+y, 37+y, color);<br />tft_vline(11+x, 46+y, 49+y, color);<br /><br />tft_hline(22+x, 23+x, 20+y, color);<br />tft_vline(21+x,  5+y, 45+y, color);<br />tft_vline(20+x,  3+y, 20+y, color);<br />tft_vline(20+x, 34+y, 48+y, color);<br />tft_vline(19+x,  2+y, 22+y, color);<br />tft_vline(19+x, 36+y, 48+y, color);<br />tft_vline(18+x,  1+y, 13+y, color);<br />tft_vline(18+x, 21+y, 49+y, color);<br />tft_vline(17+x,  1+y, 13+y, color);<br />tft_vline(17+x, 22+y, 37+y, color);<br />tft_vline(17+x, 41+y, 49+y, color);<br />tft_vline(16+x,  1+y, 12+y, color);<br />tft_vline(16+x, 22+y, 37+y, color);<br />tft_vline(16+x, 44+y, 49+y, color);<br />tft_vline(15+x,    y, 12+y, color);<br />tft_vline(15+x, 22+y, 37+y, color);<br />tft_vline(15+x, 45+y, 49+y, color);<br />tft_vline(14+x,    y, 12+y, color);<br />tft_vline(14+x, 22+y, 37+y, color);<br />tft_vline(14+x, 45+y, 49+y, color);<br />tft_vline(13+x,    y, 11+y, color);<br />tft_vline(13+x, 22+y, 37+y, color);<br />tft_vline(13+x, 46+y, 49+y, color);<br />tft_vline(12+x,    y, 11+y, color);<br />tft_vline(12+x, 22+y, 37+y, color);<br />tft_vline(12+x, 46+y, 49+y, color);<br />}<br /><br />void draw_car2(uint16_t y, uint16_t x, uint32_t color)<br />{<br />tft_vline( 20+y,    x,  2+x, color);<br />tft_hline(  5+y, 45+y,  2+x, color);<br />tft_hline(  3+y, 20+y,  3+x, color);<br />tft_hline( 34+y, 48+y,  3+x, color);<br />tft_hline(  2+y, 22+y,  4+x, color);<br />tft_hline( 36+y, 48+y,  4+x, color);<br />tft_hline(  1+y, 13+y,  5+x, color);<br />tft_hline( 21+y, 49+y,  5+x, color);<br />tft_hline(  1+y, 13+y,  6+x, color);<br />tft_hline( 22+y, 37+y,  6+x, color);<br />tft_hline( 41+y, 49+y,  6+x, color);<br />tft_hline(  1+y, 12+y,  7+x, color);<br />tft_hline( 22+y, 37+y,  7+x, color);<br />tft_hline( 44+y, 49+y,  7+x, color);<br />tft_hline(    y, 12+y,  8+x, color);<br />tft_hline( 22+y, 37+y,  8+x, color);<br />tft_hline( 45+y, 49+y,  8+x, color);<br />tft_hline(    y, 12+y,  9+x, color);<br />tft_hline( 22+y, 37+y,  9+x, color);<br />tft_hline( 45+y, 49+y,  9+x, color);<br />tft_hline(    y, 11+y, 10+x, color);<br />tft_hline( 22+y, 37+y, 10+x, color);<br />tft_hline( 46+y, 49+y, 10+x, color);<br />tft_hline(    y, 11+y, 11+x, color);<br />tft_hline( 22+y, 37+y, 11+x, color);<br />tft_hline( 46+y, 49+y, 11+x, color);<br /><br />tft_vline( 20+y, 22+x, 23+x, color);<br />tft_hline(  5+y, 45+y, 21+x, color);<br />tft_hline(  3+y, 20+y, 20+x, color);<br />tft_hline( 34+y, 48+y, 20+x, color);<br />tft_hline(  2+y, 22+y, 19+x, color);<br />tft_hline( 36+y, 48+y, 19+x, color);<br />tft_hline(  1+y, 13+y, 18+x, color);<br />tft_hline( 21+y, 49+y, 18+x, color);<br />tft_hline(  1+y, 13+y, 17+x, color);<br />tft_hline( 22+y, 37+y, 17+x, color);<br />tft_hline( 41+y, 49+y, 17+x, color);<br />tft_hline(  1+y, 12+y, 16+x, color);<br />tft_hline( 22+y, 37+y, 16+x, color);<br />tft_hline( 44+y, 49+y, 16+x, color);<br />tft_hline(    y, 12+y, 15+x, color);<br />tft_hline( 22+y, 37+y, 15+x, color);<br />tft_hline( 45+y, 49+y, 15+x, color);<br />tft_hline(    y, 12+y, 14+x, color);<br />tft_hline( 22+y, 37+y, 14+x, color);<br />tft_hline( 45+y, 49+y, 14+x, color);<br />tft_hline(    y, 11+y, 13+x, color);<br />tft_hline( 22+y, 37+y, 13+x, color);<br />tft_hline( 46+y, 49+y, 13+x, color);<br />tft_hline(    y, 11+y, 12+x, color);<br />tft_hline( 22+y, 37+y, 12+x, color);<br />tft_hline( 46+y, 49+y, 12+x, color);<br />}<br /><br />void draw_hole(uint16_t x, uint16_t y, uint32_t color)<br />{<br />tft_hline(1+x, 6+x,   y, color);<br />tft_hline(  x, 6+x, 1+y, color);<br />tft_hline(1+x, 7+x, 2+y, color);<br />tft_hline(1+x, 7+x, 3+y, color);<br />tft_hline(2+x, 7+x, 4+y, color);<br />tft_hline(  x, 6+x, 5+y, color);<br />tft_hline(  x, 6+x, 6+y, color);<br />tft_hline(1+x, 5+x, 7+y, color);<br />}<br /><br />void draw_map1(void)<br />{<br />tft_fill_rect(100, 0, 120, 240, ROAD_COLOR);<br />draw_building_l(18, 20, 45, 90, 1, red);<br />draw_building_l(8, 120, 45, 90, 2, green);<br />draw_building_r(266, 10, 45, 90, 2, blue);<br />draw_building_r(256, 120, 45, 90, 1, yellow);<br />draw_sidewalk(220, 0, 25, 240);<br />draw_sidewalk(74, 0, 25, 240);<br />place_car(100, 10, fuchsia, SSDXBUF4);<br />place_car(196, 100, red, SSDXBUF4);<br />}<br /><br />void draw_map2(void)<br />{<br />tft_fill_rect(100, 0, 120, 240, ROAD_COLOR);<br />tft_fill_rect(0, 81, 100, 79, ROAD_COLOR);<br />tft_fill_rect(220, 81, 100, 79, ROAD_COLOR);<br />draw_building_l(18, 5, 45, 40, 1, red);<br />draw_building_l(8, 175, 45, 40, 2, green);<br />draw_building_r(266, 4, 45, 40, 2, blue);<br />draw_building_r(256, 165, 45, 50, 1, yellow);<br />draw_sidewalk(220, 0, 25, 80);<br />draw_sidewalk(74, 0, 25, 80);<br />draw_sidewalk(220, 160, 25, 80);<br />draw_sidewalk(74, 160, 25, 80);<br />draw_sidewalk(0, 60, 74, 20);<br />draw_sidewalk(245, 60, 74, 20);<br />place_car(100, 10, blue, SSDXBUF2);<br /><br />draw_car2(45, 85, red);<br />draw_car2(230, 85, green);<br /><br />hole_index[0] = obstacles;<br />place_hole( 130, 30, SSDXBUF2);<br />}<br /><br />void draw_map3(void)<br />{<br />tft_fill_rect(100, 0, 120, 240, ROAD_COLOR);<br />tft_fill_rect(220, 81, 100, 79, ROAD_COLOR);<br />draw_building_l(18, 5, 45, 40, 1, yellow);<br />draw_building_l(8, 175, 45, 40, 2, green);<br />draw_building_l(8, 82, 45, 80, 2, purple);<br />draw_building_r(266, 2, 45, 40, 2, blue);<br />draw_building_r(260, 165, 45, 50, 1, red);<br />draw_sidewalk(220, 0, 25, 80);<br />draw_sidewalk(74, 0, 25, 240);<br />draw_sidewalk(220, 160, 25, 80);<br />draw_sidewalk(74, 160, 25, 80);<br />draw_sidewalk(0, 60, 74, 20);<br />draw_sidewalk(245, 60, 74, 20);<br />place_car(100, 100, lime, SSDXBUF3);<br />place_car(196, 10, purple, SSDXBUF3);<br /><br />draw_car2(220, 85, honig);<br />draw_car2(265, 109, red);<br /><br />hole_index[1] = obstacles;<br />place_hole( 180, 50, SSDXBUF3);<br />}<br /><br />/* building located on the left side of the road */<br />void draw_building_l(uint16_t x, uint16_t y, uint8_t width, uint8_t length, uint8_t height, uint32_t color)<br />{<br />Set_color32(color);<br />tft_fill_rect(x, y, width, length, color);<br />tft_vline(x+width+10*height, y+5*height, y+length+5*height, color);<br />tft_line(x+width, y, x+width+10*height, y+5*height);<br />tft_hline(x+10*height, x+width+10*height, y+length+5*height, color);<br />tft_line(x+width, y+length, x+width+10*height, y+length+5*height);<br />tft_line(x, y+length, x+10*height, y+length+5*height);<br />}<br /><br />/* building located on the right side of the road */<br />void draw_building_r(uint16_t x, uint16_t y, uint8_t width, uint8_t length, uint8_t height, uint32_t color)<br />{<br />Set_color32(color);<br />tft_fill_rect(x, y, width, length, color);<br />tft_vline(x-10*height, y+5*height, y+length+5*height, color);<br />tft_line(x, y, x-10*height, y+5*height);<br />tft_hline(x-10*height, x+width-10*height, y+length+5*height, color);<br />tft_line(x+width, y+length, x+width-10*height, y+length+5*height);<br />tft_line(x, y+length, x-10*height, y+length+5*height);<br />}<br /><br />void draw_sidewalk(uint16_t x, uint16_t y, uint8_t width, uint8_t length )<br />{<br />tft_fill_rect(x,y,width,length, 0xDDE1CC);<br />for(uint16_t i = x; i &lt;= x + width; i+=5)<br />{<br />tft_vline(i,y,y+length, black);<br />}<br />for(uint16_t i = y; i &lt;= y + length; i+=5)<br />{<br />tft_hline(x, x+width, i, black);<br />}<br />}<br /><br />uint16_t check_position(void)<br />{<br />int16_t x = 0;<br />x = TP_X;<br />return x;<br />}<br /><br />void display_number(uint16_t x, uint16_t y, uint16_t number)<br />{<br />char buffer[12];<br />itoa(number, buffer, 10);<br />setCurrentFont(&amp;CourierNew12ptFontInfo);<br />tft_puts( x, y, buffer, black, ROAD_COLOR );<br />}<br /><br /><br />uint8_t detect_colision(void)<br />{<br />for(uint8_t i = 0; i &lt; obstacles; i++) /* for all obstacles */<br />{<br />if(<br />(<br />( (screen_pos + CAR_Y) % 240 &lt;= obstacle[i].y + obstacle[i].length)/* front */<br />|| ( ((screen_pos + CAR_Y + CAR_L) % 240 &gt;= obstacle[i].y)<br />&amp;&amp; ((screen_pos + CAR_Y + CAR_L) % 240 &lt;= obstacle[i].length) ) /* back */<br />)<br />&amp;&amp; ( (screen_pos &lt; obstacle[i].buf) &amp;&amp; (screen_pos &gt;  obstacle[i].buf - 240) ) /* displayed screen */<br />  )<br />{<br />if( (car_x - CAR_W/2 &lt; obstacle[i].x + obstacle[i].width) &amp;&amp; (car_x + CAR_W/2 &gt; obstacle[i].x) )<br />{<br />return 1;<br />}<br />}<br />}<br />return 0;<br />}<br /><br />void place_car(uint8_t x, uint8_t y, uint32_t color, uint16_t buf)<br />{<br />draw_car(x, y, color);<br />obstacle[obstacles].x = x;<br />obstacle[obstacles].y = y;<br />obstacle[obstacles].buf = buf;<br />obstacle[obstacles].width = CAR_W;<br />obstacle[obstacles].length = CAR_L;<br />obstacles++;<br />}<br /><br />void place_hole(uint8_t x, uint8_t y, uint16_t buf)<br />{<br />draw_hole(x, y, black);<br />obstacle[obstacles].x = x;<br />obstacle[obstacles].y = y;<br />obstacle[obstacles].buf = buf;<br />obstacle[obstacles].width = 8;<br />obstacle[obstacles].length = 6;<br />obstacles++;<br />}<br /><br />void move_hole(uint8_t x, uint8_t y, uint8_t index)<br />{<br />uint16_t temp_ptr = fx_ptr;<br />fx_ptr = obstacle[index].buf;<br />draw_hole(obstacle[index].x, obstacle[index].y, ROAD_COLOR); /* remove previous */<br />draw_hole(x, y, black); /* place new */<br />obstacle[index].x = x;  /* save position */<br />obstacle[index].y = y;<br />fx_ptr = temp_ptr;<br />}[/syntax]<br />- game.h<br />[syntax=c]/*<br /> * game01.h<br /> */<br /><br />#ifndef GAME01_H_<br />#define GAME01_H_<br /><br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_SSD1963/MK_SSD1963.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;MK_STMPE811/mk_stmpe811.h&quot;<br /><br />#define BG_COLOR  white<br />#define LINE_COLOR red<br />#define ROAD_COLOR silver<br /><br />#define CAR_L 50<br />#define CAR_W 24<br /><br />#define CAR_X 160<br />#define CAR_Y 185<br /><br />extern uint8_t cars, obstacles, hole_index[5];<br />extern int16_t screen_pos;<br />extern uint16_t car_x;<br /><br />typedef struct<br />{<br />uint16_t x; /* left upper corner position */<br />uint16_t y; /* left upper corner position */<br />uint16_t buf; /* used screen */<br />uint8_t width;<br />uint8_t length;<br />} OBSTACLE;<br /><br />void draw_car(uint16_t x, uint16_t y, uint32_t color);<br />void draw_car2(uint16_t x, uint16_t y, uint32_t color);<br />void draw_hole(uint16_t x, uint16_t y, uint32_t color);<br />void draw_map1(void);<br />void draw_map2(void);<br />void draw_map3(void);<br />void draw_building_l(uint16_t x, uint16_t y, uint8_t width, uint8_t length, uint8_t height, uint32_t color);<br />void draw_building_r(uint16_t x, uint16_t y, uint8_t width, uint8_t length, uint8_t height, uint32_t color);<br />void draw_sidewalk(uint16_t x, uint16_t y, uint8_t width, uint8_t length);<br /><br />uint16_t check_position(void);<br />void display_number(uint16_t x, uint16_t y, uint16_t number);<br />uint8_t detect_colision(void);<br />void place_car(uint8_t x, uint8_t y, uint32_t color, uint16_t buf);<br />void place_hole(uint8_t x, uint8_t y, uint16_t buf);<br />void move_hole(uint8_t x, uint8_t y, uint8_t index);<br /><br />#endif /* GAME01_H_ */[/syntax]<br /><br />Szerokiej drogi  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 22 lut 2013, o 21:45</p><hr />
]]></content>
</entry>
</feed>