<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FRocket</id>
	<title>Arduino:Примеры/Rocket - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FRocket"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;action=history"/>
	<updated>2026-04-29T08:58:13Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=8495984&amp;oldid=prev</id>
		<title>EducationBot в 08:36, 8 июля 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=8495984&amp;oldid=prev"/>
		<updated>2023-07-08T08:36:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:36, 8 июля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l419&quot;&gt;Строка 419:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 419:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Портал/Arduino}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=7735755&amp;oldid=prev</id>
		<title>EducationBot в 08:33, 20 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=7735755&amp;oldid=prev"/>
		<updated>2023-05-20T08:33:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:33, 20 мая 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Строка 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Код==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Код==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; enclose=&quot;div&lt;/del&gt;&quot;&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Ракета&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  * Ракета&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=20857&amp;oldid=prev</id>
		<title>Myagkij: Замена текста — «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&gt;» на «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot; enclose=&quot;div&quot;&gt;»</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/Rocket&amp;diff=20857&amp;oldid=prev"/>
		<updated>2016-12-13T17:44:03Z</updated>

		<summary type="html">&lt;p&gt;Замена текста — «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;» на «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Arduino панель перехода}}&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
=Игра «Ракета» &amp;lt;ref&amp;gt;[https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/glcd-arduino/glcd-v3-20111205.zip glcd-v3-20111205.zip]&amp;lt;/ref&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Этот пример показывает при помощи '''Arduino''' и [[Arduino:Библиотеки/GLCD|библиотеки GLCD]] воспроизвести на '''GLCD'''-панели игру в стиле аркадной игры '''«Asteroids»'''.&lt;br /&gt;
&lt;br /&gt;
==Код==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt; &lt;br /&gt;
/*&lt;br /&gt;
 * Ракета&lt;br /&gt;
 *&lt;br /&gt;
 * Примитивная игра в духе «Asteroids» от biegematchbox&lt;br /&gt;
 * http://www.beigematchbox.co.uk/site/BeigeMatchbox.co.uk/Electronics/Electronics.html&lt;br /&gt;
 *&lt;br /&gt;
 * Чтобы управлять позицией ракеты, подключаем регулируемый резистор &lt;br /&gt;
 * к входному аналоговому контакту (potPin)&lt;br /&gt;
 * Чтобы был звук, к контакту speakerPin можно подключить пьезодинамик &lt;br /&gt;
 * (или обычный динамик, но понадобится добавочный резистор) &lt;br /&gt;
 *&lt;br /&gt;
 * Дискуссия на форуме Arduino: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265067548&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;glcd.h&amp;gt;&lt;br /&gt;
#include &amp;quot;fonts/SystemFont5x7.h&amp;quot;   // шрифт&lt;br /&gt;
#include &amp;quot;bitmaps.h&amp;quot;               // картинки&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
****************************************************&lt;br /&gt;
* Секция, в которой настраиваются нужные контакты. *&lt;br /&gt;
* Чтобы активировать нужную функцию,               *&lt;br /&gt;
* уберите слеши у соответствующей строчки          * &lt;br /&gt;
****************************************************&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//#define potPin        5   // входной аналоговый контакт, к которому подключается регулируемый резистор&lt;br /&gt;
//#define speakerPin    2   // цифровой контакт (опциональный), к которому можно подключить пьезодинамик или обычный динамик (для звука)&lt;br /&gt;
//#define brightnessPin 3   // выходной контакт (тоже опциональный) для управления фоновой подсветкой&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Проверяем, не маленький ли дисплей, т.к. этот код требует&lt;br /&gt;
 * большого дисплея.&lt;br /&gt;
 */&lt;br /&gt;
#if DISPLAY_HEIGHT &amp;lt; 64&lt;br /&gt;
#error Игра «Ракета» требует дисплея высотой как минимум 64 пикселя&lt;br /&gt;
#endif&lt;br /&gt;
#if DISPLAY_WIDTH &amp;lt; 128&lt;br /&gt;
#error Игра «Ракета» требует дисплея шириной как минимум 128 пикселей&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
byte brightness = 64;&lt;br /&gt;
&lt;br /&gt;
#define PLAYER 0&lt;br /&gt;
#define ROCK1 1&lt;br /&gt;
#define ROCK2 2&lt;br /&gt;
#define ROCK3 3&lt;br /&gt;
#define ROCK4 4&lt;br /&gt;
#define ROCK5 5&lt;br /&gt;
#define ROCK6 6&lt;br /&gt;
#define ROCK7 7&lt;br /&gt;
#define ROCK8 8&lt;br /&gt;
#define BONUS 9&lt;br /&gt;
&lt;br /&gt;
#define EX1 0&lt;br /&gt;
#define EX2 1&lt;br /&gt;
#define EX3 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define playerX tracker[0][1]&lt;br /&gt;
#define playerY tracker[0][2]&lt;br /&gt;
&lt;br /&gt;
#define enemy1type tracker[1][0]&lt;br /&gt;
#define enemy1X tracker[3][1]&lt;br /&gt;
#define enemy1Y tracker[4][2]&lt;br /&gt;
&lt;br /&gt;
#define playerXOld trackerOld[0][1]&lt;br /&gt;
#define playerYOld trackerOld[0][2]&lt;br /&gt;
#define enemy1XOld trackerOld[3][1]&lt;br /&gt;
#define enemy1YOld trackerOld[4][2]&lt;br /&gt;
&lt;br /&gt;
char lives = 3;&lt;br /&gt;
char score = 0;&lt;br /&gt;
char level = 0;&lt;br /&gt;
char fastSpeed = 25;&lt;br /&gt;
char rockAmount = 6;&lt;br /&gt;
&lt;br /&gt;
long speedMillis[] = {0, 0, 0, 0, 0, 0};&lt;br /&gt;
&lt;br /&gt;
char tracker[8][5] = {&lt;br /&gt;
//Картинка, X,      Y,             скорость:&lt;br /&gt;
  {PLAYER,  15,     32,            0}  ,&lt;br /&gt;
  {ROCK2,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK5,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK8,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK1,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK3,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {BONUS,   119,    random(0, 56), random(25, 75)}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
char trackerOld[8][5] = {&lt;br /&gt;
// Картинка, X,      Y,             скорость:&lt;br /&gt;
  {PLAYER,  15,     32,            0}  ,&lt;br /&gt;
  {ROCK2,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK5,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK8,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK1,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK3,   119,    random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {BONUS,   119,    random(0, 56), random(25, 75)}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
  GLCD.Init();&lt;br /&gt;
#ifdef brightnessPin&lt;br /&gt;
  analogWrite(brightnessPin, brightness);&lt;br /&gt;
#endif&lt;br /&gt;
#ifdef speakerPin&lt;br /&gt;
  pinMode(speakerPin, OUTPUT);&lt;br /&gt;
#endif&lt;br /&gt;
    &lt;br /&gt;
  GLCD.SelectFont(System5x7);&lt;br /&gt;
#ifdef potPin&lt;br /&gt;
  randomSeed(analogRead(potPin));&lt;br /&gt;
#endif&lt;br /&gt;
  GLCD.DrawBitmap(startup, 0, 0, BLACK);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  GLCD.ClearScreen();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Главный цикл              *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void  loop(){&lt;br /&gt;
  getControls();&lt;br /&gt;
  drawFrame();&lt;br /&gt;
  drawLives();&lt;br /&gt;
  drawScore(); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Рисуем оставшиеся жизни   *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void drawLives(){&lt;br /&gt;
  GLCD.DrawBitmap(heart, 0, 0, BLACK);&lt;br /&gt;
  GLCD.CursorTo(1,0);&lt;br /&gt;
  GLCD.print((int)lives);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Рисуем текущий счет       *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void drawScore(){&lt;br /&gt;
  GLCD.CursorTo(0,7);&lt;br /&gt;
  GLCD.print('S');&lt;br /&gt;
  GLCD.print((int)score);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Задаем позицию ракеты     *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void getControls(){&lt;br /&gt;
#ifdef potPin&lt;br /&gt;
  playerY = map(analogRead(potPin), 0, 1023, 0, 56);&lt;br /&gt;
#else&lt;br /&gt;
/*&lt;br /&gt;
 * От потенциометра нет данных, поэтому начинаем двигать ракету вниз и вверх&lt;br /&gt;
 */&lt;br /&gt;
static uint8_t yval;&lt;br /&gt;
static uint8_t iter = 0;&lt;br /&gt;
static int8_t dir = 1;&lt;br /&gt;
  if(++iter == 0)&lt;br /&gt;
    yval += dir;&lt;br /&gt;
&lt;br /&gt;
  if(yval == 0)&lt;br /&gt;
    dir = 1;&lt;br /&gt;
&lt;br /&gt;
  if(yval == 56)&lt;br /&gt;
    dir = -1;&lt;br /&gt;
  playerY = yval;&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Обновляем позицию         *&lt;br /&gt;
*  астероидов                *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void updatePos(int entity){&lt;br /&gt;
    if (millis() - speedMillis[entity-1] &amp;gt; tracker[entity][3]) {&lt;br /&gt;
      speedMillis[entity-1] = millis();&lt;br /&gt;
      tracker[entity][1] --;&lt;br /&gt;
      &lt;br /&gt;
        if(collision(entity) == true){&lt;br /&gt;
          BLOWUP();&lt;br /&gt;
        }&lt;br /&gt;
      &lt;br /&gt;
      if(tracker[entity][1] &amp;lt; 1){&lt;br /&gt;
        score++;&lt;br /&gt;
        level++;&lt;br /&gt;
        constrain(level, 0, 75);&lt;br /&gt;
        if(level &amp;gt; 75){&lt;br /&gt;
          fastSpeed --;&lt;br /&gt;
          constrain(fastSpeed, 10, 25);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        tracker[entity][0] = random(1, 8);   // картинка&lt;br /&gt;
        tracker[entity][1] = 119;            // стартовая точка&lt;br /&gt;
        tracker[entity][2] = random(8, 56);  // высота&lt;br /&gt;
        tracker[entity][3] = random(fastSpeed, 100-level); // скорость&lt;br /&gt;
      }  &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Определяем столкновения   *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
boolean collision(char entity){&lt;br /&gt;
  for(char playerScanCOL = 0; playerScanCOL&amp;lt;=9; playerScanCOL++){&lt;br /&gt;
    if(tracker[0][1]+playerScanCOL == tracker[entity][1]+1){&lt;br /&gt;
      for(char playerScanROW = -1; playerScanROW &amp;lt; 6; playerScanROW  ++){&lt;br /&gt;
      for(char entityScanROW = -1; entityScanROW &amp;lt; 6; entityScanROW  ++){&lt;br /&gt;
        if(tracker[0][2]+playerScanROW == tracker[entity][2]+entityScanROW){&lt;br /&gt;
          return true;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Взрываем корабль          *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void BLOWUP(){&lt;br /&gt;
  lives--;&lt;br /&gt;
  digitalWrite(13, HIGH);&lt;br /&gt;
  explosionAnim(tracker[0][1]-2, tracker[0][2]-4);&lt;br /&gt;
  digitalWrite(13, LOW);&lt;br /&gt;
  GLCD.ClearScreen();&lt;br /&gt;
  if(lives &amp;lt; 0){&lt;br /&gt;
    gameOver();&lt;br /&gt;
    lives = 3;&lt;br /&gt;
    level = 0;&lt;br /&gt;
  }&lt;br /&gt;
  resetTracker();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Сбрасываем трекер, задаем *&lt;br /&gt;
*  ему новое состояние       *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void resetTracker(){&lt;br /&gt;
  char trackerReset[8][5] = {&lt;br /&gt;
  {PLAYER, 15, 32, 0}  ,&lt;br /&gt;
  {ROCK2,   119, random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK5,   119, random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK8,   119, random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK1,   119, random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {ROCK3,   119, random(0, 56), random(25, 75)}  ,&lt;br /&gt;
  {BONUS,   119, random(0, 56), random(25, 75)}&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  for(byte entity = 0; entity &amp;lt;= 6; entity++){&lt;br /&gt;
    for(byte data = 0; data &amp;lt;= 3; data++){&lt;br /&gt;
      tracker[entity][data] = trackerReset[entity][data];&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Рисуем GAME OVER          *&lt;br /&gt;
*  и сбрасываем очки         *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void gameOver(){&lt;br /&gt;
  GLCD.DrawBitmap(gameover, 37, 0, BLACK);&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  score = 0;&lt;br /&gt;
  GLCD.ClearScreen();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
***********************************&lt;br /&gt;
* Анимированный 3-кадровый взрыв. *&lt;br /&gt;
* Кадрам нужен один массив.       *&lt;br /&gt;
***********************************&lt;br /&gt;
*/&lt;br /&gt;
void explosionAnim(char xPos, char yPos){&lt;br /&gt;
  GLCD.DrawBitmap(ex1, xPos, yPos, BLACK);&lt;br /&gt;
#ifdef speakerPin&lt;br /&gt;
  noise(175);&lt;br /&gt;
#else&lt;br /&gt;
  delay(175);&lt;br /&gt;
#endif&lt;br /&gt;
  GLCD.DrawBitmap(ex2, xPos, yPos, BLACK);&lt;br /&gt;
#ifdef speakerPin&lt;br /&gt;
  noise(175);&lt;br /&gt;
#else&lt;br /&gt;
  delay(175);&lt;br /&gt;
#endif&lt;br /&gt;
  GLCD.DrawBitmap(ex3, xPos, yPos, BLACK);&lt;br /&gt;
#ifdef speakerPin&lt;br /&gt;
  noise(175);&lt;br /&gt;
#else&lt;br /&gt;
  delay(175);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
*************************************&lt;br /&gt;
*  Рисуем рамку, игрока и астероиды *&lt;br /&gt;
*                                   *&lt;br /&gt;
*************************************&lt;br /&gt;
*/&lt;br /&gt;
void drawFrame(){&lt;br /&gt;
  for(int i=1; i&amp;lt;=rockAmount; i++){&lt;br /&gt;
    updatePos(i);&lt;br /&gt;
    drawRock(i);&lt;br /&gt;
  }&lt;br /&gt;
  if(playerY != playerYOld){&lt;br /&gt;
    GLCD.FillRect(playerXOld, playerYOld, 10, 8, WHITE);&lt;br /&gt;
    GLCD.DrawBitmap(player, playerX, playerY, BLACK);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for(byte entity = 0; entity &amp;lt;= 6; entity++){&lt;br /&gt;
    for(byte data = 0; data &amp;lt;= 3; data++){&lt;br /&gt;
      trackerOld[entity][data] = tracker[entity][data];&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
******************************&lt;br /&gt;
*  Рисуем астероиды          *&lt;br /&gt;
*                            *&lt;br /&gt;
******************************&lt;br /&gt;
*/&lt;br /&gt;
void drawRock(char entity){&lt;br /&gt;
// Картинки астероидов должны быть в 2D-массиве; они будут уменьшены ниже&lt;br /&gt;
  &lt;br /&gt;
  if(tracker[entity][1] != trackerOld[entity][1]){&lt;br /&gt;
&lt;br /&gt;
    GLCD.FillRect(trackerOld[entity][1], trackerOld[entity][2], 12, 8, WHITE);&lt;br /&gt;
    GLCD.DrawBitmap(rocks[tracker[entity][0]], tracker[entity][1], tracker[entity][2], BLACK);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ifdef speakerPin&lt;br /&gt;
/*&lt;br /&gt;
********************************************      &lt;br /&gt;
*  Делаем шум, который будет продолжаться  *&lt;br /&gt;
*  заданное количество секунд.             *&lt;br /&gt;
********************************************&lt;br /&gt;
*/&lt;br /&gt;
void noise(int duration)&lt;br /&gt;
{&lt;br /&gt;
  unsigned long start = millis();&lt;br /&gt;
  &lt;br /&gt;
  while( millis() - start &amp;lt; duration)&lt;br /&gt;
  {&lt;br /&gt;
    int period = random(8,25); &lt;br /&gt;
    digitalWrite(speakerPin, HIGH);&lt;br /&gt;
    delay(period);&lt;br /&gt;
    digitalWrite(speakerPin, LOW);      &lt;br /&gt;
    delay(period);&lt;br /&gt;
  }&lt;br /&gt;
}  &lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=См.также=&lt;br /&gt;
&lt;br /&gt;
=Внешние ссылки=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Категория:Пример]]&lt;br /&gt;
[[Категория:Примеры]]&lt;br /&gt;
[[Категория:Пример программирования Arduino]]&lt;br /&gt;
[[Категория:Примеры программирования Arduino]]&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>