LINUX.ORG.RU

Xtetris: немного археологии.

 ,


0

3

По мотивам [1996,necrophilia] как всё было, мой первый линукс

Разбирал свои архивы, вспомнил, что у меня есть старый имидж. Запустил, потыкал. А там пару прикольных и забытых программ оказалось.

Стал искать сырцы. Кое-как с трудом нашёл через web archive.

На удивление, но код 30-и летней давности компилируется и запускается без проблем.

Решил вот сохранить для потомков: https://github.com/dim13/xtetris

Единственное, что поправил: старый стиль оформления функций и один мало-значительный copy-beyond-boundary.

PS: easter egg: по достижении определённого скора оно из тетриса превращается в пентрис.

★★★★★

Проверено: dataman ()
Последнее исправление: beastie (всего исправлений: 3)
Ответ на: комментарий от Pinux001

Что за школьный «юмор»?

Тетрис – это от слова тетра: все фигуры состоят из пермутаций четырёх элементарных блоков.

В пентрисе (от пента – пермутации из пяти блоков) фигур больше и они сложнее.

beastie ★★★★★
() автор топика
Ответ на: комментарий от beastie

Тогда пентис, а не пентрис. В слове «пента» ведь нет буквы «Р» (а в «тетра» - есть).

Во времена ДОС, кстати, была такая игрушка - pentix (заметь - не pentrix).

bigbit ★★★★★
()
Ответ на: комментарий от beastie

Что за школьный «юмор»?

У меня LLM на 12b такие ассоциации выдает. (Без шуток, я ОП использовал как образец, чтобы посмотреть, как разные LLM смогут его проанализировать.)

А тут настоящий живой человек. А некоторые не верят, что будущее наступило.

Зачем нужны пользователи, которые не умнее простого очень длинного вектора чисел?

wandrien ★★★
()
Ответ на: комментарий от beastie

Что за школьный «юмор»?

Я играл в пентрис (пентис?) на той самой консоли, которая Brick Game, но все называли ее «Тетрис». Человек таки прав:

□□□□□
□□■□□
□□■□□
□■■■□
□□□□□
Vidrele ★★★★★
()
Последнее исправление: Vidrele (всего исправлений: 1)
Ответ на: комментарий от foxy_ant

Шутки шутками, но хочу глянуть на wayland код через 30 лет (если он к тому моменту ещё будет). Нихрена ведь работать не будет.

А тут, поправил архаичный

-void
-main(argc, argv)
-    int             argc;
-    char           *argv[];
+int
+main(int argc, char *argv[])

и всё. Да и то не особо нужно было, если бы современные clang/gcc не педантировали.

В Xlib части ноль изменений. Код 1992-го года. И кстати очень приятный.

beastie ★★★★★
() автор топика
Последнее исправление: beastie (всего исправлений: 4)
Ответ на: комментарий от wandrien

Зачем нужны пользователи, которые не умнее простого очень длинного вектора чисел?

Так можно чувствовать себя очень умным и авторитетным.

her_s_gory ★★
()

Так а где «превращение» на скриншотах?

vsnb
()

Самый прикол что оно в 2025м в плане дизайна выглядит топово. Да думаю Appimage было круто сделать с него

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 2)

На удивление, но код 30-и летней давности компилируется и запускается без проблем.

То ли дело раст, там такой фигни нет!

mittorn ★★★★★
()

Ну как сказать собирается без проблем, у меня опция компилятора не поддерживается и хидеры glibc развалились...

mittorn ★★★★★
()
Ответ на: комментарий от beastie

Да и то не особо нужно было, если бы современные clang/gcc не педантировали.

Так можно указать -std=c89
Однако, данному коду это не помогает т.к посыпался glibc.
В мейкфайле в репе есть дефайны aarch64 и darwin. Это точно под линуксом собирается, а не под сертифицированным(тм) юниксом?

mittorn ★★★★★
()
Ответ на: комментарий от GPFault

Added HP Freeware v4.0

Вероятно, под какой-то HP
https://raw.githubusercontent.com/windowsdevops/Microsoft-Windows-NT-Reposito...

OpenVMS Freeware for VAX and Alpha Systems

              The OpenVMS Freeware CD-ROM set contains free software 
              tools and utilities to aid software developers in creating
              applications and managing and using OpenVMS systems.

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 2)
Ответ на: комментарий от beastie

Беда-печал: по ходу в убунту уже успели сломать libx11 :(

/usr/include/X11/Xlib.h:1686:14: error: expected ‘;’ before ‘extern’
 1686 | _X_DEPRECATED
      |              ^
      |              ;
 1687 | extern KeySym XKeycodeToKeysym(
      | ~~~~~~
/usr/include/X11/Xlib.h: In function ‘XSetOMValues’:
/usr/include/X11/Xlib.h:3585:3: error: expected declaration specifiers before ‘_X_SENTINEL’
 3585 | ) _X_SENTINEL(0);
      |   ^~~~~~~~~~~

и ещё 700 таких же ошибок.

Под darwin (XQuartz) компилируется без проблем.

PS: это после apt-get install libx11-dev build-essential

beastie ★★★★★
() автор топика
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

А говорят, иксы не разрабатывают. К слову, libX11 - единственный пакет, который у меня ломался от -O3, до этих самых ломающих изменений конечно же

mittorn ★★★★★
()
Ответ на: комментарий от beastie

У меня после такого патча всё собралось и заработало на Fedora 42:

diff --git a/Makefile.std b/Makefile.std
index b9ede1f..9c16b02 100644
--- a/Makefile.std
+++ b/Makefile.std
@@ -46,7 +46,7 @@ SRCS          = tetris.c playing.c utils.c
 OBJS           = tetris.o playing.o utils.o
 MYPROGRAM      = tetris
 
-CFLAGS         = -O ${DEFINES}
+CFLAGS         = -fcommon -O ${DEFINES}
 
 ${MYPROGRAM}:  ${OBJS}
        ${CC} ${CFLAGS} -o ${MYPROGRAM} ${OBJS} -L${XLIBPATH} ${SYS_LIBRARIES}
diff --git a/tetris.h b/tetris.h
index a538e12..8ad15bb 100644
--- a/tetris.h
+++ b/tetris.h
@@ -29,6 +29,20 @@
 #include       <math.h>
 #include       <pwd.h>
 #include       <errno.h>
+#include       <time.h>
+
+#if __has_attribute(__sentinel__) || (defined(__GNUC__) && (__GNUC__ >= 4))
+# define _X_SENTINEL(x) __attribute__ ((__sentinel__(x)))
+#else
+# define _X_SENTINEL(x)
+#endif
+#if __has_attribute(deprecated) \
+    || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
+    || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
+# define _X_DEPRECATED  __attribute__((deprecated))
+#else /* not gcc >= 3.1 */
+# define _X_DEPRECATED
+#endif
 
 #include       <X11/Xlib.h>
 #include       <X11/Xutil.h>

Не понятно что не так с макросами _X_SENTINEL и _X_DEPRECATED. Я их объявление просто скопировал из /usr/include/X11/Xfuncproto.h.

Ja-Ja-Hey-Ho ★★★★★
()
14 сентября 2025 г.

я начал с первого предложения читать… и уже насторожился, что это опять тот дед, устраивающий срачи, когда забывает выпить таблетки… тетрис без калинки-малинки на фоне храма василия блаженного - не тетрис

rtxtxtrx ★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.