Редактирование: CelAut v2
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | [[ | + | [[ТМ|Кафедра ТМ]] > [[Программирование]] > [[Программирование и моделирование в Интернет|Интернет]] > [[JavaScript-программирование|JavaScript]] > [[JavaScript - Клеточный автомат|Клеточный автомат]] > '''CelAut v2''' <HR> |
+ | |||
+ | <addscript src=CelAut_v2_release/> | ||
+ | <htmlet nocache="yes">CelAut_v2_TM</htmlet> | ||
− | |||
Скачать программу: [[Медиа:CelAut_v2_release.zip|CelAut_v2_release.zip]] | Скачать программу: [[Медиа:CelAut_v2_release.zip|CelAut_v2_release.zip]] | ||
− | + | Текст программы на языке JavaScript (разработчик [[Цветков Денис]]): <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default"> | |
− | |||
Файл '''"CelAut_v2_release.js"''' | Файл '''"CelAut_v2_release.js"''' | ||
− | < | + | <source lang="javascript" first-line="1"> |
− | function | + | function MainMech(canvas) { |
// Предварительные установки | // Предварительные установки | ||
Строка 17: | Строка 18: | ||
// *** Задание вычислительных параметров *** | // *** Задание вычислительных параметров *** | ||
− | + | const fps = 5; // frames per second - число кадров в секунду | |
// Выполнение программы | // Выполнение программы | ||
− | + | const w = canvas.width; // ширина окна | |
− | + | const h = canvas.height; // высота окна | |
− | + | const n = 50; // количество клеток по горизонтали (желательно, делитель ширины окна) | |
− | + | const m = 50; // количество клеток по горизонтали (желательно, делитель высоты окна) | |
− | + | const cellW = w/n; // ширина клетки | |
− | + | const cellH = h/m; // высота клетки | |
var pause = true; | var pause = true; | ||
Строка 32: | Строка 33: | ||
// "Жизнь" Конвея: [B = 000100000, L = 001100000] | // "Жизнь" Конвея: [B = 000100000, L = 001100000] | ||
− | + | const B = "000100000"; // геном рождения | |
− | + | const L = "001100000"; // геном выживания | |
// Работа с мышью | // Работа с мышью | ||
Строка 58: | Строка 59: | ||
mouseY = e.clientY - rect.top; | mouseY = e.clientY - rect.top; | ||
} | } | ||
+ | |||
// Работа с массивом | // Работа с массивом | ||
Строка 84: | Строка 86: | ||
} | } | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// Управление работой автомата | // Управление работой автомата | ||
Строка 100: | Строка 94: | ||
} | } | ||
− | + | MainMech.prototype.changePauseState = function() { // кнопка паузы | |
if (!pause) stopSystem(); | if (!pause) stopSystem(); | ||
else startSystem() | else startSystem() | ||
}; | }; | ||
− | + | MainMech.prototype.nextStep = function(){ // кнопка "Следующий шаг" | |
stopSystem(); | stopSystem(); | ||
step(); | step(); | ||
Строка 113: | Строка 107: | ||
pause = false; | pause = false; | ||
intervalID = setInterval(step, 1000/fps); | intervalID = setInterval(step, 1000/fps); | ||
− | document.getElementById('pause').value = " | + | document.getElementById('pause').value = "Stop"; |
} | } | ||
Строка 119: | Строка 113: | ||
pause = true; | pause = true; | ||
clearInterval(intervalID); | clearInterval(intervalID); | ||
− | document.getElementById('pause').value = " | + | document.getElementById('pause').value = "Start"; |
} | } | ||
Строка 178: | Строка 172: | ||
} | } | ||
− | </ | + | </source> |
Файл '''"CelAut_v2_release.html"''' | Файл '''"CelAut_v2_release.html"''' | ||
− | < | + | <source lang="html" first-line="1"> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
Строка 188: | Строка 182: | ||
</head> | </head> | ||
<body> | <body> | ||
− | <canvas id=" | + | <canvas id="canvasMech" width="600" height="600" style="border:1px solid #000000;"></canvas><br> |
− | <input id="pause" type="button" name="" style="width: | + | <input id="pause" type="button" name="" style="width: 60px" onclick="app.changePauseState();return false;" value="Stop"/> |
− | + | <input id="next" type="button" name="" onclick="app.nextStep();return false;" value="Next step"/> | |
− | <input type="button" name="" onclick="app. | + | <script type="text/javascript">var app = new MainMech(document.getElementById('canvasMech'));</script> |
− | <script type="text/javascript">var app = new | ||
</body> | </body> | ||
</html> | </html> | ||
− | </ | + | </source> |
− | </ | + | </toggledisplay> |
− | |||
− | |||
− | |||
− |