برمجة الشبكات في بايثون ارسال واستقبال البيانات

1
في الدرس السابق تعلمنا كيفية إنشاء مقبس والاتصال بالسيرفر ، وفي هذا الدرس سنتعلم كيفية إرسال واستقبال البيانات من والى السيرفر.
ولإرسال البيانات نقوم باستخدام الدالة sendall .
دعونا نقوم بإرسال بعض البيانات إلى قوقل .

برمجة الشبكات في بايثون

0
سيكون هذا الموضوع مدخلنا الى برمجة المقبس (socket) باستخدام لغة بايثون , ويعتبر المقبس من الأساسيات وراء كل عملية اتصال بالشبكة يقوم بها الكمبيوتر وعلى سبيل المثال عندما نقوم بالاتصال بمحرك البحث ونكتب www.google.dz على المتصفح يقوم الجهاز بفتح مقبس ويتصل بالموقع  لجلب الصفحة و إظهارها لنا، نفس العملية تنطبق على برامج الدردشة مثل gtalk او skype اي ان عملية اتصال بالشبكة تمر عبر المقبس.
في هذا الدرس سنقوم ببرمجة مقبس tcp باستخدام لغة البرمجة بايثون .
وقبل أن تبدأ يجب أن تكون على معرفة بأساسيات استخدام بايثون .

برمجة الألعاب باستخدام pygame رسم خط -الدرس الثالث

0
في الدرس السابق تعلمنا كيفية رسم مستطيل وبما أن الألعاب بحاجة إلى أشكال عديدة سنواصل تعلم أشكال أخرى وهذه المرة سنتعلم كيفية رسم خط على الشاشة ،سنقوم برسم خط أخضر بالإحداثيات التالية (تخيل أن النافذة عبارة عن معلم متعامد متجانس) ابدأ برسم الخط ابتداءا من النقطة (0,0) إلى غاية النقطة (100,100) وعرض الخط سيكون 5 بكسل.
لن أقوم بكتابة الكود من الجديد سأفترض أنك قمت بحفظ الملف السابق الذي قمنا بإنشائه وفي حالة عدم وجود الملف السابق أنصحك بالرجوع إلى الدروس السابقة واضف الكود التالي إلى البرنامج.

Green=( 0, 255, 0)#متغير جديد لتحديد اللون الأخضر

pygame.draw.line(screen, Green, [0, 0], [100, 100], 5)#رسم خط بالإحداثيات المحددة


هذا كل شيء كل ماعليك فعله عزيزي القارئ هو التعديل على الكود والاحداثيات ورسم خطوط أخرى حتى تتعلم بشكل وعليك ايضا بالبحث والقراءة لزيادة معارفك .

رسم شكل بيضوي 

إن رسم شكل بيضوي يحتاج إلى إحداثيات وهي نفس الإحداثيات الخاصة برسم مستطيل حيث عند رسم شكل بيضوي يقوم البرنامج برسم مستطيل على الذاكرة فقط ثم يقوم برسم الشكل البيضوي داخل حدود ذلك المستطيل .
ومباشرة مع الكود الخاص برسم الشكل البيضوي :

pygame.draw.ellipse(screen, Green, [20,20,250,100], 2)

عكس السلاسل في بايثون

0
في بايثون لا توجد طريقة مباشرة لعكس سلسلة نصية، والطريقة الوحيدة لعمل ذلك هو باستعمال الترشيح .
إن عملية الترشيح تقوم باستخراج العناصر اعتمادا على ترتيب العنصر في السلسلة ويمكن استخراج مجموعة من العناصر من العنصر الأول من السلسة إلى غاية العنصر الذي يجب أن نتوقف عنده.

مجموعة عن عملية الترشيح
values="abcdefg"
values[1:3]
'bc'
 values[2:-1]
'cdef'
values[:2]
'ab'
values[2:]
'cdefg'
values[::2]
'aceg'
values[::-1]
'gfedcba'


يمكن استعمال مع كل من القوائم ، السلاسل ، الصفوف، والمصفوفات.
في المثال السابق في السطر قبل الأخير  قمت باستخدام [1::] وهذا الترشيح يقوم بعكس السلسلة تماما وهذه هي الطريقة الوحيدة لعكس السلاسل في بايثون .

name="kader"
name[::-1]
'redak'

برمجة الألعاب باستخدام pygame رسم مستطيل -الدرس الثاني

0
في الدرس السابق قمنا بانشاء نافذة ذات خلفية بيضاء وبدون اي رسومات أو اضافات عليها، وفي هذا الدرس سنقوم برسم مستطيل على تلك النافذة.
يمكننا رسم العديد منن الأشياء مثل المستطيلات، المضلعات،الدوائر، الأقواس والخطوط كما سنكتشف أيضا عرض النصوص مع الرسومات ومن خلال الرابط التالي يمكنك رؤية جميع الأشياء التي يمكنك رسمها.

برمجة الألعاب باستخدام pygame انشاء أول نافذة -الدرس الاول

0
حتى الان وفي جميع مواضيع المدونة لم نتطرق بعد الى كيفية فتح النوافذ في برامجنا كما تفعل معظم البرامج الحديثة، والكود الذي سنستعمله في فتح النوافذ ليس معقد أو صعب وهو من أساسيات pygame ويستعمل دائما عند إنشاء الألعاب، وفيما يلي الكود سيقوم باستدعاء مكتبة pygame و فتح نافذة بعرض 700 وطول 500 بكسل.

عبارات else

0
في المرة السابقة تكلمنا عن عبارات IF والتي تسمح لنا بكتابة برامج مثل :
print "What's your name?"
name = raw_input()
print "Hello " + name + "!"
if name == "Abdelkader ":
    print "Hey wait a minute! That's not your name is it?!"
وسيعرض لنا البرنامج مايلي :

What's your name?
َAbdelkader
Hello Abdelkader!
Hey wait a minute! That's not your name is it?!
او

What's your name?
Kader
Hello Kader!


اذا لماذا يقوم برنامجنا بترحيب المستخدم Abdelkader اذا كان اسمه غير صحيح؟
دعونا نقوم بتعديل الكود ليصبح مفهوم اكثر.
print "What's your name?"
name = raw_input()
if name == "Abdelkader":
    print "You're not fooling anybody you know."
else:
    print "Hello " + name + "!" 

نقوم بحظ البرنامج ونجربه من جديد ونرى مالذي يحدث:
What's your name?
َAbdelkader
You're not fooling anybody you know
أو

What's your name?
Kader
Hello Kader!
 
اذا كان لدينا عدة خيارات نريد اختبارها يمكننا استخدام if لاختبار الشرط الأول فاذا كان صحيح فهذا جيد واذا كان الشرط الاول غير صحيح يمكن استخدام else لتنفيذ بقية البرنامج

تثبيت مكتبة pygame لبرمجة الألعاب

9
هل أنت هنا لأنك تريد أن تبرمج العاب الخاصة بك ! جيد لأنك في المكان المناسب ، لأنني بصدد كتابة بعض المواضيع حول برمجة الألعاب باستخدام لغة بايثون .

قبل أن نبدأ تعلم برمجة الألعاب نحن بحاجة الى تثبيت مكتبة pygame التي تم كتابتها من طرف أشخاص لمساعدتنا على انشاء العاب بكل سهولة ونستطيع مع هذه المكتبة ان نفعل مايلي :
  • رسم الأشكال الرسومية.
  • عرض الصور النقطية.
  • تحريك الأشياء.
  • التفاعل مع لوحة المفاتيح،الفأرة .
  • تشغيل الصوت.
  • اكتشاف تصادم الأجسام.
والكثير من الامور التي سنكتشفها معا ان شاء الله .

دالة randrange

0
الأرقام العشوائية تستخدم بشكل كبير في علوم الحاسوب خاصة في البرامج التي تنطوي على الألعاب والمحاكاة.

دالة randrange

افتراضيا بايثون لا يعرف كيف يقوم بتقديم أرقام عشوائية ومن الضروري أن يقوم بايثون بجلب مكتبة أكواد خاصة من أجل عمل أرقام عشوائية، ولاستعمال الأرقام العشوائية علينا أن نقوم جلب مكتبة خاصة وذلك بكتابة  عبارة Import أعلى البرنامج .
import random

لا تحاول تسمية الملف التي تعمل عليه ب random.py لأنه في ما بعد وعند استعمال import random سيقوم بايثون بجلب الملف الذي قمت بإنشائه وليس المكتبة الخاصة بالأرقام العشوائية .

الآن بعدما قمنا بجلب مكتبة random سنقوم بكتابة برنامجنا الذي سيقوم بعرض رقم عشوائي من 0 إلى 49  باستخدام الدالة randrange  .
my_number = random.randrange(50)

كما يمكننا استعمال خاصية random مع القوائم أيضا.
my_list = ["dz", "ma", "tn"]
random_index = random.randrange(3)
print(my_list[random_index])

حلقات التكرار While

0
تستعمل حلقات For عندما يعرف البرنامج أنه بحاجة الى تكرار مجموعة من التعليمات البرمجية في زمن محدد، بينما تستخدم حلقات While  عندما يحتاج البرنامج لتنفيذ التكرار الى غاية عدم تحقق الشرط ويمكن استخدام حلقات While للتكرار الى غاية وصول قيمة المتغير الى قيمة معين.


عبارة IF

0
في الدرس السابق تكلمنا عن السلاسل في بايثون كما رأينا من قبل كيفية الحصول على البيانات من طرف المستخدم واستخدامها في برنامجنا وحتى هذه اللحظة يبقى برنامجنا يحتاج الى بعض الاضافات واذا أردنا أن نفعل المزيد علينا أن نأخبر برنامجنا كيف يتخذ القرارات الصائبة ولعمل هذا نحناج الى عبارات IF.

سنحاول التعديل على المثال التالي :
print "What's your name?"
name = raw_input()
print "Hello " + name + "!" 


السطر الأول من الكود يقوم بعرض سلسلة، السطر الثاني يأخذ بيانات من المستخدم ويخزنها في متغير أما السطر الأخير يقوم بعرض سلسلة مع قيمة المتغير الذي يحفظ بيانات المستخدم، الى هنا كل شيء على مايرام ولكن البرنامج مازال يحتاج الى لمسة سحرية يعني نريد من البرنامج ان يتحقق من ان الاسم الذي أدخلته هو اسمك فعلا .

في المثال التالي سنقوم بادخال بعض التعديلات على البرنامج :
print "What's your name?"
name = raw_input()
print "Hello " + name + "!" 
if name == "Abdelkader ":
    print "Hey wait a minute! That's not your name is it?!"
وعند تجريب البرنامج وفي حالة ادخالنا  اسم Abdelkader سيقوم البرنامج بعرض الرسالة التالية :

Hey wait a minute! That's not your name is it?!
 

ماقام به البرنامج هو انه تحقق من قيمة المتغير name اذا كانت تساوي Abdelkader سيعرض لك رسالة مضمونها انه ليس اسمك وفي حالة ادخالنا لاسم اخر لن يقوم بعرض اي رسالة

أمثلة عن حلقات التكرار For

0
موضوع على السريع اقدم فيه مجموعة من الأمثلة عن كيفية استخدام حلقات التكرار for
# عرض كلمة هاي 10 مرات
for i in range(10):
    print("Hi")
# عرض كلمة مرحبا 5 مرات وكلمة هناك مرة واحدة
for i in range(5):
    print("Hello")
    print("There")
# عرض كلمة مرحبا وهناك 5 مرات
for i in range(5):
    print("Hello")
    print("There")
# عرض مجموعة من الأرقام من 0 الى 9
for i in range(10):
    print(i)
#طريقتين لعرض مجموعةمن الارقام من 1 الى 10
for i in range(1,11):
    print(i)
for i in range(10):
    print(i + 1)
# عرض مجموعة من الأرقام الزوجية من 2 الى 10
for i in range(2, 12, 2):
    print(i)
# عرض مجموعة من الارقام من 10 الى 1 
for i in range(10, 0, -1):
    print(i)
# عرض الأرقام الموجودة داخل القائمة
for i in [2, 6, 4, 2, 4, 6, 7, 4]:
    print(i)
# عرض الحرف a ثلاث مرات 
for i in range(3):
    print("a")
# عرض مجموعة من الأرقام من 1 الى 10
a=0
for i in range(10):
    a = a + 1
    print(a)

ارجوا أن تكون الامثلة مفهومة وان تستفيدوا منها.

السلاسل في بايثون

0
في الدرس السابق تحدثنا عن كيفية الحصول عن البيانات من المستخدم وعرضها على الشاشة وهذا مجرد البداية ، فالبرنامج الحقيقي يحصل على البيانات من المستخدم ويقوم بالكثير معها وقبل هذا يجب ان نعرف عن السلاسل وكيفية التعامل معها.

الحصول على مدخلات المستخدم في بايثون

0
في الدرس السابق تكلمنا عن المتغيرات وكيفية انشاءها وفي هذا الدرس سنتكلم عن كيفية الحصول عن بيانات من المستخدم وكيفية التعامل معها.
وكالعادة نقوم بفتح محرر النصوص ونكتب الكود التالي :

المتغيرات في بايثون

0
في الدرس السايق تعلمنا كيفية عرض كلمة Hello world على الشاشة ولكنك تريد المزيد وتظن أن مجرد عرض جملة ليس بالأمر المهم ولكن سنتقدم درجة درجة .

في هذا الدرس سنتعلم كيفية انشاء المتغيرات اذا قم بقتح ملف جديد وتسميته ب variables.py وأكتب الكود التالي :

Hello world في بايثون

0
سأبدء مجموعة من الدروس لتعلم لغة بايثون موجهة للمبتدئين وستكون دروس على السريع يعني شرح الدرس بمثال أو مثالين وان شاء الله تكون مفهومة .
الدروس ستكون على أنظمة لينوكس لذلك سأدعي انه لديك نظام لينكس مثبت على جهازك وتعرف أساسيات التعامل معه .

شرح ___name___== “___main___”

0
عندما نقوم بتشغيل برنامج بايثون من الطرفية مباشرة باستخدام الأمر python script.py $
فنحن بذلك نريد تعيين نقطة بداية السكريبت يعني أن مفسر اللغة يقوم بتشغيل البرنامج انطلاقا من السطر الأول ثم ينتقل الى السطر الثاني وهكذا....

import module

def my_function():
# الكود هنا

x = my_function()