Gameبرنامه نویسیپایتون

نحوه ساخت بازی سنگ کاغذ قیچی در پایتون

چگونه بازی سنگ کاغذ قیچی را در پایتون بسازیم؟

در این مقاله قصد داریم بازی سنگ کاغذ قیچی را با استفاده از تابع (function) زبان برنامه نویسی پایتون درست کنیم. بازی ما بر اساس قوانین بازی Rock Paper Scissors اصلی خواهد بود. ما از کاربر درخواست ورودی خواهیم کرد و سپس از کامپیوتر می خواهیم که به طور تصادفی از بین Rock ، Paper و Scissors یکی را انتخاب کند. سپس ورودی کاربر را با انتخاب رایانه مقایسه می کنیم و سپس از طریق مقایسه های شرطی، مشخص میکنیم که چه کسی برنده است.

کدهای اصلی برنامه

بازی سنگ کاغذ قیچی در پایتون

برای شروع اول باید ماژول random را فراخوانی کنیم.

import random

یک تابع میسازیم و اسم آن را check_win می گزاریم و دو پارامتر به آن میدهیم ، پارامتر user نشان دهنده ورودی ارائه شده توسط کاربر و پارامتر کامپیوتر نشان دهنده انتخابی است که توسط دستگاه ما انجام می شود.

در این تابع از دستور if استفاده می کنیم که از & و یا عملگر or برای یافتن برنده استفاده می کند. این عبارت برنده بودن یا نبودن کاربر را بررسی کند ، در صورت برنده شدن کاربر ، تابع خروجی را نشان نمی دهد.

def check_win(user, computer):
    if (user == 'r' and computer == 's') or (user == 's' and computer == 'p') or (user == 'p' and computer == 'r'):
        return True

در مرحله بعد ما تابعی به نام rock_paper_scissors () ایجاد کرده ایم. این تابع ، هسته اصلی بازی ما خواهد بود.

ابتدا ، ما از کاربر ورودی را دریافت می کنیم. در اینجا کاربر می تواند فقط از طریق  r ،  s یا p ورودی وارد کند که به ترتیب سنگ ، قیچی و کاغذ است. اکنون ورودی کاربر در متغیر player کننده ذخیره شده است.

def rock_paper_scissors():
    player = input("What is your choice - 'r' for rock, 's' for scissor, 'p' for paper: ")
    choices = ['r','s','p']

حال ما می خواهیم از تابع random.choice () برای انتخاب تصادفی یک عنصر واحد از میان لیست ها استفاده کنیم.

  کارهایی که دستور if انجام میدهد:

  • اولین if ، مقایسه بین ورودی player و opponent انجام می دهد تا اگر انتخاب کاربر و کامپیوتر یکسان بود ، بگوید که بازی مساوی شده است. در این حالت هیچ برنده ای وجود ندارد.
    if player == opponent:
        return print(f"Its a Tie! Choice is {opponent}")
  • در دستور if دوم ، ما برای تعیین برنده از تابع check_win () استفاده می کنیم. اگر بازیکن برنده شود ، check_win () یک True را برمی گرداند و کاربر به عنوان برنده معرفی می شود.
    if check_win(player, opponent):
        return print(f"Yay! you won! Choice is {opponent}")
  • دستور if سوم به همان صورت دستور if دوم عمل می کند ، تنها تفاوت در این است که اگر check_win () چیزی را بر نمی گرداند که در صورت کامپیوتر به عنوان برنده اعلام خواهد شد.
    if check_win(player, opponent) != True:
        return print(f"You lost! Choice is {opponent}")

و در آخر برای اجرا برنامه خود تابع rock_paper_scissors() را فراخوانی می کنیم.

rock_paper_scissors()

علی پازکی

علاقه مند به حوزه امنیت و تکنولوژی

‫2 دیدگاه ها

  1. یه سوال …
    اگه بخوایم همیشه طرف رایانه برنده اعلام بشه باید چیکار کنیم؟
    چه کدی بنویسیم؟

    1. سلام،
      در تابع check_win، جابجایی شرط برای تعیین برنده را انجام دهید. به جای:
      if (user == 'r' and computer == 's') or (user == 's' and computer == 'p') or (user == 'p' and computer == 'r'):
      return True

      می‌توانید شرط زیر را استفاده کنید:
      if (computer == 'r' and user == 's') or (computer == 's' and user == 'p') or (computer == 'p' and user == 'r'):
      return True

      در تابع rock_paper_scissors، تغییراتی را برای اعمال استراتژی کامپیوتر در نظر بگیرید. برای مثال، می‌توانید کامپیوتر همیشه سنگ را انتخاب کند. برای این کار، کد زیر را قبل از خط opponent = random.choice(choices) اضافه کنید:
      opponent = 'r'
      با اعمال این تغییرات، هرگاه شما گزینه خود را وارد کنید، کامپیوتر همیشه سنگ را انتخاب خواهد کرد و در نتیجه همیشه برنده خواهد بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


دکمه بازگشت به بالا