علیرضا فرقدانی
علیرضا فرقدانی
خواندن ۳ دقیقه·۳ سال پیش

ساخت بازی دوز با پایتون


ساخت بازی دوز با پایتون
ساخت بازی دوز با پایتون


- لینک ویدیو یوتیوب اموزش به صورت ویدیویی -

نکته با فیلتر شکن وارد شوید تا ویدیو نمایش داده شود
https://youtu.be/UcpJIpSc-Ao


سلام ..

خب بعد مدت ها برگشتم با یک مطلب خسته چرا خسته چون که قرار یک بازی دوز تحت کنسول با پایتون بسازیم که یک چیز سادس ولی چالش های خودش رو هم داره اول از همه فایل پایتونمون رو می سازیم ☺


پایتون
پایتون


من خودم می خواستم بازی دوز جوری طراحی کنم که با دکمه های W,A,S,D بشه علامت دایره و ضربدر رو جابجا کرد برای همین از کتابخونه keyboard استفاده کردم



خب اول از همه کتابخونه هارو ادد کردم

import os import keyboard import time

کتابخونه os برای پاک کردن صفحه و keyboard هم که بالاتر گفتم و تایم هم برای صبر کردن برنامه برای یک سری عملیات ها


ما قرار دوزمون به شکل فورمت زیر در کنسول نمایش بدیم


0|1|+ -------- 1|0|+ --------- 0|1|0 +|+|+ -------- +|+|+ -------- +|+|+



خب بریم سراغ ادامه کار

اول کاراکتر های بازی دوز رو تعریف می کنم

dayere = &quoto&quot zabdar = &quotx&quot

که بعدا راحت تر ازشون استفاده کنیم


بعدش من به هر خونه دروز یک متغییر اختصاص دادم که یک متغییر اصلی هست و یک متغییر سیو که برای سیو کردن داده های فرستاده شده از طرف کاربر


q,w,e=&quot &quot,&quot &quot,&quot &quot a,s,d=&quot &quot,&quot &quot,&quot &quot z,x,c=&quot &quot,&quot &quot,&quot &quot qsave,wsave,esave=&quot &quot,&quot &quot,&quot &quot asave,ssave,dsave=&quot &quot,&quot &quot,&quot &quot zsave,xsave,csave=&quot &quot,&quot &quot,&quot &quot

بعدش یک متغییر nowt تعریف کردم که خونه ای که الان کاراکترومون هست توش رو ذخیره می کنه و همین طور یک متغییر دیگه که کاراکتری که الان انتخاب و داره باش بازی می شه رو در خودش نگه می داره

nowt = 1 nowcharakter = dayere

خب بریم سراغ اصل کاری من چند تا فانکشن تعریف کردم که هر کدوم برای جابجا کردن کاراکتروم استفاده می شن البته چون ما قرار جای کاراکتر از روی nowt بخونیم پس این فانکشن ها فقط مقدار اون رو تغییر می دن

key = 0 def move1(): global nowt global key key += 1 if key == 1 : if nowt+1 <= 9: nowt +=1 if nowt == 1 : if qsave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 2 : if wsave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 3 : if esave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 4 : if asave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 5 : if ssave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 6 : if dsave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 7 : if zsave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 8 : if xsave != &quot &quot and nowt+1 <= 9: nowt += 1 if nowt == 9 : if csave != &quot &quot and nowt+1 <= 9: nowt += 1 def move_1(): global nowt global key key += 1 if key == 1 : if nowt-1 >= 1: nowt -=1 if nowt == 1 : if qsave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 2 : if wsave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 3 : if esave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 4 : if asave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 5 : if ssave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 6 : if dsave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 7 : if zsave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 8 : if xsave != &quot &quot and nowt-1 >=1: nowt -= 1 if nowt == 9 : if csave != &quot &quot and nowt-1 >=1: nowt -= 1 def move2(): global nowt global key key += 1 if key == 1 : if nowt+3 <= 9: nowt +=3 if nowt == 1 : if qsave != &quot &quot: nowt -= 3 if nowt == 2 : if wsave != &quot &quot: nowt -= 3 if nowt == 3 : if esave != &quot &quot: nowt -= 3 if nowt == 4 : if asave != &quot &quot: nowt -= 3 if nowt == 5 : if ssave != &quot &quot: nowt -= 3 if nowt == 6 : if dsave != &quot &quot: nowt -= 3 if nowt == 7 : if zsave != &quot &quot: nowt -= 3 if nowt == 8 : if xsave != &quot &quot: nowt -= 3 if nowt == 9 : if csave != &quot &quot: nowt -= 3 def move_2(): global nowt global key key += 1 if key == 1 : if nowt-3 >= 1: nowt -=3 if nowt == 1 : if qsave != &quot &quot: nowt += 3 if nowt == 2 : if wsave != &quot &quot: nowt += 3 if nowt == 3 : if esave != &quot &quot: nowt += 3 if nowt == 4 : if asave != &quot &quot: nowt += 3 if nowt == 5 : if ssave != &quot &quot: nowt += 3 if nowt == 6 : if dsave != &quot &quot: nowt += 3 if nowt == 7 : if zsave != &quot &quot: nowt += 3 if nowt == 8 : if xsave != &quot &quot: nowt += 3 if nowt == 9 : if csave != &quot &quot: nowt += 3


البته یک متغغیر key هم ادد کردم که کارش اینه که کاربر دکمه مثلا w رو فشار داد 100 تا w نخونه برنامه و فقط یک w خونده شه

بعدش یک فانکش enter ادد کردم که کارش سیو کردن جایی که کاربر کاراکترش رو می خواد بزاره

def enter(): global nowt global key global qsave,wsave,esave,asave,ssave,dsave,zsave,xsave,csave global nowcharakter key += 1 if key == 1 : if nowt == 1 : qsave = nowcharakter if nowt == 2 : wsave = nowcharakter if nowt == 3 : esave = nowcharakter if nowt == 4 : asave = nowcharakter if nowt == 5 : ssave = nowcharakter if nowt == 6 : dsave = nowcharakter if nowt == 7 : zsave = nowcharakter if nowt == 8 : xsave = now charakter if nowt == 9 :csave = nowcharakter if (nowcharakter == dayere): nowcharakter = zabdar else: if (nowcharakter == zabdar): nowcharakter = dayere nowt = 1

خب تا اینجا که برنامه کاری نمی کنه حالا وقت ساخت رابط تقریبا گرافیکی

که اگر خودتون بدونید کل برنامه های گرافیک محور داخل حلقه هستن چون همیشه دارن تغییر می کنن

برای مثال حتی ویندوز هم داخل حلقه هست نگرنه شما نمی تونستید موس رو تکون بدید و...

برای من یک حلقه تعریف کردم و با شرط گزاشتن برای برنامه گفتم که موقعیت کاراکتر رو بگیره و نمایش بده و همین طور کاراکتر های سیو شده

while(1): os.system('cls') keyboard.add_hotkey('d', lambda: move1()) keyboard.add_hotkey('a', lambda: move_1()) keyboard.add_hotkey('s', lambda: move2()) keyboard.add_hotkey('w', lambda: move_2()) keyboard.add_hotkey('enter', lambda: enter()) if(nowt <=3 ): if(nowt == 1): q = nowcharakter w,e=wsave,esave a,s,d=asave,ssave,dsave z,x,c=zsave,xsave,csave if(nowt ==2): w = nowcharakter q,e=qsave,esave a,s,d=asave,ssave,dsave z,x,c=zsave,xsave,csave if(nowt == 3): e = nowcharakter q,w=qsave,wsave a,s,d=asave,ssave,dsave z,x,c=zsave,xsave,csave print(f&quot&quot&quot {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} &quot&quot&quot) else: if(nowt <= 6 ): if(nowt == 4): a = nowcharakter q,w,e=qsave,wsave,esave s,d=ssave,dsave z,x,c=zsave,xsave,csave if(nowt ==5): s = nowcharakter q,w,e=qsave,wsave,esave a,d=asave,dsave z,x,c=zsave,xsave,csave if(nowt == 6): d = nowcharakter q,w,e=qsave,wsave,esave s,a=ssave,asave z,x,c=zsave,xsave,csave print(f&quot&quot&quot {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} &quot&quot&quot) else: if(nowt <=9): if(nowt == 7): z = nowcharakter q,w,e=qsave,wsave,esave a,s,d=asave,ssave,dsave x,c=xsave,csave if(nowt ==8): x = nowcharakter q,w,e=qsave,wsave,esave a,s,d=asave,ssave,dsave z,c=zsave,csave if(nowt == 9): c = nowcharakter q,w,e=qsave,wsave,esave a,s,d=asave,ssave,dsave x,z=xsave,zsave print(f&quot&quot&quot {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} &quot&quot&quot) if (qsave+wsave+esave == &quotooo&quot or asave+ssave+dsave == &quotooo&quot or zsave+xsave+csave == &quotooo&quot or qsave+asave+zsave == &quotooo&quot or wsave+ssave+xsave == &quotooo&quot or esave+dsave+csave == &quotooo&quot or qsave+ssave+csave == &quotooo&quot or esave+ssave+zsave == &quotooo&quot): print(&quotdayere bord&quot) time.sleep(5) break if (qsave+wsave+esave == &quotxxx&quot or asave+ssave+dsave == &quotxxx&quot or zsave+xsave+csave == &quotxxx&quot or qsave+asave+zsave == &quotxxx&quot or wsave+ssave+xsave == &quotxxx&quot or esave+dsave+csave == &quotxxx&quot or qsave+ssave+csave == &quotxxx&quot or esave+ssave+zsave == &quotxxx&quot): print(&quotzabdar bord&quot) time.sleep(5) break time.sleep(0.4) key = 0

خب اخرش هم تعریف کردم که اگر در حالت هایی که دوز رو برنده می شی تو برنامه پیش اومد طرف رو برنده کن و یک پیام نمایش بده و حلقه رو بشکون یا راحت اینکه بعد 5 ثانیه برنامه رو ببند


و این هم از برنامه زیبای دوز ما

اگر خوشتون اومد پست لایک کنید ❤

و اگر خواستی یک کامنت انرژی بخش هم برام بزار ?

سورس برنامه رو می زارم هرکی خواست بره دانلود کنه

و اگر هم می خواید اموزش چگونگی ساخت دوز انلاین با پایتون با همین فرمت رو بزارم حتما تو کامنت ها بنویسید



  • سورس
https://s18.picofile.com/file/8441007426/dooz.py.html


- به پست های دیگرم هم یک سر بزن

https://virgool.io/@alirezaf999.iran/%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-%D9%85%D8%B3%D8%AA%D8%B7%DB%8C%D9%84-%D8%A8%D8%A7-c-arolcobejvfz




پایتونساخت بازی
سلام من علیرضام یک برنامه نویس
شاید از این پست‌ها خوشتان بیاید