نکته با فیلتر شکن وارد شوید تا ویدیو نمایش داده شود
سلام ..
خب بعد مدت ها برگشتم با یک مطلب خسته چرا خسته چون که قرار یک بازی دوز تحت کنسول با پایتون بسازیم که یک چیز سادس ولی چالش های خودش رو هم داره اول از همه فایل پایتونمون رو می سازیم ☺
من خودم می خواستم بازی دوز جوری طراحی کنم که با دکمه های W,A,S,D بشه علامت دایره و ضربدر رو جابجا کرد برای همین از کتابخونه keyboard استفاده کردم
خب اول از همه کتابخونه هارو ادد کردم
import os import keyboard import time
کتابخونه os برای پاک کردن صفحه و keyboard هم که بالاتر گفتم و تایم هم برای صبر کردن برنامه برای یک سری عملیات ها
ما قرار دوزمون به شکل فورمت زیر در کنسول نمایش بدیم
0|1|+ -------- 1|0|+ --------- 0|1|0 +|+|+ -------- +|+|+ -------- +|+|+
خب بریم سراغ ادامه کار
اول کاراکتر های بازی دوز رو تعریف می کنم
dayere = "o" zabdar = "x"
که بعدا راحت تر ازشون استفاده کنیم
بعدش من به هر خونه دروز یک متغییر اختصاص دادم که یک متغییر اصلی هست و یک متغییر سیو که برای سیو کردن داده های فرستاده شده از طرف کاربر
q,w,e=" "," "," " a,s,d=" "," "," " z,x,c=" "," "," " qsave,wsave,esave=" "," "," " asave,ssave,dsave=" "," "," " zsave,xsave,csave=" "," "," "
بعدش یک متغییر 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 != " " and nowt+1 <= 9: nowt += 1 if nowt == 2 : if wsave != " " and nowt+1 <= 9: nowt += 1 if nowt == 3 : if esave != " " and nowt+1 <= 9: nowt += 1 if nowt == 4 : if asave != " " and nowt+1 <= 9: nowt += 1 if nowt == 5 : if ssave != " " and nowt+1 <= 9: nowt += 1 if nowt == 6 : if dsave != " " and nowt+1 <= 9: nowt += 1 if nowt == 7 : if zsave != " " and nowt+1 <= 9: nowt += 1 if nowt == 8 : if xsave != " " and nowt+1 <= 9: nowt += 1 if nowt == 9 : if csave != " " 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 != " " and nowt-1 >=1: nowt -= 1 if nowt == 2 : if wsave != " " and nowt-1 >=1: nowt -= 1 if nowt == 3 : if esave != " " and nowt-1 >=1: nowt -= 1 if nowt == 4 : if asave != " " and nowt-1 >=1: nowt -= 1 if nowt == 5 : if ssave != " " and nowt-1 >=1: nowt -= 1 if nowt == 6 : if dsave != " " and nowt-1 >=1: nowt -= 1 if nowt == 7 : if zsave != " " and nowt-1 >=1: nowt -= 1 if nowt == 8 : if xsave != " " and nowt-1 >=1: nowt -= 1 if nowt == 9 : if csave != " " 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 != " ": nowt -= 3 if nowt == 2 : if wsave != " ": nowt -= 3 if nowt == 3 : if esave != " ": nowt -= 3 if nowt == 4 : if asave != " ": nowt -= 3 if nowt == 5 : if ssave != " ": nowt -= 3 if nowt == 6 : if dsave != " ": nowt -= 3 if nowt == 7 : if zsave != " ": nowt -= 3 if nowt == 8 : if xsave != " ": nowt -= 3 if nowt == 9 : if csave != " ": 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 != " ": nowt += 3 if nowt == 2 : if wsave != " ": nowt += 3 if nowt == 3 : if esave != " ": nowt += 3 if nowt == 4 : if asave != " ": nowt += 3 if nowt == 5 : if ssave != " ": nowt += 3 if nowt == 6 : if dsave != " ": nowt += 3 if nowt == 7 : if zsave != " ": nowt += 3 if nowt == 8 : if xsave != " ": nowt += 3 if nowt == 9 : if csave != " ": 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""" {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} """) 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""" {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} """) 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""" {q}|{w}|{e} ----- {a}|{s}|{d} ----- {z}|{x}|{c} """) if (qsave+wsave+esave == "ooo" or asave+ssave+dsave == "ooo" or zsave+xsave+csave == "ooo" or qsave+asave+zsave == "ooo" or wsave+ssave+xsave == "ooo" or esave+dsave+csave == "ooo" or qsave+ssave+csave == "ooo" or esave+ssave+zsave == "ooo"): print("dayere bord") time.sleep(5) break if (qsave+wsave+esave == "xxx" or asave+ssave+dsave == "xxx" or zsave+xsave+csave == "xxx" or qsave+asave+zsave == "xxx" or wsave+ssave+xsave == "xxx" or esave+dsave+csave == "xxx" or qsave+ssave+csave == "xxx" or esave+ssave+zsave == "xxx"): print("zabdar bord") time.sleep(5) break time.sleep(0.4) key = 0
خب اخرش هم تعریف کردم که اگر در حالت هایی که دوز رو برنده می شی تو برنامه پیش اومد طرف رو برنده کن و یک پیام نمایش بده و حلقه رو بشکون یا راحت اینکه بعد 5 ثانیه برنامه رو ببند
و این هم از برنامه زیبای دوز ما
اگر خوشتون اومد پست لایک کنید ❤
و اگر خواستی یک کامنت انرژی بخش هم برام بزار ?
سورس برنامه رو می زارم هرکی خواست بره دانلود کنه
و اگر هم می خواید اموزش چگونگی ساخت دوز انلاین با پایتون با همین فرمت رو بزارم حتما تو کامنت ها بنویسید