آموزش ساخت بازی سنگ کاغذ قیچی با پایتون
مقالات
چهارشنبه 06 تیر 1403
جهت مطالعه این مقاله به 10 دقیقه زمان نیاز دارید
آنچه در این مقاله خواهیم خواند:

مقدمه

بازی سنگ، کاغذ، قیچی یک بازی ساده و محبوب است که به راحتی می‌توان آن را با استفاده از زبان برنامه‌نویسی پایتون پیاده‌سازی کرد. در این مقاله، به شما نحوه ساخت این بازی را به صورت گام به گام آموزش خواهیم داد.

 

 

ابزارها و ملزومات

پایتون: مطمئن شوید که پایتون روی سیستم شما نصب شده است. اگر نصب نیست، می‌توانید آن را از سایت رسمی پایتون دانلود و نصب کنید.

یک ویرایشگر متن: می‌توانید از هر ویرایشگر متنی مثل Notepad، Sublime Text، VS Code یا PyCharm استفاده کنید.

 

 

گام‌های پیاده‌سازی

در این بخش، مراحل مختلف ساخت بازی را توضیح خواهیم داد.

تحلیل و توضیح 

 وارد کردن کتابخانه‌ها

     import random, os

   در این خط، کتابخانه‌های random و os وارد شده‌اند. کتابخانه random برای تولید انتخاب تصادفی کامپیوتر استفاده می‌شود و os برای پاکسازی صفحه نمایش کاربرد دارد.

 

تعریف تابع get_user_choice

     def get_user_choice():

       choices = {'r': 'rock', 'p': 'paper', 's': 'scissors'}

       while True:

           user_input = input("Enter your choice (r for rock, p for paper, s for scissors): ").lower()

           if user_input in choices:

               return choices[user_input]

           else:

               print("Invalid input. Please try again.")

   

این تابع برای گرفتن ورودی از کاربر و تبدیل آن به یکی از سه گزینه rock، paper یا scissors طراحی شده است. از دیکشنری choices برای نگاشت حروف r، p و s به مقادیر متناظر استفاده می‌شود. حلقه while True برای اطمینان از گرفتن ورودی صحیح از کاربر تکرار می‌شود.

تعریف تابع get_computer_choice

     def get_computer_choice():

       return random.choice(['rock', 'paper', 'scissors'])

   

این تابع یک انتخاب تصادفی از بین گزینه‌های rock، paper و scissors برای کامپیوتر تولید می‌کند.

 

تعریف تابع chose_winner

   def chose_winner(user, computer):

       if user == computer:

           return "It's a tie!"

       if ((user == 'rock' and computer == 'scissors') or

           (user == 'scissors' and computer == 'paper') or

           (user == 'paper' and computer == 'rock')):

           return "You win!"

       else:

           return "You lose!"

 این تابع نتیجه بازی را بر اساس ورودی‌های کاربر و کامپیوتر تعیین می‌کند. اگر هر دو انتخاب یکسان باشند، نتیجه

It's a tie! (مساوی) برگردانده می‌شود. در غیر این صورت، بر اساس قوانین بازی، برنده مشخص می‌شود.

 

بخش اصلی برنامه

   os.system("cls")

   print("Welcome to Rock-Paper-Scissors Game!")

   user = get_user_choice()

   computer = get_computer_choice()

 

   print(f"\nYou chose: {user}")

   print(f"Computer chose: {computer}")


 

   result = chose_winner(user, computer)

   print(result)

   

این قسمت از کد، بخش اصلی بازی را پیاده‌سازی می‌کند. ابتدا صفحه نمایش با استفاده از os.system("cls") پاکسازی می‌شود و سپس پیام خوش‌آمدگویی چاپ می‌شود. پس از آن، انتخاب کاربر و انتخاب تصادفی کامپیوتر گرفته می‌شود و نتایج چاپ می‌گردد. در نهایت، تابع chose_winner برای تعیین نتیجه بازی فراخوانی می‌شود و نتیجه به کاربر نمایش داده می‌شود.



 

نقاط قوت و ضعف

نقاط قوت:

- سادگی و خوانایی: این کد بسیار ساده و خوانا نوشته شده است. هر بخش از کد وظیفه مشخصی دارد و نام‌گذاری توابع و متغیرها نیز واضح است.

- استفاده از دیکشنری: استفاده از دیکشنری برای نگاشت ورودی کاربر به مقادیر متناظر، کد را کاربرپسندتر و خطایابی را آسان‌تر کرده است.

- ورودی معتبر: حلقه while True در تابع get_user_choice تضمین می‌کند که تنها ورودی‌های معتبر پذیرفته شوند.

 

نقاط ضعف:

- وابستگی به os.system("cls"): استفاده از os.system("cls") تنها در سیستم‌عامل ویندوز کار می‌کند. برای سیستم‌عامل‌های دیگر (مثلاً لینوکس و مک) باید از os.system("clear") استفاده شود. این وابستگی ممکن است باعث ناسازگاری در برخی سیستم‌ها شود.

- پیچیدگی کمتر: کد برای کاربردهای پیشرفته‌تر یا بازی‌های پیچیده‌تر مناسب نیست و نیاز به توسعه بیشتری دارد.

- تعامل محدود: این کد تنها یک دور از بازی را پیاده‌سازی می‌کند. برای پیاده‌سازی بازی چند دوری یا امتیازدهی باید توسعه بیشتری انجام شود.

 


 

پیشنهادات بهبود

چند پلتفرمی کردن پاکسازی صفحه نمایش:

می‌توان از کتابخانه os برای تشخیص سیستم‌عامل و پاکسازی صفحه نمایش به صورت پلتفرم مستقل استفاده کرد:

  

   import os


 

   def clear_screen():

       if os.name == 'nt':

           os.system('cls')

       else:

           os.system('clear')



 

افزودن امکان بازی چند دوری:

   با اضافه کردن حلقه می‌توان بازی را چند دوری کرد و نتایج را جمع‌بندی کرد:

  

   play_again = 'y'

   while play_again.lower() == 'y':

       clear_screen()

       print("Welcome to Rock-Paper-Scissors Game!")

       user = get_user_choice()

       computer = get_computer_choice()


 

       print(f"\nYou chose: {user}")

       print(f"Computer chose: {computer}")


 

       result = chose_winner(user, computer)

       print(result)


 

       play_again = input("Do you want to play again? (y/n): ")

افزودن سیستم امتیازدهی:

می‌توان سیستم امتیازدهی به بازی اضافه کرد تا کاربران بتوانند امتیاز خود را در هر دور مشاهده کنند.



 

گرافیکی کردن بازی: 

می‌توانید با استفاده از کتابخانه‌های گرافیکی مانند Pygame، بازی را به صورت گرافیکی پیاده‌سازی کنید.


 

افزودن امتیاز: 

می‌توانید امتیازدهی را به بازی اضافه کنید تا بازیکن و کامپیوتر برای چندین دور بازی، امتیاز جمع کنند.


 

چند نفره کردن بازی: 

با استفاده از شبکه یا ورودی‌های مختلف، بازی را به صورت چند نفره اجرا کنید.

با کمی خلاقیت و تلاش، می‌توانید این بازی ساده را به یک پروژه جذاب‌تر و پیچیده‌تر تبدیل کنید.



 

نتیجه‌گیری

این کد یک مثال عالی از چگونگی پیاده‌سازی یک بازی ساده با استفاده از پایتون است. این بازی علاوه بر فراهم کردن تفریح، فرصتی برای یادگیری و تمرین مفاهیم پایه‌ای برنامه‌نویسی مانند توابع، حلقه‌ها و ورودی/خروجی فراهم می‌کند. با وجود برخی محدودیت‌ها، این کد قابلیت توسعه و بهبود را دارد که می‌تواند به یک پروژه سرگرم‌کننده و آموزشی برای برنامه‌نویسان مبتدی تبدیل شود.