خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

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

این آموزش بازی ساده به شما کمک می کند اصول برنامه نویسی پایتون را تمرین کنید.

ایجاد یک بازی “سنگ، کاغذ، قیچی” در پایتون یک راه عالی برای افزایش مهارت های برنامه نویسی شما است. می توانید بازی را با یک اسکریپت پایتون ایجاد کنید و آن را در خط فرمان بازی کنید.

بازی با درخواست از بازیکن برای انتخاب خود شروع می شود: “سنگ”، “کاغذ” یا “قیچی”. سپس منتظر می ماند تا آنها پاسخ خود را وارد کنند. شما می توانید بازی را در برابر یک بازیکن “رایانه” بازی کنید، که به طور خودکار حرکت خود را انتخاب می کند.

بازی همچنین می تواند شامل دورهای زیادی باشد. بنابراین حتی اگر در دور اول شکست بخورید، باز هم می توانید برای بردن دو از سه برنده شوید!

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

هنگامی که بازی شروع می شود، برنامه پایتون باید از بازیکن بخواهد که “راک”، “کاغذ” یا “قیچی” را وارد کند و پاسخ بازیکن را بگیرد. برای راه اندازی یک بازی جدید، با ایجاد یک فایل پایتون جدید با پسوند py شروع کنید.

کد کامل این آموزش در یک مخزن GitHub موجود است.

  1. یک فایل جدید به نام RockPaperScissors.py ایجاد کنید.
  2. فایل جدید پایتون را با استفاده از هر ویرایشگر متنی مانند Notepad++ یا Visual Studio Code باز کنید.
  3. در بالای فایل، ماژول تصادفی را وارد کنید. بعداً در بازی از این برای انتخاب تصادفی حرکتی برای نوبت کامپیوتر استفاده خواهید کرد. واردات تصادفی
  4. یک پیام به بازیکن ارائه دهید و از آنها بخواهید سنگ، کاغذ یا قیچی را وارد کنند. userChoice = ورودی (“سنگ، کاغذ یا قیچی؟”).lower()
  5. آرایه‌ای به نام «moveOptions» را راه‌اندازی کنید که فهرستی از حرکات موجود را که شما یا رایانه می‌توانید اجرا کنید، ذخیره می‌کند. moveOptions = [‘سنگ’، ‘کاغذ’، ‘قیچی’]
  6. وقتی بازیکن ورودی را وارد می کند، آن را تأیید کنید تا مطمئن شوید که یکی از حرکات موجود است. هنگامی که بازیکن یک حرکت معتبر را وارد کرد، یک پیام تأیید چاپ کنید. while (userChoice نه در moveOptions):    userChoice = ورودی (“انتخاب نامعتبر. باید سنگ، کاغذ یا قیچی باشد: “).lower() print(“”)print(f”شما {userChoice} را انتخاب کردید.”)

import random

userChoice = input("Rock, paper, or scissors? ").lower()

moveOptions = ['rock', 'paper', 'scissors']

while (userChoice not in moveOptions):
    userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()
 
print("")
print(f"You chose {userChoice}.")

نحوه انجام نوبت با کامپیوتر و مقایسه حرکات

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

  1. از ماژول تصادفی برای وادار کردن رایانه به انتخاب تصادفی از لیست حرکات موجود استفاده کنید. computerChoice = random.choice(moveOptions)print(f”کامپیوتر {computerChoice} را انتخاب کرد.”)
  2. برای تعیین اینکه چه کسی برنده شده است، باید حرکت خود را با حرکت رایانه مقایسه کنید. شما می توانید این کار را با ایجاد یک فرهنگ لغت جدید انجام دهید. این فرهنگ لغت شامل هر حرکت (به عنوان مثال، “سنگ”)، و حرکتی است که برنده یا باخته است (به عنوان مثال، “سنگ” بر “قیچی” می زند و به “کاغذ” می بازد). moves = {    ‘rock’: { ‘beats’: ‘scissors’, ‘losesTo’: ‘paper’ },    ‘scissors’: { ‘beats’: ‘paper’, ‘losesTo’: ‘rock’ },    ‘paper’ : { ‘beats’: ‘rock’, ‘losesTo’: ‘scissors’ },}
  3. از دستور Python if استفاده کنید تا بررسی کنید آیا حرکت شما و حرکت کامپیوتر منجر به تساوی می شود یا خیر. در غیر این صورت، از فرهنگ لغت حرکت ها برای مقایسه حرکت بازیکن با حرکت کامپیوتر استفاده کنید. if userChoice == computerChoice:    print(f”هم شما و هم رایانه {userChoice} را انتخاب کردید. این یک مساوی است!”)دیگر:    if (moves[userChoice][‘beats’] == computerChoice):         print(f”{userChoice } {computerChoice} را شکست می دهد. شما برنده می شوید!”)     if (moves[userChoice][‘losesTo’] == computerChoice):         print(f”{userChoice} باخت به {computerChoice}. کامپیوتر برنده می شود!”) به عنوان مثال، اگر “راک” را انتخاب کنید، ارزش حرکت [userChoice][‘beats’] “قیچی” خواهد بود. اگر انتخاب کامپیوتر “قیچی” بود، به این معنی است که حرکت شما بر حرکات آنها ضربه می زند.

computerChoice = random.choice(moveOptions)
print(f"The computer chose {computerChoice}.")

moves = {
    'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
    'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
    'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
}

if userChoice == computerChoice:
    print(f"Both you and the computer chose {userChoice}. It's a tie!")
else:
    if (moves[userChoice]['beats'] == computerChoice):
        print(f"{userChoice} beats {computerChoice}. You win!")
 
    if (moves[userChoice]['losesTo'] == computerChoice):
        print(f"{userChoice} loses to {computerChoice}. The computer wins!")

چگونه امتیاز را بین بازیکن و رایانه بین چند راند حفظ کنیم

همچنین می‌توانید دورهای اضافی اضافه کنید، جایی که شما و رایانه هر کدام سه نوبت انجام دهید.

مطلب مرتبط:   17 نمونه کد HTML ساده که می توانید در 10 دقیقه یاد بگیرید

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

  1. کد فعلی نشان دهنده یک دور چرخش است که هم توسط بازیکن و هم کامپیوتر انجام شده است. تمام کدهای فعلی را به جز دستور import در تابع ()turn جدید اضافه کنید. همچنین می‌توانید پیام‌های خروجی را بر این اساس تغییر دهید، به‌جای «شما برنده می‌شوید» برای گفتن «شما در این دور برنده می‌شوید»: def turn():    userChoice = input(«سنگ، کاغذ یا قیچی؟»).lower()    moveOptions = [ «سنگ»، «کاغذ»، «قیچی»]    در حالی که (userChoice در moveOptions نیست):        userChoice = ورودی (“انتخاب نامعتبر. باید سنگ، کاغذ یا قیچی باشد: “).lower()    print(“)    print( f”شما {userChoice} را انتخاب کردید.”)    computerChoice = random.choice(moveOptions)    print(f”کامپیوتر {computerChoice} را انتخاب کرد.”)    moves = {    ‘rock’: { ‘beats’: ‘scissors’, ‘losesTo’ : ‘paper’ },    ‘scissors’: { ‘beats’: ‘paper’, ‘losesTo’: ‘rock’ },    ‘paper’: { ‘beats’: ‘rock’, ‘losesTo’: ‘scisors’ }, }    if userChoice == computerChoice:         print (f”هم شما و هم رایانه {userChoice} را انتخاب کردید. این یک مساوی است!”)    دیگر:          if (moves[userChoice][‘beats’] =    ComputerChoice (f    Print). userChoice} بر {computerChoice} می‌رود. شما در این دور برنده می‌شوید!”)         if (moves[userChoice][‘losesTo’] == computerChoice):            print(f”{userChoice} به {computerChoice} می‌بازد. کامپیوتر برنده است!”)
  2. بازیکن و کامپیوتر هر کدام سه نوبت می‌کنند. یک متغیر سراسری به نام “turns” در بالای فایل اضافه کنید. نوبت = 3
  3. بعد از تابع turn() از یک حلقه Python for استفاده کنید تا دور را سه بار تکرار کنید. در ابتدای هر دور، عدد دور را چاپ کنید. تابع turn() را فراخوانی کنید تا از بازیکن و رایانه بخواهید که حرکات خود را برای آن دور انجام دهند. برای i در محدوده(چرخش):    print(“”)    print(f”— دور {i+1}: —“)    turn()
  4. برای پیگیری اینکه چه کسی در هر دور پیروز شده است، یک متغیر امتیاز برای هر بازیکن در بالای فایل اضافه کنید. شما مقادیری را به این متغیرها در تابع turn() اختصاص خواهید داد، بنابراین مطمئن شوید که از آنها به عنوان متغیرهای سراسری استفاده می کنید. computerScore = 0playerScore = 0def turn():     global computerScore, playerScore
  5. در داخل تابع turn()، هنگامی که بازیکن و رایانه حرکت خود را انجام دادند، یک امتیاز به امتیاز برنده اضافه کنید. دستور if را تغییر دهید تا مقدار متغیر “playerScore” یا “computerScore” را افزایش دهید. if (moves[userChoice][‘beats’] == computerChoice):    print(f”{userChoice} بر {computerChoice} می‌زند. شما در این دور برنده می‌شوید!”)    playerScore += 1if (Moves[userChoice][‘losesTo’] = = computerChoice):    print(f”{userChoice} به {computerChoice} باخت. رایانه برنده است!”)    computerScore += 1
  6. در پایان تابع turn() یک به روز رسانی برای کل امتیازات برای هر بازیکن چاپ کنید. # چاپ یک به‌روزرسانی از کل امتیازات پس از چاپ گرد(“”) چاپ (f”SCOREBOARD | امتیاز بازیکن: {playerScore} | امتیاز رایانه: {computerScore}”)
  7. در پایان بازی و بعد از حلقه for که چرخش بازیکن و کامپیوتر را تکرار می کند، برنده نهایی را چاپ کنید. print(“”)if (computerScore > playerScore):    print(f”کامپیوتر با {computerScore} امتیاز برنده می‌شود!”)elif (playerScore > computerScore):    print(f”شما با {playerScore} امتیاز برنده می‌شوید!”)دیگر: print (f”این یک مساوی است! هر دو با امتیاز {playerScore} برنده می شوید!”)

def turn():
    userChoice = input("Rock, paper, or scissors? ").lower()

    moveOptions = ['rock', 'paper', 'scissors']

    while (userChoice not in moveOptions):
        userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()

    print("")
    print(f"You chose {userChoice}.")

    computerChoice = random.choice(moveOptions)
    print(f"The computer chose {computerChoice}.")

    moves = {
    'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
    'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
    'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
    }

    if userChoice == computerChoice:
        print(f"Both you and the computer chose {userChoice}. It's a tie!")
    else:
        if (moves[userChoice]['beats'] == computerChoice):
            print(f"{userChoice} beats {computerChoice}. You win this round!")

        if (moves[userChoice]['losesTo'] == computerChoice):
            print(f"{userChoice} loses to {computerChoice}. The computer wins!")

turns = 3

for i in range(turns):
    print("")
    print(f"--- Round {i+1}: ---")
    turn()

computerScore = 0
playerScore = 0

def turn():
    global computerScore, playerScore

if (moves[userChoice]['beats'] == computerChoice):
    print(f"{userChoice} beats {computerChoice}. You win this round!")
    playerScore += 1

if (moves[userChoice]['losesTo'] == computerChoice):
    print(f"{userChoice} loses to {computerChoice}. The computer wins!")
    computerScore += 1

# Print an update on the total scores after the round
print("")
print(f"SCOREBOARD | Player's score: {playerScore} | Computer's score: {computerScore}")

print("")

if (computerScore > playerScore):
    print(f"The computer wins with {computerScore} points!")
elif (playerScore > computerScore):
    print(f"You win with {playerScore} points!")
else:
    print(f"It's a tie! You both win with {playerScore} points!")

چگونه بازی را اجرا کنیم

برای انجام بازی، اسکریپت پایتون را با استفاده از ترمینال یا خط فرمان اجرا کنید. حرکت خود را وارد کنید و منتظر بمانید تا کامپیوتر مال آنها را بسازد. پس از اتمام سه دور، برنامه برنده را نشان می دهد.

  1. یک خط فرمان یا ترمینال را باز کنید و به پوشه ای که فایل پایتون خود را در آن ذخیره می کنید بروید.
  2. از دستور python برای اجرای اسکریپت استفاده کنید: python RockPaperScissors.py
  3. بازی را با وارد کردن «راک»، «کاغذ» یا «قیچی» انجام دهید.

python RockPaperScissors.py

معرفی بازی Rock Paper Scissors در خط فرمانگیم پلی Rock Paper Scissors در خط فرمان

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

ایجاد بازی های ساده مانند بازی «سنگ، کاغذ، قیچی» یک راه عالی برای آشنایی بیشتر با مفاهیم برنامه نویسی است. بسیاری از بازی های سرگرم کننده دیگر وجود دارد که می توانید با استفاده از پایتون بسازید، مانند یک بازی ماجراجویی مبتنی بر متن.

مطلب مرتبط:   نحوه استفاده از GitBook برای اسناد API