Asciimatics عبارة عن حزمة لمساعدة الأشخاص على إنشاء واجهات مستخدم نصية بملء الشاشة (من النماذج التفاعلية إلى الرسوم المتحركة ASCII) على أي نظام أساسي. وهو مرخص بموجب ترخيص Apache Software Foundation License 2.0.
ولم لا؟ إنه يجلب القليل من البهجة لأي شخص كان يبرمج في الثمانينيات... ويوفر فئة Python واحدة عبر الأنظمة الأساسية للقيام بجميع وظائف وحدة التحكم ذات المستوى المنخفض التي يمكن أن تطلبها، بما في ذلك:
بالإضافة إلى ذلك، فهو يوفر بعض واجهات برمجة التطبيقات البسيطة وعالية المستوى لتوفير ميزات أكثر تعقيدًا بما في ذلك:
حاليًا، أثبتت هذه الحزمة أنها تعمل على CentOS 6 و7، وRaspbian (أي Debian wheezy)، وUbuntu 14.04، وWindows 7، و8، و10، وOSX 10.11، وAndroid Marshmallow (بإذن من https://termux.com)، على الرغم من أنها يجب أن تعمل أيضًا مع أي نظام أساسي آخر يوفر تنفيذًا فعالاً لللعنات.
يجب أن يكون تطبيقًا حياديًا وقد تم اختباره بنجاح على CPython وPyPy2.
(يُرجى إخباري إذا قمت بالتحقق من ذلك بنجاح على منصات أخرى حتى أتمكن من تحديث هذه القائمة).
يدعم Asciimatics إصدار Python 3. للحصول على القائمة الدقيقة للإصدارات التي تم اختبارها، راجع pypi. الإصدار الأخير من asciimatics لدعم Python 2 هو v1.14.
لتثبيت asciimatics، ما عليك سوى التثبيت باستخدام النقطة كما يلي:
$ pip install asciimatics
يجب أن يؤدي هذا إلى تثبيت جميع التبعيات الخاصة بك نيابةً عنك. إذا كنت لا تستخدم النقطة أو فشلت في تثبيتها، فيمكنك تثبيت التبعيات مباشرةً باستخدام الحزم المدرجة في ملف require.txt. بالإضافة إلى ذلك، سيحتاج مستخدمو Windows (الذين لا يستخدمون النقطة) إلى تثبيت pywin32.
لاستخدام واجهة برمجة التطبيقات ذات المستوى المنخفض، ما عليك سوى إنشاء شاشة واستخدامها لطباعة نص ملون في أي مكان، أو الحصول على إدخال الماوس/لوحة المفاتيح. على سبيل المثال، إليك نسخة مختلفة من "hello World" الكلاسيكية:
from random import randint
from asciimatics . screen import Screen
def demo ( screen ):
while True :
screen . print_at ( 'Hello world!' ,
randint ( 0 , screen . width ), randint ( 0 , screen . height ),
colour = randint ( 0 , screen . colours - 1 ),
bg = randint ( 0 , screen . colours - 1 ))
ev = screen . get_key ()
if ev in ( ord ( 'Q' ), ord ( 'q' )):
return
screen . refresh ()
Screen . wrapper ( demo )
يعمل هذا الرمز نفسه على أنظمة التشغيل Windows وOSX وLinux ويمهد الطريق لجميع الميزات ذات المستوى الأعلى. لا تزال هذه العناصر بحاجة إلى الشاشة، ولكن يمكنك الآن أيضًا إنشاء مشهد باستخدام بعض التأثيرات ثم الحصول على الشاشة لتشغيله. على سبيل المثال هذا الكود:
from asciimatics . effects import Cycle , Stars
from asciimatics . renderers import FigletText
from asciimatics . scene import Scene
from asciimatics . screen import Screen
def demo ( screen ):
effects = [
Cycle (
screen ,
FigletText ( "ASCIIMATICS" , font = 'big' ),
int ( screen . height / 2 - 8 )),
Cycle (
screen ,
FigletText ( "ROCKS!" , font = 'big' ),
int ( screen . height / 2 + 3 )),
Stars ( screen , 200 )
]
screen . play ([ Scene ( effects , 500 )])
Screen . wrapper ( demo )
يجب أن تنتج شيئا مثل هذا:
أو ربما كنت تبحث لإنشاء TUI؟ في هذه الحالة سيعطيك هذا الكود البسيط ما يلي:
التوثيق الكامل لكل ما سبق (والمزيد!) متاح على http://asciimatics.readthedocs.org/
المزيد من الأمثلة على ما يمكنك القيام به متاحة في دليل نماذج المشروع، المستضاف على GitHub. راجع https://github.com/peterbrittain/asciimatics/tree/v1.15/samples.
لعرضها، ما عليك سوى تنزيل هذه الملفات ثم تشغيلها مباشرةً باستخدام لغة بايثون. وبدلاً من ذلك، يمكنك تصفح تسجيلات العديد من العينات الموجودة في المعرض على https://github.com/peterbrittain/asciimatics/wiki.
إذا كانت لديك مشكلة، فيرجى مراجعة دليل استكشاف الأخطاء وإصلاحها على http://asciimatics.readthedocs.io/en/latest/troubleshooting.html. إذا لم يحل هذا مشكلتك، فيمكنك الإبلاغ عن الأخطاء (أو إرسال طلبات التحسين) على https://github.com/peterbrittain/asciimatics/issues.
وبدلاً من ذلك، إذا كانت لديك بعض الأسئلة، فلا تتردد في مراسلتنا على https://gitter.im/asciimatics/Lobby.
إذا كنت ترغب في المشاركة في هذا المشروع (ورؤية اسمك في الاعتمادات!)، فراجع الإرشادات الموجودة على http://asciimatics.readthedocs.org/en/latest/contributing.html