<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michał Środek &#187; Inne</title>
	<atom:link href="http://srodek.info/category/inne/feed" rel="self" type="application/rss+xml" />
	<link>http://srodek.info</link>
	<description>Mój osobisty blog</description>
	<lastBuildDate>Mon, 15 Aug 2011 19:00:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Długo, długo nic</title>
		<link>http://srodek.info/blog/445/dlugo-dlugo-nic</link>
		<comments>http://srodek.info/blog/445/dlugo-dlugo-nic#comments</comments>
		<pubDate>Sat, 09 Apr 2011 18:47:26 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=445</guid>
		<description><![CDATA[Jak zapewne zauważyliście od około pół roku jestem całkowicie nieosiągalny. Postanowiłem jednak powrócić do aktywnego pisania na blogu. Co więcej w między czasie tworzę nowy design(już na HTML5) więc odświeżę również wygląd. Dlaczego nie mam czasu dodawać nowych artykułów? W sierpniu poprzedniego roku krążąc po witrynach agencji interaktywnych z Lublina znalazłem na jednej z nich(nazwy [...]]]></description>
			<content:encoded><![CDATA[<p>Jak zapewne zauważyliście od około pół roku jestem całkowicie nieosiągalny. Postanowiłem jednak powrócić do aktywnego pisania na blogu. Co więcej w między czasie tworzę nowy design(już na HTML5) więc odświeżę również wygląd. Dlaczego nie mam czasu dodawać nowych artykułów? W sierpniu poprzedniego roku krążąc po witrynach agencji interaktywnych z Lublina znalazłem na jednej z nich(nazwy firmy nie podam) dziurę XSS(sic!). Poinformowałem ich o tym, a oni zaproponowali mi pracę. Zainteresowany odesłałem e-mail.<span id="more-445"></span></p>
<p>Niestety praca kolidowałaby ze studiami więc postanowiłem, że zmienię je na zaoczne. Pomyślałem, że dzięki temu zaoszczędzę sporo czasu, ponieważ zajęcia zazwyczaj odbywają się z ogromnymi „okienkami“ pomiędzy nimi. Mając 2 godziny wolnego czasu możesz wrócić do mieszkania, ale samo przejście się w obie strony zajmuje godzinę. Rozpoczynać pracę tylko po to aby programować 50 minut nie ma sensu, chodzić wszędzie z laptopem nie lubię, a telefon mam za słaby aby zapisywać w nim coś dłuższego. Złożyłem więc podanie i przeniesiono mnie na studia niestacjonarne. To był dobry ruch. Nie oszukujmy się — studia nie kształcą(przynajmniej nie programistów), a na zaocznych mam dużo łatwiej. Odrzuconych zostało sporo przedmiotów, a te które pozostały są na dużo niższym poziomie. Nie muszę się więc uczyć durnych rzeczy, których i tak nigdy nie wykorzystam(z drugiej strony jednak żałuję, że np. nie mam przedmiotu Bezpieczeństwo systemów komputerowych, który na studiach dziennych jest). Oczywiście studia kosztują więc musiałem znaleźć pracę. Na odpowiedź od wcześniej wspomnianej firmy czekałem około 5 tygodni(co za firma!) i do tego czasu, złożyłem CV w kilku innych miejscach. Pracę dostałem w <a href="http://netrix.com.pl">Netrix Group</a>.</p>
<p>Pracę na etacie jednak ciężko pogodzić z własnymi projektami. Z jednej strony od poniedziałku do piątku wycięte z życia 10h(1h dojazd, 8h pracy, 1h powrót do mieszkania), z drugiej studia w weekendy. Ogólny brak czasu na cokolwiek. Jeśli dorzuci się do tego jeszcze pisanie pracy licencjackiej to ilość wolnego czasu redukuje się do zera. Oczywiście pozostają wieczory ale te musiałem poświęcać na pisanie programów na studia. Przetrwałem tak 8 miesięcy i postanowiłem zmienić kolejną rzecz w moim życiu. W poprzednim tygodniu powiedziałem szefowi, że odchodzę. Popracuję do końca miesiąca i wracam na poważnie do własnych projektów.</p>
<p>Chciałbym podać kilka ważnych aspektów dla tych, którzy planują znaleźć pracę na etacie.</p>
<ol>
<li>Studia na w miarę porządnej uczelni jest ciężko pogodzić z pracą. Osobiście odradzam takie połączenie ponieważ po pół roku masz dość studiowania i pisania totalnie bezsensownych projektów tylko po to aby ktoś wpisał Ci trójkę lub czwórkę w indeks.</li>
<li>Warto się zatrudnić przynajmniej na kilka miesięcy ponieważ poznajesz ludzi, umiejących robić rzeczy, o którym sam wcześniej nawet nie wiedziałeś. Podczas pracy w Netrix Group poznałem dużo ciekawych rzeczy. Przede wszystkim poszerzyłem wiedzę na temat Zend Framework, opanowałem kilka nowych rzeczy z PostgreSQL-a. Poprawiłem swoją wiedzę na temat „cięcia stron“ oraz JavaScriptu. Poznałem kilka ciekawych bibliotek (np. ExtJS) oraz niesamowite IDE — PhpStorm(kosztuje $200 ale na prawdę się opłaca. Nie wiem jak to zrobiła czeska firma JetBrains ale mimo, że aplikacja napisana jest, tak jak inne znane IDE, w Javie i posiada dużo więcej opcji działa 5 razy szybciej niż Eclipse lub NetBeans. W domu wciąż pracuję z NetBeans ale jak tylko pojawi się rozsądna promocja(ostatnio było 50% ceny) kupuję licencję <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</li>
<li>Jeżeli mieszkasz(tak jak ja) w innym mieście niż rodzice oraz dziadkowie i chciałbyś ich odwiedzić od czasu do czasu to musisz mieć świadomość, że będzie to utrudnione. Aby wrócić do domu rodzinnego muszę jechać około 1.5h. Jeżeli po pracy wyjadę z Lublina o 17:00 to o 18:30 będę w mieszkaniu rodziców. Zostając u nich na noc, następnego dnia muszę wstać o 5 aby dojechać do pracy na czas. Weekendy odpadają ponieważ zajęcia na studiach są co tydzień(przynajmniej na UMCS).</li>
</ol>
<p>Tak więc w skrócie: 1 maja kończę pracę, 1 lipca kończę studia i powracam do tworzenia gier www.</p>
<p>Co dalej? Znów będę wolnym strzelcem. Odłożyłem trochę pieniędzy i dwa, może trzy, miesiące jestem w stanie przeżyć bez pracy. Spróbuję poszukać kontaktów w USA i uderzyć w rynek zagraniczny aby pracując mniej zarabiać więcej. </p>
<p>PS: licencjat piszę na temat Bezpieczeństwa aplikacji www. Nie wiem jak są rozdzielane prawa do publikowania pracy, ale spróbuję się tego dowiedzieć i jeżeli tylko będę mógł, to opublikuję całość w formie kilkunastu artykułów.</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/445/dlugo-dlugo-nic/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Własna skórka dla Chrome</title>
		<link>http://srodek.info/blog/404/wlasna-skorka-dla-chrome</link>
		<comments>http://srodek.info/blog/404/wlasna-skorka-dla-chrome#comments</comments>
		<pubDate>Sun, 18 Jul 2010 12:10:25 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=404</guid>
		<description><![CDATA[Wczoraj przypadkowo trafiłem na stronę udostępniającą motywy dla przeglądarki ze stajni Google. Postanowiłem, że sprawdzę czym to się je i zostałem miło zaskoczony — cały proces jest bardzo, bardzo prosty. Wystarczy stworzyć kilka grafik oraz plik manifest.json zawierający ustawienia kolorów. Niestety ilość dostępnych opcji jest bardzo ograniczona i z niecierpliwością czekam na jakieś bogatsze możliwości [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj przypadkowo trafiłem na stronę udostępniającą motywy dla przeglądarki ze stajni Google. Postanowiłem, że sprawdzę czym to się je i zostałem miło zaskoczony — cały proces jest bardzo, bardzo prosty. Wystarczy stworzyć kilka grafik oraz plik manifest.json zawierający ustawienia kolorów. Niestety ilość dostępnych opcji jest bardzo ograniczona i z niecierpliwością czekam na jakieś bogatsze możliwości w przyszłych wersjach chrome.</p>
<p><span id="more-404"></span></p>
<p>Paczkę wrzuciłem na serwer. Wystarczy kliknąć <a href="/files/chromium/msrodek.crx">tutaj</a></p>
<p>Oto jak wygląda Chromium z moją skórką.</p>
<p><a href="http://srodek.info/wp-content/uploads/2010/07/theme-screenshot.png"><img src="http://srodek.info/wp-content/uploads/2010/07/theme-screenshot-300x173.png" alt="" title="Theme screenshot" width="300" height="173" class="aligncenter size-medium wp-image-405" /></a></p>
<p>Jako główny kolor wybrałem zieleń ponieważ uspokaja on oczy. Całość urozmaiciłem ivadersami oraz <a href="http://www.youtube.com/watch?v=J---aiyznGQ">kotem grającym na klawiszach</a>. Ciężko było przygotować grafikę(np. invadersów musiałem ręcznie rysować), ale mam nadzieję, że efekt jest ciekawy <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/404/wlasna-skorka-dla-chrome/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>openSUSE 11.3</title>
		<link>http://srodek.info/blog/402/opensuse-11-3</link>
		<comments>http://srodek.info/blog/402/opensuse-11-3#comments</comments>
		<pubDate>Sat, 17 Jul 2010 17:09:04 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=402</guid>
		<description><![CDATA[Dzisiaj spędziłem trochę czasu na porządkowanie dysku twardego. Usunąłem praktycznie wszystko, a backup nagrałem na płytę. Przeinstalowałem system ponieważ poprzednia wersja strasznie wolno działała. Co nowego w openSUSE 11.3? Przede wszystkim zwiększenie prędkości. Całe KDE pracuję troszkę szybciej i stabilniej(ale to może być spowodowane wcześniejszymi paczkami z repozytorium Factory). Przyspieszył m.in. Amarok oraz Firefox. Flash [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj spędziłem trochę czasu na porządkowanie dysku twardego. Usunąłem praktycznie wszystko, a backup nagrałem na płytę. Przeinstalowałem system ponieważ poprzednia wersja strasznie wolno działała. Co nowego w openSUSE 11.3? Przede wszystkim zwiększenie prędkości. Całe KDE pracuję troszkę szybciej i stabilniej(ale to może być spowodowane wcześniejszymi paczkami z repozytorium Factory). Przyspieszył m.in. Amarok oraz Firefox. Flash niestety wciąż działa niezadowalająco. Zmienił się oczywiście kernel na nowszy, a wraz z nim wolne sterowniki do kart graficznych. Zmienie uległa samba oraz kilka innych rzeczy, dodano również nowy system plików Btrfs. Dla użytkowników Wine ciekawą informacją jest nowy Xorg(1.8.0). Nie jestem pewien czy ten system idzie w dobrym kierunku(prędkość pozostawia wiele do życzenia) jednak konfiguracja wszystkiego to jedynie kilka kliknięć i właśnie za to go lubię <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Tuż po instalacji dointalowałem NetBeans 6.9 oraz skonfigurowałem Apache/MySQL, PHP. Pierwsze co mi później przyszło na myśl, to dopisanie obsługi PDO oraz Doctrine w moim Frameworku. Środowisko mam już przygotowane, więc czas się wziąć do pracy…</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/402/opensuse-11-3/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Prokrastynacja</title>
		<link>http://srodek.info/blog/376/prokrastynacja</link>
		<comments>http://srodek.info/blog/376/prokrastynacja#comments</comments>
		<pubDate>Wed, 07 Jul 2010 11:28:34 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=376</guid>
		<description><![CDATA[Prokrastynacja lub zwlekanie (z łac. procrastinatio – odroczenie, zwłoka) – w psychologii: patologiczna tendencja do nieustannego przekładania pewnych czynności na później, ujawniającą się w różnych dziedzinach życia. Bywa żartobliwie nazywana „syndromem studenta“. Prokrastynator ma problemy z zabraniem się do pracy i odkłada jej wykonanie, zwłaszcza wtedy, gdy nie widzi natychmiastowych efektów. Źródło: http://pl.wikipedia.org/wiki/Prokrastynacja Tak, cierpię [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Prokrastynacja lub zwlekanie (z łac. procrastinatio – odroczenie, zwłoka) – w psychologii: patologiczna tendencja do nieustannego przekładania pewnych czynności na później, ujawniającą się w różnych dziedzinach życia. Bywa żartobliwie nazywana „syndromem studenta“.<br />
Prokrastynator ma problemy z zabraniem się do pracy i odkłada jej wykonanie, zwłaszcza wtedy, gdy nie widzi natychmiastowych efektów.</p></blockquote>
<p>Źródło: <a href="http://pl.wikipedia.org/wiki/Prokrastynacja">http://pl.wikipedia.org/wiki/Prokrastynacja</a></p>
<p>Tak, cierpię na to zaburzenie. I mój przypadek jest dosyć ciekawy. Pracuję intensywnie ale tuż przed ukończeniem porzucam projekt i rozpoczynam kolejny. Oczywiście staram się walczyć z moim lenistwem i dzisiaj chciałbym zaprezentować mój nowy sposób na zmuszanie się do pracy i zwiększanie motywacji.</p>
<p><span id="more-376"></span></p>
<p>Pierwszym krokiem jest stworzenie pliku index.html, który będzie zawierał tekst zachęcający nas do pracy.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span> 
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> xmlns<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #000066;">dir</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ltr&quot;</span> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pl-PL&quot;</span>&gt;</span> 
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">http-equiv</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;content-type&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/html; charset=utf-8&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span> Pracuj, pracuj...<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span> 
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;font-family:helvetica; width:600px; margin:auto; background:#eee; padding:20px; border:1px solid #ccc;&quot;</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>WEŹ SIĘ DO ROBOTY!<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;</span>Lista rzeczy do zrobienia<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ol</span>&gt;</span>
		    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Dokumentacja<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Kolejna część artykułu o tankach<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Spisanie tabulatur<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Pisanie książki<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ol</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;</span>Zarobisz dużo pieniędzy i będziesz bogaty.<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>JEŻELI NIE WYKONUJESZ PUNKTU 3. NIE IDŹ PO GITARĘ! ZOSTAŃ TAM GDZIE JESTEŚ!<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>Teraz przechodzimy do edycji pliku /etc/hosts</p>
<pre class="console">sudo mcedit /etc/hosts</pre>
<p>Dopisujemy kilka adresów stron internetowych, na oglądanie których tracimy najwięcej czasu.</p>
<pre class="console">
127.0.0.1        facebook.com
127.0.0.1        wykop.pl
127.0.0.1        youtube.com
127.0.0.1        demotywatory.pl
127.0.0.1        nk.pl
</pre>
<p>Przekierowanie gotowe. Możemy wziąć się do pracy.</p>
<p>Informacja dla użytkowników systemów z rodziny Windows. Jeżeli dobrze pamiętam, plik hosts znajduje się w C:\windows\system32, a przynajmniej tam się znajdował, gdy ja korzystałem z Microsoft Windows XP.
<p>Aby rozwiać wszelkie wątpliwości — pisanie tego artykułu to również forma odwlekania mojej pracy <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/376/prokrastynacja/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Optymalizacja obiektu canvas</title>
		<link>http://srodek.info/blog/370/optymalizacja-obiektu-canvas</link>
		<comments>http://srodek.info/blog/370/optymalizacja-obiektu-canvas#comments</comments>
		<pubDate>Tue, 06 Jul 2010 18:32:03 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Moje projekty]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=370</guid>
		<description><![CDATA[Jak zapewne zauważyłeś podczas czytania mojego poprzedniego artykułu gra, którą tworzę działa troszkę wolno. Dzieje się tak dlatego, że mapa jest generowana od nowa w każdej klatce działania programu. Spróbujmy to zoptymalizować. Zasada jest bardzo prosta. To co możemy generować raz, generujemy tylko raz. Następnie zapisujemy wynik do oddzielnego obiektu &#60;canvas&#62; i w razie potrzeby [...]]]></description>
			<content:encoded><![CDATA[<p>Jak zapewne zauważyłeś podczas czytania mojego poprzedniego artykułu gra, którą tworzę działa troszkę wolno. Dzieje się tak dlatego, że mapa jest generowana od nowa w każdej klatce działania programu. Spróbujmy to zoptymalizować.</p>
<p><span id="more-370"></span></p>
<p>Zasada jest bardzo prosta. To co możemy generować raz, generujemy tylko raz. Następnie zapisujemy wynik do oddzielnego obiektu &lt;canvas&gt; i w razie potrzeby kopiujemy do głównego obiektu naszej gry.</p>
<p>Na potrzeby mojego przykładu stworzyłem dynamicznie dwa nowe obiekty canvas, jeden przechowujący wygenerowaną mapę, drugi czołg(obracanie obrazków jest bardzo czasochłonne).</p>
<p>Uporządkowałem troszkę kod umieszczając wszelkie dane czołgu do klasy GameTank</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> GameTank <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	x<span style="color: #339933;">:</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
	y<span style="color: #339933;">:</span><span style="color: #CC0000;">480</span><span style="color: #339933;">,</span>
	canvas<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	ctx<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	direction<span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>  <span style="color: #006600; font-style: italic;">// 0= LEFT 1 =UP, 2 = RIGHT, 3=DOWN</span>
&nbsp;
	changeDirection<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>newDirection<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>newDirection<span style="color: #339933;">!=</span>GameTank.<span style="color: #660066;">direction</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			GameTank.<span style="color: #660066;">direction</span> <span style="color: #339933;">=</span> newDirection<span style="color: #339933;">;</span>
&nbsp;
			GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">switch</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">direction</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">:</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">rotate</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">90</span> <span style="color: #339933;">*</span> Math.<span style="color: #660066;">PI</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">:</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">rotate</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">180</span> <span style="color: #339933;">*</span> Math.<span style="color: #660066;">PI</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">:</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">rotate</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">270</span> <span style="color: #339933;">*</span> Math.<span style="color: #660066;">PI</span> <span style="color: #339933;">/</span> <span style="color: #CC0000;">180</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
				<span style="color: #003366; font-weight: bold;">default</span><span style="color: #339933;">:</span>
					GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			GameTank.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">restore</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	init<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span> <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">32</span><span style="color: #339933;">;</span> 
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">32</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>W analogiczny sposób tworzony jest obiekt &lt;cavas&gt; dla mapy</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> GameBoard <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	canvas<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	ctx<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	TEXTURE_ID<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>ICE<span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> BRICK<span style="color: #339933;">:</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span> WATER<span style="color: #339933;">:</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
	textures<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'images/ice.png'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'images/brick.png'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'images/water.png'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
	board<span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>
		<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
	drawBoard<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> y<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> y<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">16</span><span style="color: #339933;">;</span> y<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> x<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> x<span style="color: #339933;">&lt;</span><span style="color: #CC0000;">16</span><span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
				<span style="color: #009900;">&#123;</span>
					<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">board</span><span style="color: #009900;">&#91;</span>y<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
					<span style="color: #009900;">&#123;</span>
						<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">textures</span><span style="color: #009900;">&#91;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">board</span><span style="color: #009900;">&#91;</span>y<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">*</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span>y<span style="color: #339933;">*</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">restore</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	preloadTextures<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> img <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">textures</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		img.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			GameBoard.<span style="color: #660066;">textures</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> GameBoard.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">createPattern</span><span style="color: #009900;">&#40;</span>img<span style="color: #339933;">,</span> <span style="color: #3366CC;">'repeat'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>GameBoard.<span style="color: #660066;">textures</span><span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
				GameBoard.<span style="color: #660066;">preloadTextures</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
				GameBoard.<span style="color: #660066;">drawBoard</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				GameTank.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				window.<span style="color: #660066;">setInterval</span><span style="color: #009900;">&#40;</span>GameMain.<span style="color: #660066;">mainLoop</span><span style="color: #339933;">,</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	init<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span> <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'canvas'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">512</span><span style="color: #339933;">;</span> 
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">512</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">preloadTextures</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Główna klasa gry jedynie składa obraz ze wszystkich elementów</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> GameMain <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	canvas<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	ctx<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	img<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	mainLoop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 			GameMain.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			GameMain.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameBoard.<span style="color: #660066;">canvas</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #339933;">,</span><span style="color: #CC0000;">512</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>keyHandler.<span style="color: #660066;">isHolded</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">37</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// LEFT</span>
			<span style="color: #009900;">&#123;</span>
				GameTank.<span style="color: #660066;">changeDirection</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">x</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
					GameTank.<span style="color: #660066;">x</span><span style="color: #339933;">-=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>keyHandler.<span style="color: #660066;">isHolded</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">38</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// UP</span>
			<span style="color: #009900;">&#123;</span>
				GameTank.<span style="color: #660066;">changeDirection</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">y</span><span style="color: #339933;">&gt;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
					GameTank.<span style="color: #660066;">y</span><span style="color: #339933;">-=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>keyHandler.<span style="color: #660066;">isHolded</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">39</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// RIGHT</span>
			<span style="color: #009900;">&#123;</span>
				GameTank.<span style="color: #660066;">changeDirection</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">x</span><span style="color: #339933;">&lt;</span><span style="color: #CC0000;">480</span><span style="color: #009900;">&#41;</span>
					GameTank.<span style="color: #660066;">x</span><span style="color: #339933;">+=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>keyHandler.<span style="color: #660066;">isHolded</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">40</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// DOWN</span>
			<span style="color: #009900;">&#123;</span>
				GameTank.<span style="color: #660066;">changeDirection</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">y</span><span style="color: #339933;">&lt;</span><span style="color: #CC0000;">480</span><span style="color: #009900;">&#41;</span>
					GameTank.<span style="color: #660066;">y</span><span style="color: #339933;">+=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			GameMain.<span style="color: #660066;">ctx</span>.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>GameTank.<span style="color: #660066;">canvas</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span>GameTank.<span style="color: #660066;">x</span><span style="color: #339933;">,</span>GameTank.<span style="color: #660066;">y</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #339933;">,</span><span style="color: #CC0000;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 			FrameCounter.<span style="color: #660066;">updateFPS</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	init<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span> <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'game'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ctx</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">canvas</span>.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span>.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'images/btank.png'</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">img</span>.<span style="color: #660066;">tank</span>.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			GameBoard.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keydown'</span><span style="color: #339933;">,</span> keyHandler.<span style="color: #660066;">keyDown</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		document.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'keyup'</span><span style="color: #339933;">,</span> keyHandler.<span style="color: #660066;">keyUp</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kolejną, obok generowania grafiki, czasochłonną operacją jest liczenie czasu. Spróbujmy ograniczyć wywoływanie pewnych funkcji w liczniku FPS. Czas liczył będę co 10 klatek.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> FrameCounter <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	x<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
	lastFrameTime<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	updateFPS<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">==</span><span style="color: #CC0000;">10</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> currentTime <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fps'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> Math.<span style="color: #660066;">floor</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">10000</span><span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>currentTime<span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">lastFrameTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'fps'</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">lastFrameTime</span> <span style="color: #339933;">=</span> currentTime<span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">++</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Poza przyspieszeniem gry zauważymy również zmiany w działaniu samego licznika. Jego odświeżanie będzie rzadsze i jednocześnie przyjemniejsze dla ludzkiego oka.</p>
<p>Technika, którą tutaj pokazałem bardzo przypomina tą ze zwykłych gier DHTML budowanych w oparciu o odpowiednio pozycjonowane znaczniki &lt;div&gt;. Dlaczego nie robię tak samo w przypadku znaczników &lt;canvas&gt;? Po prostu sądzę, że takie rozwiązanie jest mniej eleganckie. Tworzenie jednego obrazu lepiej przypomina klasyczne gry komputerowe. Czas( oraz licznik FPS) pokaże, czy nie zmienię zdania…</p>
<p>Działające demo dostępne jest <a href="http://srodek.info/examples/game-0.0.4/">TUTAJ</a>.</p>
<p>Dlaczego tak długo nie pisałem? No cóż miałem sporo pracy, a czerwiec to nie najlepszy czas aby odnaleźć dodatkowych kilka godzin. Jutro postaram się opisać coś bardziej skomplikowanego <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/370/optymalizacja-obiektu-canvas/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Zmiany na blogu</title>
		<link>http://srodek.info/blog/188/zmiany-na-blogu</link>
		<comments>http://srodek.info/blog/188/zmiany-na-blogu#comments</comments>
		<pubDate>Sun, 21 Feb 2010 12:33:25 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=188</guid>
		<description><![CDATA[Dzisiaj w nocy postanowiłem poprawić kilka błędów, na które skarżyli się czytelnicy. Przede wszystkim zmieniłem krój na Helvetica. Stary dołączany do strony ważył 640kb, a tekst był podobno nieczytelny pod systemami z rodziny Windows. Zmieniłem też sposób działania menu na górze strony. Teraz obrazki widoczne po najechaniu są wczytywane razem z pozostałymi więc zniknął efekt [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj w nocy postanowiłem poprawić kilka błędów, na które skarżyli się czytelnicy. Przede wszystkim zmieniłem krój na Helvetica. Stary dołączany do strony ważył 640kb, a tekst był podobno nieczytelny pod systemami z rodziny Windows. Zmieniłem też sposób działania menu na górze strony. Teraz obrazki widoczne po najechaniu są wczytywane razem z pozostałymi więc zniknął efekt znikania grafiki i oczekiwania na pobranie się nowej(szczególnie to było widoczne na maszynach ze słabym łączem internetowym). Poprawiłem rozmieszczanie komentarzy, porzuciłem miary w pikselach(teraz używam em) oraz odświeżyłem kod CSS. Usunąłem także kropki wokół linków w Firefoxie. Strona waży około 650kb mniej niż wcześniej. Również ilość wczytywanych plików zmalała o 5 więc całość powinna działać troszkę szybciej.</p>
<p>Ostatnio cierpię na brak pieniędzy, a chciałem uruchomić nowy projekt. Wiąże się to jednak z wynajęciem grafika więc dodałem przycisk „Wesprzyj blog“ widoczny po prawej stronie. Jeśli sądzisz, że <a href="http://srodek.info/files/">moje biblioteki</a> są przydatne, to co piszę ma sens a twoja wiedza się dzięki moim artykułom poszerza kliknij. Nie oczekuję dużych wpłat. 1zł to też sporo. Postaram się zrobić pasek postępu pokazujący ile pieniędzy zebrałem, a ile jeszcze potrzebuję do realizacji pewnych rzeczy. Dzisiaj przysiądę jeszcze do CSS3. Pomyślę w jaki sposób mógłbym urozmaicić stronę na przeglądarkach obsługujących animacje CSS(ewentualnie użyję jQuery).</p>
<p>I na koniec pytanie dotyczące treści blogu. Kontynuować temat bezpieczeństwa, czy napisać coś na temat CSS/SVG/JS? Pisać na temat nowych rzeczy dostępnych w CSS3 czy opisywać dobre zwyczaje tworzenia styli. Czekam na wasze opinie <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/188/zmiany-na-blogu/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Nowy blog o CSS3</title>
		<link>http://srodek.info/blog/143/nowy-blog-o-css3</link>
		<comments>http://srodek.info/blog/143/nowy-blog-o-css3#comments</comments>
		<pubDate>Tue, 09 Feb 2010 22:33:53 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=143</guid>
		<description><![CDATA[Cieszy mnie fakt, iż coraz większa grupa twórców stron internetowych dostrzega piękno nowych techologii. Podczas mojej nieobecności(a wielu z was zapewne ją zauważyło) odnalazłem sporo interesującego materiału, przykładów i porad, którymi postaram się niebawem podzielić. Teraz jednak chciałbym przedstawić pewną stronę — http://hs2.pl. Uruchomił ją dzisiaj jeden z moich kolegów — Oskar Wójcicki. Planuje opisywać [...]]]></description>
			<content:encoded><![CDATA[<p>Cieszy mnie fakt, iż coraz większa grupa twórców stron internetowych dostrzega piękno nowych techologii. Podczas mojej nieobecności(a wielu z was zapewne ją zauważyło) odnalazłem sporo interesującego materiału, przykładów i porad, którymi postaram się niebawem podzielić. Teraz jednak chciałbym przedstawić pewną stronę — <a href="http://hs2.pl">http://hs2.pl</a>. Uruchomił ją dzisiaj jeden z moich kolegów — Oskar Wójcicki. Planuje opisywać porady dotyczące CSS3 i PHP co bardzo mnie cieszy(chętnie sam się czegoś nowego nauczę). Serdecznie zapraszam.</p>
<p>Przy okazji chciałbym mu życzyć Wszystkiego najlepszego <img src='http://srodek.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  — dziś jego urodziny.</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/143/nowy-blog-o-css3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gdy e-maili jest za dużo…</title>
		<link>http://srodek.info/blog/135/gdy-e-maili-jest-za-duzo</link>
		<comments>http://srodek.info/blog/135/gdy-e-maili-jest-za-duzo#comments</comments>
		<pubDate>Fri, 20 Nov 2009 12:06:46 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=135</guid>
		<description><![CDATA[Dzisiaj troszkę nietechniczne. Wpomnę conieco o netykiecie w adresach e-mail. Otrzymałem ostatnio informację od jednej z firm hostujących strony dotyczącą zmian w obsłudze portów pocztowych przez TP S.A. Wszystko było w porządku gdyby nie fakt, że nie jestem już klientem tej firmy. Wysłałem więc krótką wiadomość: Witam Państwa! Nie wiem dlaczego otrzymuję e-maile związane z [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj troszkę nietechniczne. Wpomnę conieco o netykiecie w adresach e-mail. Otrzymałem ostatnio informację od jednej z firm hostujących strony dotyczącą zmian w obsłudze portów pocztowych przez TP S.A. Wszystko było w porządku gdyby nie fakt, że nie jestem już klientem tej firmy.<br />
<span id="more-135"></span><br />
 Wysłałem więc krótką wiadomość:</p>
<blockquote style="margin-left:40px; background:#eee; padding:10px;"><p>Witam Państwa!</p>
<p>Nie wiem dlaczego otrzymuję e-maile związane z działaniem serwera(od<br />
ponad 2 lat pracuję na własnym serwerze i nie jestem już Państwa<br />
klientem), jednak cieszę się, że biznes jest wciąż opłacalny,<br />
szczególnie, że wykazują się Państwo ogromnym szacunkiem do<br />
użytkownika(w moim przypadku było to wysłanie backupa już po<br />
zablokowaniu konta z powodu jego nieopłacenia).</p>
<p>W każdym razie proszę Państa o usunięcie mnie ze swojej bazy e-mailowej.</p>
<p>I jeszcze pytanie na koniec. Czy są w Państwa w ofercie serwery<br />
dedykowane? Niedługo będę musiał skorzystać z takiej oferty i<br />
chciałbym rozejrzeć się wśród rozsądnych firm. U Państwa na stronie<br />
niestety nie widzę o nich żadnych informacji.</p>
<p>Pozdrawiam serdecznie</p>
<p>Michał Środek</p>
</blockquote>
<p>Spodziewając się fajnego, oficjalnego e-maila otwieram dziś skrzynkę pocztową. Otrzymałem taki o to e-mail(adresy są zmienione):</p>
<blockquote style="margin-left:40px; background:#eee; padding:10px;"><p>konto usuniete<br />
co do serwerow dedykowanych zapraszam np. na www.example.com</p>
<p>—<br/><br />
Pozdrawiam<br/><br />
Administracja example.com</p>
</blockquote>
<p>Sądzę iż, natłok e-maili zdemotywował pracownika obsługującego BOK. No cóż, być może następnym razem ktoś napisze do mnie „proszę Pana“…</p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/135/gdy-e-maili-jest-za-duzo/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Witaj, świecie!</title>
		<link>http://srodek.info/blog/1/witaj-swiecie</link>
		<comments>http://srodek.info/blog/1/witaj-swiecie#comments</comments>
		<pubDate>Sat, 19 Sep 2009 07:40:48 +0000</pubDate>
		<dc:creator>Michał Środek</dc:creator>
				<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://srodek.info/?p=1</guid>
		<description><![CDATA[To już drugi raz, gdy reaktywuję mój blog. Ostatnia zmiana charakteru artykułów(przejście z artykułów technicznych na notki osobiste) nie przyjęła się. Blog stracił czytelników. Teraz planuję to zmienić. Więcej uwagi poświęcę nowoczesnym technologiom takim jak CSS3, zastosowania Canvas oraz grafik SVG, standardom W3C. Poświęcę również kilka artykułów dla JQuery oraz ogólnie JavaScriptu. Oczywiście wspomnę od [...]]]></description>
			<content:encoded><![CDATA[<p>To już drugi raz, gdy reaktywuję mój blog. Ostatnia zmiana charakteru artykułów(przejście z artykułów technicznych na notki osobiste) nie przyjęła się. Blog stracił czytelników. Teraz planuję to zmienić. Więcej uwagi poświęcę nowoczesnym technologiom takim jak CSS3, zastosowania Canvas oraz grafik SVG, standardom W3C. Poświęcę również kilka artykułów dla JQuery oraz ogólnie JavaScriptu. Oczywiście wspomnę od czasu do czasu o moich projektach, zaprezentuję również gotowe rozwiązania z ich użyciem. W ciagu kilku dni umieszczę paczkę z najnowszą wersją mojego frameworka. W wolnym czasie stworzę do niego, nową dokumentację, która będzie dostępna bezpośrednio na tej stronie. Podobnie postąpię z innymi projektami. Pytanie jednak do was:  które z nich są najciekawsze i zasługują na większą uwagę?</p>
<p>Jak zapewne już zauwazyłeś nowa wersja blogu jest oparta o system WordPress. Nie wiem czy to dobry wybór — wydajność pozostawia wiele do życzenia(dla porównania, mój sklep internetowy generuje się 20x szybciej, a również zawiera widżety, skórki itp.). Czyżby wordpress nie posiadał cache’u? Powoli pewne elementy będę zamieniał na własne.</p>
<p>I na koniec trochę historii:</p>
<p>Blog uruchomiłem po raz pierwszy 5 października 2006 roku. Napisałem łącznie około 30–35 artykułów. Nie jest to zadawalający wynik — muszę to zmienić. Powinienem przerzucić artykuły ze starej wersji blogu jednak postanowiłem, że rozpocznę z czystym kontem.  Życzcie mi szczęścia <img src='http://srodek.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Stara wersja będzie dalej aktywna przez pewien okres czasu pod adresem <a title="Stara wersja mojego blogu" href="http://michal.mohebo.pl">http://michal.mohebo.pl</a></p>
]]></content:encoded>
			<wfw:commentRss>http://srodek.info/blog/1/witaj-swiecie/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

