
Build a Snake game with Python | برمجة لعبة الثعبان بلغة بايثون | مشاريع بايثون | تعلم بايثون
——————————
كورس تعلم البرمجة للمبتدئين واحتراف بايثون وهندسة البرمجيات:
in this python tutorial for beginners you will build a python project from scratch. this will be a python snake game project tutorial. in this tutorial you will use variables, python lists, functions, tuples, loops, booleans, imports and also the python curses library.
في هذا الدرس للمبتدئين في تعلم لغة بايثون، سوف تقوم ببرمجة مشروع لعبة الثعبان باستخدام لغة بايثون، سوف تتعلم برمجة اللعبة بلغة بايثون خطوة بخطوة من الصفر. سوف تستخدم اساسيات البرمجة لتطبيق هذا المشروع.
حساب تويتر:
—————————————————
قناة codezilla academy:
—————————————————
قناة codecast:
—————————————————
قناة codezilla shorts:
—————————————————
حساب انستجرام:
—————————————————
قناتي الشخصية:
—————————————————
link to facebook group:
—————————————————
link to facebook page:
—————————————————
link to my linkedin profile:
#programming
#python
#البرمجة
#بايثون
#codezilla
الشرح برفكت وكل حاجة تمام بس بصراحة جالى احباط بعد ما شوفت انى عشان اتعلم كامل لازم ادفع انا فكرت المحتوى مجانى 100%
خلصت ابروجيكت وراجعتو وكل شي تمام..بس لمن اعمل run بيطلعلي
repl process died unexpectedly
وكلشي صح متأكد راجعت الكود اكثر من مرة
هو ممكن العمل على البرنامج داخل الفيزوول ستوديو كود ؟
اسلام موقع ريبليت مشتغل معي
هل اقدر اشتغل على فيجوال استديو
ياخي أنا بحبك لله
بس انا تقريباً مافهمتش حاجة من الفديو ده
لكن الفديوهات بتاعة الألة الحاسبة كانت ساهلة جداً
الفديو ده حسسني اني ولاحاجة
لو قدمنا خطوة عن اخرى هل هذا بأثر
انا طلعلي الأكل بس، في وسط الشاشة اما الثعبان ما طلعلي ممكن حل ؟!
حيث أنه لم يطلعلي اي مشكل في المودا !
ان طلعلي الأكل بس في وسط الشاشة اما الثعبان ما طلعلي علما أنه لم يضهرلي بوجود اي خطأ في الكود ؟! ممكن توضيح للمشكلة ؟!
@codzilla
بعد لما خلصت المشروع وكتبت الكود كل صح طلعلي المشكلة دي module 'curses' has no attribute 'getmaxyx'
كل التقدير والشكر الك
عنجد من القلب ❤كتير مبسط ورائع
هذا الكود
.
.
import random
import curses
screen=curses.initscr()
curses.curs_set(0)
screen_height,screen_width= screen.getmaxyx()
window=curses.newwin(screen_height,screen_width,0,0)
window.keypad(1)
window.timeout(125)
snk_x=screen_width //4
snk_y=screen_height //2
snake= [
[snk_y,snk_x],
[snk_y,snk_x-1],
[snk_y,snk_x-2]
]
food=[screen_height//2,screen_width//2]
window.addch(food[0],food[1],curses.ACS_PI)
key=curses.KEY_RIGHT
while True:
next_key=window.getch
key=key if next_key==-1 else next_key
if snake[0][0] in(0,screen_height)or snake[0][1]in (0, screen_width) or snake[0] in snake[1,2]:
curses.endwin
quit
new_head=[snake[0][0],snake[0][1]]
if key==curses.KEY_DOWN:
new_head[0] +=1
if key==curses.KEY_UP:
new_head[0] -=1
if key==curses.KEY_RIGHT:
new_head[1] +=1
if key==curses.KEY_LEFT:
new_head[1] -=1
snake.insert(0,new_head)
if snake[0]== food:
food= None
while food is None:
new_f00d=[random.randint(1,screen_height-1) ,(1, screen_width-1)]
food=nwe_food if new_f00d not in snake else None
window.addch(food[0],food[1],curses.ASC_PI)
else:
tail=snake.pop()
window.addch(tail[0],tail[1],' ')
window.addch(snake[0][0],snake[0][1],curses.ACS_CKBOARD)
يطلع عندي ايرور في السطر ال 9 شنو السبب؟
كلما بعمل run بيكتبلي modulNotFoundError :no module named curses معقول لازم نزل هالميديول مشان يشتغل؟!
HALLO
مرحبا. هل الدورة عبارة عن لقائات محددة او ملفات للتحميل؟
انا عملت كل الخطواات دي حرفيا واحده واحده وفي الاخر لما بعمل run علامه ال باي بتظهر في النص ومش بيظهر التعبان ولا اي حاجه ولا بيطلعلي اني عملت حاجه غلط اصلا
هل تَعلم البايثون مفيد لتطوير برامج الديسك توب؟
59:37
هو طبيعي اني مش فاهم حاجه
ملاحظة: خلصت ال 19 حلقة بالكورس قبل اللعبة وعندي يومين بتعلم
وفقك الله
االسلام عليكم ، مشكور كثير على الفيديو و أحسن قناة تعلمية و شرح قمة في الروعة و البساطة كأنك تقرأ الأسئلة لي فعقلي، بس الله إسلمك الثعبان مظهرمعي، كل شيء صحيح ماعندي خطاء فأي سطر، دققة، بحث، ماعرفت له مظهر معي، متبعك من المغرب أحسن codezilla
السلام عليكم
اولا شكرا على مجهودك الرائع
لكن انا عندي مشكلة ارجو من احدكم المساعدة
انا قمت بالخطوات حرفيا لكن الثعبان ما يظهر لي على الشاشة
مع ان كل كود ماشي في مكانه والfoodموجود لكم من غير ثعبان🤔
ظهرت لي خطاء اخر البرنامج else ورجعت امسحها
شرح ممتاز جدا + انك مبدع و بتبسط الحاجه . .♥👏🏻
بس للاسف ظهرت لي مشكله ان الثعبان مش ظاهر علي console اعمل ايه يا كبير مستني ردك . .😇👍🏻
و يريت تكتبلي طريقه اتواصل بها معاك عشان انا مبتدأ و هيظهرلي اخطاء كثير في المستقبل ممكن ..؟
المنصة لم تفتح معي
من فضلك اجعل لنا كورس قواعد بيانات
حصل معايا زي مظم الناس والثعبان مكانش بيظهر والمشكله ب اختصار ف ال indentation ظبط كل حاجه ف اللاين بتاعها مظبوط.. بعد الثعبان م يظهر هيقابلك ايرورز تانيه اتسلي فيها بقا 😂
بارك الله فيك وجزاك الله خيرٱ
متفرج علي ١٧ فيديو و مش فاهم حاجه من فيديو اللعبه الاحباط بسبب إنك كان عندك شغف بعد كدا تلاقي إنك مستخدمتش حاجه من الفيديوهات الاتعلمتها
هو انا كل ما اجي اعمل else الي ف يالاخر زي ما حضرتك بتعمل بيقولي عليها eror
و فكرت اني اشلها خالص الي هو انا مش عايز التعبان يكبر التعبان مظهرش اصلا فلو ف يحل ارجو الرد
عايزين الجزء الثاني
عزيزي اعتقد حضرتك نسيت خطوة رسم الثعبان قبل خطوة رسم الطعام لأن الثعبان لم يظهر وظهر الطعام فقط وانتهت اللعبة بخطأ لذلك اعتقد ان خطوة رسم الثعبان يجب ان تكون بعد تحديد احداثياته الاولية (موقع البداية).. نقطة اخرى اعتقد ان عند تشغيلك للعبة فان الثعبان كان ينمو بعد الاكل ولم اجد خطوات استطالة الثعبان.. ممكن توضيح ذلك ان امكن
فى آخر سطر فى الكود
_curses.error : addch() returned ERR
المشكلة دى بتظهر عندما يصطدم الثعبان للجانب الأيمن أو السفلى فقط من الشاشة ولا تظهر فى الجانب العلوى أو الأيسر لو ظهرت مع حد ووجد حل يا ريت يفيدنى
أنا بحثت وملقيتش حل للمشكلة نفسها بس نقصت ١ من الطول والعرض فى السطر 1:06:03 وعند الإصطدام لم يظهر Error
لو بتستخدم موبايل ومفيش كيبورد ومش عارف تستخدم الأسهم زود المود دا بيخليك تستخدم الأرقام فى التحكم
curses.keyname(5)
if key == ord('5') :
new_head[0] -= 1
curses.keyname(8)
if key == ord('8') :
new_head[0] += 1
curses.keyname(7)
if key == ord('7') :
new_head[1] -= 1
curses.keyname(9)
if key == ord('9') :
new_head[1] += 1
بارك الله فيك رجاءا لو شوية توضح الصورة
جزاك الله خير على الجهد المبذول , عندي مشكلة يا جماعة جسم السنااك مش راضي يطلع على اللعبة رغم انه مافيش اخطاء في الكود على حسب كلاك الـ replit كل حاجة بتظهر ما عدى جسم السناك مش موجود.. ممكن تشوفو معايا اذا كل حاجة صح و شكرا
import random
import curses
screen = curses.initscr()
curses.curs_set(0)
screen_hight, screen_wight = screen.getmaxyx()
window = curses.newwin(screen_hight, screen_wight, 0, 0)
window.keypad(1)
window.timeout(100)
snk_x = screen_wight // 4
snk_y = screen_hight // 2
snake = [
[snk_y, snk_x],
[snk_y, snk_x -1],
[snk_y, snk_x -2]
]
food = [screen_hight // 2, screen_wight // 2]
window.addch(food[0], food[1], curses.ACS_STERLING)
key = curses.KEY_RIGHT
while True:
next_key = window.getch()
key = key if next_key == -1 else next_key
if snake[0][0] in [0, screen_hight] or snake[0][1] in [0, screen_wight] or snake[0] in snake[1:]:
curses.endwin() # closing the window
quit() # exit the program
new_head = [snake[0][0], snake[0][1]]
if key == curses.KEY_DOWN:
new_head[0] += 1
if key == curses.KEY_UP:
new_head[0] -= 1
if key == curses.KEY_RIGHT:
new_head[1] += 1
if key == curses.KEY_RIGHT:
new_head[1] -= 1
snake.insert(0, new_head)
if snak[0] == food:
food = None # remove food if snake ate it
while food is None:
new_food = [
random.randint(1, screen_hight – 1), #—> 1, 599
random.randint(1, screen_wight – 1)
]
food = new_food if new_food not in snake else None
window.addch(food[0], food[1], curses.ACS_STERLING)
else:
tail = snake.pop()
window.addch(tail[0], tail(1) )
window.addch(snake[0][0], snake[0][1], curses.ACS_CKBOARD)
دائما يظهر الError ده:
play_window.addch(food[0], food[1], curses.ACS_PI)
TypeError: 'list' object cannot be interpreted as an integer
مش غارف فين المشكلة
ده الكود اللي انا كاتبه:
import random
import curses
screen = curses.initscr()
curses.curs_set(0)
scrn_hight , scrn_width = screen.getmaxyx()
play_window= curses.newwin(scrn_hight,scrn_width, 0,0)
play_window.keypad(1)
play_window.timeout(125)
snakeX= scrn_width // 4
snakeY= scrn_hight // 2
snake_body= [
[snakeY, snakeX],
[snakeY, snakeX-1],
[snakeY, snakeX-2]
]
food= [scrn_hight//2, scrn_width//2]
play_window.addch(food[0],food[1],curses.ACS_PI)
key=curses.KEY_RIGHT
while True:
next_key= play_window.getch()
key= key if next_key ==-1 else next_key
if snake_body[0][0] in [0,scrn_hight] or snake_body[0][1] in [0,scrn_width] or snake_body[0] in snake_body[1:]:
print("GAME OVER")
curses.endwin()
quit()
new_head= [snake_body[0][0],
snake_body[0][1]]
if key == curses.KEY_UP:
new_head[0] -= 1
if key == curses.KEY_DOWN:
new_head[0] +=1
if key == curses.KEY_LEFT:
new_head[1] -=1
if key == curses.KEY_RIGHT:
new_head[1] +=1
snake_body.insert(0, new_head)
if snake_body[0] == food:
food=None
while food is None:
new_food = [
[random.randint(1, scrn_hight-1)],
[random.randint(1, scrn_width-1)]
]
food = new_food if new_food not in snake_body else None
play_window.addch(food[0], food[1], curses.ACS_PI)
else:
tail = snake_body.pop()
play_window.addch(tail[0], tail[1], " ")
play_window.addch(snake_body[0][0], snake_body[0][1],curses.ACS_CKBOARD)
جميل جدا وم حسيت بملل ابدا كان مسلي جدا ومفيد شكرا لتعبك والله يجزيك الخير
بس سؤال اذا أشتغلت على تطبيق معين أو لعبة كيف بقدر أرفعها على متجر وأربح منها من خلال شو ؟؟
الثعبان لايتحرك لدي
يدخل الى الموقع لاكن لا يدخل الى صفحة بايثون🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔
import random
import curses
screen = curses.initscr()
curses.curs_set(0)
screen_height, screen_width = screen.getmaxyx()
window = curses.newwin(screen_height, screen_width, 0, 0)
# noinspection PyTypeChecker
window.keypad(1)
window.timeout(100)
snk_x = screen_width // 4
snk_y = screen_height // 2
snake = [
[snk_y, snk_x],
[snk_y, snk_x -1],
[snk_y, snk_x -2]
]
food = [screen_height // 2, screen_width // 2]
window.addch(food[0], food[1], curses.ACS_PI)
key = curses.KEY_RIGHT
while True:
next_key = window.getch()
key = key if next_key == -1 else next_key
# if next_key == -1:
# key = key
# else:
# key = next_key
if snake[0][0] in [0, screen_height] or snake[0][1] in [0, screen_width] or snake[0] in snake[1:]:
curses.endwin()
quit()
new_head = [snake[0][0], snake[0][1]]
if key == curses.KEY_DOWN:
new_head[0] += 1
if key == curses.KEY_UP:
new_head[0] -= 1
if key == curses.KEY_RIGHT:
new_head[1] += 1
if key == curses.KEY_LEFT:
new_head[1] -= 1
snake.insert(0, new_head)
if snake[0] == food:
food = None
while food is None:
new_food = [
random.randint(1, screen_height-1),
random.randint(1, screen_width-1)
]
food = new_food if new_food not in snake else None
window.addch(food[0], food[1], curses.ACS_PI)
else:
tail = snake.pop()
window.addch(tail[0], tail[1], ' ')
window.addch(snake[0][0], snake[0][1], curses.ACS_CKBOARD)
ولا يتحرك لافوق ولا تحت رجاءاً رد سريع🤔🤔🤔🤔🤔RIGHT أنضر للكود كتبتة مثل ما كتبتة انت ولاكن سنك يضل يتحرك
لدي مشكل.
الثعبان لا يغير الإتجاه. معناه مهما ضغطت على أزرار الإتجاهات فالويندو لا تستقبل المعلومة
يا ليت تشرح لنا طريقة.حفظ ملفات المشروع /
وكيف يمكن تشغيل اللعبه على اي جهاز كمبيوتر بدون الحاجه الى تثبيت البايثون في الجهاز نفسه
ازاي اعمل فيديو زي ده .
لان مطلوب مني تصوير فيديو للكليه و مطلوب وشي يكون ظاهر
هوف على شرح فخامه ماشاء الله 💙
السلام عليكم اخ اسلام سويت زي ماقلت لكن الثعبان لم يظهر مع ان علامة الطعم موجودة مالسبب ؟
مع كامل امتناني وشكري ❤❤
بتستطيع اعمل game snake in google colab?
والله يا اسلام انت اسطورة الله يسعدك يرب احسن انسان يشرح بايثون
حضرتك بعد ما خلصت كتابة وعملت run مظهر غير الباي ممكن حضرتك تقولي الحل
انا ما طلعلي جسم الثعبان بس طلعلي اكل الثعبان 🤣🤣🤣.