Игра «Жизнь» на Arduino


Обычно, начиная изучать новый язык программирования – я пробовал написать математическую игру Конвея «Жизнь».

Игра «Жизнь» (англ. Conway’s Game of Life) — клеточный автомат(cellular automaton), придуманный английским математиком Джоном Конвеем (англ.) в 1970 году.

И хотя для ардуино – это не так актуально – программирование ведь идёт на С++.
Но, всё же, это новая платформа и нужно реализовать эту замечательную игру и для неё 🙂

За основу я взял свой старый исходник на С++ и просто модифицировал его для Arduino 🙂

В скетче реализован случайный засев игрового поля.
Загрузка из массива данных не захотела работать (возможно не хватает памяти 🙁 ) и я его закомментировал.
Замыкания границ не происходит.

Код скетча получился таким:

//////////////////////////////////////////////////////////////////////
//
//
// Arduino LIFE GAME
//
//
//
//   noonv                                                 RoboCraft.ru
//////////////////////////////////////////////////////////////////////
// d - will die in next step
// a - will born in next step

// size of life-massive
int L_SIZE = 15;
int L_SIZEY = 25;

// variables
char l_mas[15+2][25+2]; // life-massive//char l_mas[L_SIZE+2][L_SIZEY+2]; // life-massive
int l_i,l_j; // counter's
int l_age=0; // age of population
int l_coef=0; // coefficient for check cell

void setup()
{
  Serial.begin(9600);
  randomSeed(analogRead(0));
  random_mas();
  //load_mas(); // not working :(
}

void loop()
{
	// print Hello :)
	Serial.print("Life  ");

        //	
	// set border
        //
	for(l_i=0;l_i5)
      {
        l_mas[l_i][l_j]='*';
        //Serial.print(l_mas[l_i][l_j]);
      }
      else
      {
        l_mas[l_i][l_j]='0';
      }
    }
    //Serial.println("");
  }
}

Загружаем в МК и смотрим, что нам выдаёт монитор COM-порта 🙂

Живём 🙂

Разумеется код можно (и нужно) оптимизировать – например, не тратить на клетку целый байт, а использовать один бит 😉

В дальнейшем – можно попробовать подключить к ардуине светодиодную матрицу и выводить информацию туда 😉

Ссылки
http://ru.wikipedia.org/wiki/Игра_жизнь

По теме
Одноклеточные самособирающиеся роботы
Светодиодная матрица для ардуино


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение