Всем привет.
Возникла одна идея для реализации которой нужно добавить немного 2D-графики. Графика нужна простейшая - пиксели, линии, графики. Нужно уметь реагировать на нажатия клавиш, минимальная поддержка каких-нибудь простых шрифтов.
Лет двадцать назад, будучи школьником, я что-то такое делал на Pascal, стандартного модуля Graph хватало с головой. А что есть из такого простого сейчас?
Лучше всего я знаю Perl, но тут с этим всё не просто. Можно рисовать отличные графики, генерировать или обрабатывать картинки, но вот для рисования «в реалтайме» и создания движущихся картинок сходу я ничего не нашёл. Есть Tk, в котором можно что-то похожее делать в окне, да и всё вроде бы. Как запасной вариант оставлю, но хотелось бы что-нибудь по новее.
Бегло посмотрел на python, из того, то заинтересовало - его биндинги к QT, но я пока не понял, можно ли там произвольную графику рисовать или же только шлёпать формочки из готовых компонентов.
На golang в принципе сходу не понял, есть ли что-нибудь подобное. Возможно плохо искал - я тут в модулях не очень хорошо ориентируюсь.
На Си или плюсах не искал, так как наверняка там всё это есть, но мне понадобится относительно много времени, чтобы найти и вникнуть.
Собственно, видимо, гуглить я разучился. Подскажите, что сейчас есть для максимально простой графики? Игровые движки я не рассматриваю - это уже как мне кажется сильный overhead. Мне нужно по сути нарисовать оси координат, разместить и двигать там простейшие фигурки. Суть в расчётах, а не в красивой графике. Реализация какой бы то ни было физики не нужна. Т.е. нужна минимальная визуализация. В целом, думаю, ЯП не важен, но желательно что-нибудь живое и не особо низкоуровневое. В идеале, чтобы не было слишком жирным. Платформа - только GNU/Linux. Можно в консоли(framebuffer?), можно с использованием каких-либо тулкитов. Как мне это видится было бы круто что-то типа подобного псевдокода:
my $pixel1 = {
x = 10;
y = 20;
color = green;
}
put_pixel($pixel1);
if ($keycode = 'Up') {
my $x = $x + 1;
$pixel1->{x = $x};
clrscr();
put_pixel($pixel1);
}
if ($keycode = 'Left') {
my $y = $y - 1;
$pixel1->{y = $y};
$pixel1->{color = 'red'};
clrscr();
put_pixel($pixel1);
}