Beshoy Ehab3 نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 (معدل) السؤال الأول: كيف اقوم برسم خطوط شبه شفافه مثال: شخص يريد أن يرسم خط أحمر و خط ازرق و في تقاطعهما ينشأ اللون البنفسجي السؤال الثاني: هل يمكن عمل تطبيق اندرويد بمكتبة Pygame؟ السؤال الثالث: هل هناك مكتبة تساعد في كتابة اللغه العربيه في مكتبة Pygame تم التعديل في 25 أغسطس 2021 بواسطة Beshoy Ehab Hafez لزياده الاسئله 1 اقتباس
0 سامح أشرف نشر 26 أغسطس 2021 أرسل تقرير نشر 26 أغسطس 2021 بتاريخ 20 ساعات قال Beshoy Ehab Hafez: يريد أن يرسم خط أحمر و خط ازرق و في تقاطعهما ينشأ اللون البنفسجي يمكنك أن تتحكم في الشفافية الخاصة بلون أي خط من خلال تمرير قيمة Alpha كعنصر ثالث عند كتابة لون الخط، كالتالي: import pygame pygame.init() # تحديد خصائص النافذة size = [600, 600] screen = pygame.display.set_mode(size) screen.fill((255, 255, 255)) vertical_line = pygame.Surface((100, 600), pygame.SRCALPHA) vertical_line.fill((0, 0, 255, 50)) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 screen.blit(vertical_line, (0, 0)) horizontal_line = pygame.Surface((600, 100), pygame.SRCALPHA) horizontal_line.fill((255, 0, 0, 50)) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 screen.blit(horizontal_line, (0, 0)) يقوم الكود السابق بعمل خطين أحدهما أحمر والثاني أزرق وعندما يتلاقى الخطين (في أعلى اليسار) ستجد مربع لونه بنفسجي، كما في الصورة: أو يمكنك أن تستعمل التابع set_alpha أيضًا للحصول على نفس النتيجة كالتالي: vertical_line = pygame.Surface((100, 600), pygame.SRCALPHA) vertical_line.set_alpha(50) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 vertical_line.fill((0, 0, 255)) screen.blit(vertical_line, (0, 0)) horizontal_line = pygame.Surface((600, 100), pygame.SRCALPHA) horizontal_line.set_alpha(50) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 horizontal_line.fill((255, 0, 0)) screen.blit(horizontal_line, (0, 0)) الأمثلة السابقة للتوضيح وبالتأكيد سوف تحتاج إلى حلقة لكي لا تغلق النافذة تلقائيًا. بتاريخ 20 ساعات قال Beshoy Ehab Hafez: هل يمكن عمل تطبيق اندرويد بمكتبة Pygame؟ مكتبة Pygame ليست معدة لعمل تطبيقات أندرويد بل لعمل الألعاب البسيطة على أنظمة التشغيل الخاصة بالحسوب مثل Windows و Linux و MacOS، كما أنه لا ينصح إستعمال لغة Python على العموم في عمل تطبيقات الهاتف، حيث أن هناك تقنيات أخرى أفصل وأسهل ومعدة خصيصًا لهذا الأمر مثل Flutter أو React Native أو حتى إستعمال لغات مثل Java و Swift لعمل تطبيقات أندرويد و iOS ، لكن هذا لا يمنع أنه يمكن إستخدام لغة بايثون لعمل تطبيقات الأندرويد، حيث يمكن إستعمال مكتبات مثل Kivy (التي تدعم شاشات اللمس، وتعدد الأصابع على الشاشة) لعمل تطبيقات أندرويد. بتاريخ 20 ساعات قال Beshoy Ehab Hafez: هل هناك مكتبة تساعد في كتابة اللغه العربيه في مكتبة Pygame نعم، يمكنك أن تستعمل مكتبات مثل arabic-reshaper للكتابة باللغة العربية في نافذة Pygame، أولًا يجب أن تقوم بتثبيت المكتبة عبر الأمر التالي: pip install --upgrade arabic-reshaper وإن كنت تستعمل anaconda فيمكنك أن تستعمل الأمر: conda install -c mpcabd arabic-reshaper بعد تثبيت المكتبة يجب أن تقوم بتثبيت حزمة python-bidi أيضًا من خلال الأمر التالي: pip install python-bidi وأخيرًا ستحتاج إلى خط يدعم العربية مثل خط Cairo ويمكنك تحميله من خلال خطوط جوجل من هنا، وفي النهاية يجب أن تقوم بتمرير النص إلى التابع reshape من مكتبة arabic-reshaper ثم يجب تمرير النتيجة إلى الدالة get_display من حزمة python-bidi وأخيرًا تستطيع عرض النص في النافذة: import pygame import arabic_reshaper from bidi.algorithm import get_display pygame.display.init() pygame.font.init() win = pygame.display.set_mode((500, 500)) font = pygame.font.Font('Cairo-Regular.ttf', 20) # اسم ومسار الخط وحجم الخط # هنا النص الذي ترغب بعرضه text_to_be_reshaped = 'نص باللغة العربية' # عملية تحويل النص reshaped_text = arabic_reshaper.reshape(text_to_be_reshaped) bidi_text = get_display(reshaped_text) print(reshaped_text) text = font.render(bidi_text, True, (255, 255, 255)) win.fill((0, 0, 0)) win.blit(text, (0, 0)) النتيجة: 1 اقتباس
0 Beshoy Ehab3 نشر 27 أغسطس 2021 الكاتب أرسل تقرير نشر 27 أغسطس 2021 بتاريخ 19 ساعات قال سامح أشرف: بتاريخ On 26/8/2021 at 00:41 قال Beshoy Ehab Hafez: يريد أن يرسم خط أحمر و خط ازرق و في تقاطعهما ينشأ اللون البنفسجي يمكنك أن تتحكم في الشفافية الخاصة بلون أي خط من خلال تمرير قيمة Alpha كعنصر ثالث عند كتابة لون الخط، كالتالي: import pygame pygame.init() # تحديد خصائص النافذة size = [600, 600] screen = pygame.display.set_mode(size) screen.fill((255, 255, 255)) vertical_line = pygame.Surface((100, 600), pygame.SRCALPHA) vertical_line.fill((0, 0, 255, 50)) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 screen.blit(vertical_line, (0, 0)) horizontal_line = pygame.Surface((600, 100), pygame.SRCALPHA) horizontal_line.fill((255, 0, 0, 50)) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 screen.blit(horizontal_line, (0, 0)) يقوم الكود السابق بعمل خطين أحدهما أحمر والثاني أزرق وعندما يتلاقى الخطين (في أعلى اليسار) ستجد مربع لونه بنفسجي، كما في الصورة: أو يمكنك أن تستعمل التابع set_alpha أيضًا للحصول على نفس النتيجة كالتالي: vertical_line = pygame.Surface((100, 600), pygame.SRCALPHA) vertical_line.set_alpha(50) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 vertical_line.fill((0, 0, 255)) screen.blit(vertical_line, (0, 0)) horizontal_line = pygame.Surface((600, 100), pygame.SRCALPHA) horizontal_line.set_alpha(50) # يمكنك أن تقوم بتغير رقم 50 إلى أي رقم بين 0 و 255 horizontal_line.fill((255, 0, 0)) screen.blit(horizontal_line, (0, 0)) الأمثلة السابقة للتوضيح وبالتأكيد سوف تحتاج إلى حلقة لكي لا تغلق النافذة تلقائيًا. اذا اردت ان افعل نفس الشئ بالنسبه لدائرة او مثلث ماذا أفعل؟ 1 اقتباس
0 سامح أشرف نشر 27 أغسطس 2021 أرسل تقرير نشر 27 أغسطس 2021 بتاريخ 3 ساعات قال Beshoy Ehab Hafez: اذا اردت ان افعل نفس الشئ بالنسبه لدائرة او مثلث ماذا أفعل؟ يمكنك أن تستخدم نفس الطريقة من خلال تمرير معامل ثالث إلى اللون، كالتالي: import pygame def draw_rect_alpha(surface, color, rect): shape_surf = pygame.Surface(pygame.Rect(rect).size, pygame.SRCALPHA) pygame.draw.rect(shape_surf, color, shape_surf.get_rect()) surface.blit(shape_surf, rect) def draw_circle_alpha(surface, color, center, radius): target_rect = pygame.Rect(center, (0, 0)).inflate((radius * 2, radius * 2)) shape_surf = pygame.Surface(target_rect.size, pygame.SRCALPHA) pygame.draw.circle(shape_surf, color, (radius, radius), radius) surface.blit(shape_surf, target_rect) def draw_polygon_alpha(surface, color, points): lx, ly = zip(*points) min_x, min_y, max_x, max_y = min(lx), min(ly), max(lx), max(ly) target_rect = pygame.Rect(min_x, min_y, max_x - min_x, max_y - min_y) shape_surf = pygame.Surface(target_rect.size, pygame.SRCALPHA) pygame.draw.polygon(shape_surf, color, [(x - min_x, y - min_y) for x, y in points]) surface.blit(shape_surf, target_rect) pygame.init() window = pygame.display.set_mode((250, 250)) window.fill((255, 255, 255)) # نقوم بتحديد الألوان هنا # يمكنك تغير رقم 127 لكي تغير الشفافية YELLOW = (255, 255, 0, 127) BLUE = (0, 0, 255, 127) RED = (255, 0, 0, 127) draw_rect_alpha(window, BLUE, (55, 90, 140, 140)) draw_circle_alpha(window, RED, (150, 100), 80) draw_polygon_alpha(window, YELLOW, [(100, 10), (100 + 0.8660 * 90, 145), (100 - 0.8660 * 90, 145)]) في الكود السابق ثلاث دوال كل منها تقوم برسم شكل معين، وتأخذ إحداثيات مكانه ولونه وحجمه. 1 اقتباس
0 Beshoy Ehab3 نشر 27 أغسطس 2021 الكاتب أرسل تقرير نشر 27 أغسطس 2021 (معدل) شكرا لك لكن هناك سؤال آخر لماذا عند استعمال الامر collidepoint في الدائره و المثلث يعتبرهما مثل المربع مثال: import pygame pygame.init() screen = pygame.display.set_mode((600, 600)) c = pygame.draw.circle(screen, (255, 0, 0), (100, 100), 100) if c.collidepoint((1, 1)): print("yes") تم التعديل في 27 أغسطس 2021 بواسطة Beshoy Ehab Hafez اقتباس
0 سامح أشرف نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 بتاريخ 4 ساعات قال Beshoy Ehab Hafez: شكرا لك لكن هناك سؤال آخر لماذا عند استعمال الامر collidepoint في الدائره و المثلث يعتبرهما مثل المربع مثال: import pygame pygame.init() screen = pygame.display.set_mode((600, 600)) c = pygame.draw.circle(screen, (255, 0, 0), (100, 100), 100) if c.collidepoint((1, 1)): print("yes") يحدث هذا الأمر لأن التابع collidepoint يستخدم في الأساس للتحقق مما إذا كانت نقطة معينة موجودة داخل مربع الشكل ، فعلى سبيل المثال، النقط الزرقاء في الشكل التالي تقوم بإرجاع True بينما النقط الخضراء تقوم بإرجاع False لأنها خارج مربع الشكل: ويستخدم هذا التابع في حالة أردت حدوث شيء ما عندما يكون مؤشر الفأرة قريب من الشكل على سبيل المثال، ويقترح توثيق pygame الرسمي أن تستعمل التابع clipline والذي يقوم بالتأكد من وجود خط كامل داخل الشكل. اقتباس
السؤال
Beshoy Ehab3
السؤال الأول:
كيف اقوم برسم خطوط شبه شفافه مثال:
شخص يريد أن يرسم خط أحمر و خط ازرق و في تقاطعهما ينشأ اللون البنفسجي
السؤال الثاني:
هل يمكن عمل تطبيق اندرويد بمكتبة Pygame؟
السؤال الثالث:
هل هناك مكتبة تساعد في كتابة اللغه العربيه في مكتبة Pygame
تم التعديل في بواسطة Beshoy Ehab Hafezلزياده الاسئله
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.