Программа «Камень, ножницы, бумага»

Игра «Камень, ножницы, бумага» — это одна из самых простых и популярных логических игр, которая знакома почти каждому. Несмотря на свою простоту, она остается увлекательной и интересной, способной развлечь как детей, так и взрослых. Эта игра требует от участников быстрого выбора одного из трех элементов — камня, ножниц или бумаги — и может служить не только средством развлечения, но и интересным упражнением для развития логического мышления. В наше время программирования и компьютерных технологий создание компьютерных версий классических игр стало распространенной практикой. В данной статье мы поговорим о создании программы «Камень, ножницы, бумага» на различных языках программирования.

Теория

Алгоритм программы для игры «Камень, ножницы, бумага» может быть довольно простым. Вот основные шаги, которые вы можете использовать для создания такой программы:

  • Инициализация переменных. Создайте переменные для представления выбора пользователя и выбора компьютера. В этой игре у нас три возможных варианта: камень, ножницы и бумага. Вы можете использовать целые числа или строки для представления этих вариантов.
  • Получение выбора пользователя. Запросите у пользователя его выбор (камень, ножницы или бумага). В большинстве случаев это можно сделать через ввод с клавиатуры.
  • Генерация случайного выбора компьютера. Для выбора компьютера случайным образом сгенерируйте число от 1 до 3 (где 1 — камень, 2 — ножницы, 3 — бумага). В разных языках программирования это можно сделать с использованием функций или библиотек для генерации случайных чисел.
  • Сравнение выборов и определение победителя. Напишите код, который сравнивает выбор пользователя и выбор компьютера, чтобы определить победителя или объявить ничью. Например, камень побеждает ножницы, ножницы побеждают бумагу, а бумага побеждает камень.
  • Вывод результатов игры. Выведите результат игры на экран, сообщив пользователю, кто выиграл или была ничья.
  • Повтор игры (по желанию). Спросите пользователя, хочет ли он сыграть ещё одну игру, и, если да, вернитесь к шагу 2.

Это общий алгоритм, который можно реализовать на разных языках программирования с небольшими вариациями. Важно учесть, что для создания этой игры вам потребуется знание основ ввода/вывода, условных операторов и генерации случайных чисел в выбранном вами языке программирования.

C++

Программа на C++, реализующая игру «Камень, бумага, ножницы» с использованием инструкции switch и генерации случайных ответов:

#include <iostream>
#include <ctime> // Для генерации случайных чисел
#include <cstdlib> // Для генерации случайных чисел

using namespace std;

int main() {
    // Инициализируем генератор случайных чисел текущим временем
    srand(static_cast<unsigned int>(time(nullptr)));

    int playerChoice;
    int computerChoice;

    cout << "Игра \"Камень, бумага, ножницы\"!" << endl;
    cout << "Выберите: 1 (камень), 2 (бумага), 3 (ножницы): ";
    cin >> playerChoice;

    // Генерируем случайный выбор компьютера (1 - камень, 2 - бумага, 3 - ножницы)
    computerChoice = rand() % 3 + 1;

    // Выводим выбор компьютера
    switch (computerChoice) {
        case 1:
            cout << "Компьютер выбрал: Камень" << endl;
            break;
        case 2:
            cout << "Компьютер выбрал: Бумага" << endl;
            break;
        case 3:
            cout << "Компьютер выбрал: Ножницы" << endl;
            break;
    }

    // Определяем победителя
    if (playerChoice == computerChoice) {
        cout << "Ничья!" << endl;
    } else if ((playerChoice == 1 && computerChoice == 3) ||
               (playerChoice == 2 && computerChoice == 1) ||
               (playerChoice == 3 && computerChoice == 2)) {
        cout << "Вы выиграли!" << endl;
    } else {
        cout << "Компьютер выиграл!" << endl;
    }

    return 0;
}

Эта программа позволяет пользователю вводить свой выбор (1 — камень, 2 — бумага, 3 — ножницы) и генерирует случайный выбор компьютера. Затем она определяет победителя и выводит результат игры. Программа генерирует случайные значения компьютера при каждом запуске благодаря использованию srand и rand.

C#

using System;

namespace RockPaperScissors
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Игра \"Камень, бумага, ножницы\"!");

            while (true)
            {
                Console.Write("Выберите: 1 (камень), 2 (бумага), 3 (ножницы), 0 (выход): ");
                int playerChoice = Convert.ToInt32(Console.ReadLine());

                if (playerChoice == 0)
                {
                    break; // Выход из игры
                }

                if (playerChoice < 1 || playerChoice > 3)
                {
                    Console.WriteLine("Некорректный ввод. Пожалуйста, выберите 1, 2, 3 или 0.");
                    continue;
                }

                int computerChoice = GetRandomComputerChoice();

                Console.WriteLine($"Вы выбрали: {GetChoiceName(playerChoice)}");
                Console.WriteLine($"Компьютер выбрал: {GetChoiceName(computerChoice)}");

                int result = DetermineWinner(playerChoice, computerChoice);

                if (result == 0)
                {
                    Console.WriteLine("Ничья!");
                }
                else if (result == 1)
                {
                    Console.WriteLine("Вы выиграли!");
                }
                else
                {
                    Console.WriteLine("Компьютер выиграл!");
                }
            }
        }

        static int GetRandomComputerChoice()
        {
            Random random = new Random();
            return random.Next(1, 4); // Генерируем случайное число от 1 до 3
        }

        static string GetChoiceName(int choice)
        {
            switch (choice)
            {
                case 1:
                    return "Камень";
                case 2:
                    return "Бумага";
                case 3:
                    return "Ножницы";
                default:
                    return "Неизвестно";
            }
        }

        static int DetermineWinner(int playerChoice, int computerChoice)
        {
            if (playerChoice == computerChoice)
            {
                return 0; // Ничья
            }
            else if ((playerChoice == 1 && computerChoice == 3) ||
                     (playerChoice == 2 && computerChoice == 1) ||
                     (playerChoice == 3 && computerChoice == 2))
            {
                return 1; // Победа игрока
            }
            else
            {
                return -1; // Победа компьютера
            }
        }
    }
}

Python

import random

def get_computer_choice():
    return random.choice(['камень', 'бумага', 'ножницы'])

def determine_winner(player_choice, computer_choice):
    if player_choice == computer_choice:
        return "Ничья!"
    elif (player_choice == 'камень' and computer_choice == 'ножницы') or \
         (player_choice == 'бумага' and computer_choice == 'камень') or \
         (player_choice == 'ножницы' and computer_choice == 'бумага'):
        return "Вы выиграли!"
    else:
        return "Компьютер выиграл!"

def main():
    print("Игра \"Камень, бумага, ножницы\"!")

    while True:
        player_choice = input("Выберите: камень, бумага, ножницы, или введите 'выход' для завершения: ").lower()

        if player_choice == 'выход':
            break

        if player_choice not in ['камень', 'бумага', 'ножницы']:
            print("Некорректный ввод. Пожалуйста, выберите из предложенных вариантов.")
            continue

        computer_choice = get_computer_choice()
        print(f"Вы выбрали: {player_choice}")
        print(f"Компьютер выбрал: {computer_choice}")

        result = determine_winner(player_choice, computer_choice)
        print(result)

if __name__ == "__main__":
    main()

Java

import java.util.Random;
import java.util.Scanner;

public class RockPaperScissors {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();

        String[] choices = {"камень", "бумага", "ножницы"};

        System.out.println("Игра \"Камень, бумага, ножницы\"!");

        while (true) {
            System.out.print("Выберите: камень, бумага, ножницы, или введите 'выход' для завершения: ");
            String playerChoice = scanner.nextLine().toLowerCase();

            if (playerChoice.equals("выход")) {
                break;
            }

            if (!playerChoice.equals("камень") && !playerChoice.equals("бумага") && !playerChoice.equals("ножницы")) {
                System.out.println("Некорректный ввод. Пожалуйста, выберите из предложенных вариантов.");
                continue;
            }

            int computerIndex = random.nextInt(3);
            String computerChoice = choices[computerIndex];

            System.out.println("Вы выбрали: " + playerChoice);
            System.out.println("Компьютер выбрал: " + computerChoice);

            String result = determineWinner(playerChoice, computerChoice);
            System.out.println(result);
        }
    }

    public static String determineWinner(String playerChoice, String computerChoice) {
        if (playerChoice.equals(computerChoice)) {
            return "Ничья!";
        } else if ((playerChoice.equals("камень") && computerChoice.equals("ножницы")) ||
                   (playerChoice.equals("бумага") && computerChoice.equals("камень")) ||
                   (playerChoice.equals("ножницы") && computerChoice.equals("бумага"))) {
            return "Вы выиграли!";
        } else {
            return "Компьютер выиграл!";
        }
    }
}

Pascal

program RockPaperScissors;

var
  userChoice, computerChoice: string;
  randomNumber: integer;
begin
  randomize;
  writeln('Игра "Камень, бумага, ножницы"!');
  
  repeat
    writeln('Выберите: камень, бумага, ножницы, или "выход" для завершения: ');
    readln(userChoice);
    
    if (userChoice = 'выход') then
      break;
    
    randomNumber := random(3);  // Генерация случайного числа от 0 до 2
    
    case randomNumber of
      0: computerChoice := 'камень';
      1: computerChoice := 'бумага';
      2: computerChoice := 'ножницы';
    end;
    
    writeln('Вы выбрали: ', userChoice);
    writeln('Компьютер выбрал: ', computerChoice);
    
    if (userChoice = computerChoice) then
      writeln('Ничья!')
    else if ((userChoice = 'камень') and (computerChoice = 'ножницы')) or
            ((userChoice = 'бумага') and (computerChoice = 'камень')) or
            ((userChoice = 'ножницы') and (computerChoice = 'бумага')) then
      writeln('Вы выиграли!')
    else
      writeln('Компьютер выиграл!');
    
  until false;
  
  writeln('Спасибо за игру!');
end.

JavaScript

function getRandomChoice() {
  const choices = ["камень", "бумага", "ножницы"];
  const randomIndex = Math.floor(Math.random() * choices.length);
  return choices[randomIndex];
}

function determineWinner(userChoice, computerChoice) {
  if (userChoice === computerChoice) {
    return "Ничья!";
  } else if (
    (userChoice === "камень" && computerChoice === "ножницы") ||
    (userChoice === "бумага" && computerChoice === "камень") ||
    (userChoice === "ножницы" && computerChoice === "бумага")
  ) {
    return "Вы победили!";
  } else {
    return "Компьютер победил!";
  }
}

function playGame() {
  const userChoice = prompt(
    "Выберите: камень, бумага или ножницы?"
  ).toLowerCase();
  
  if (!["камень", "бумага", "ножницы"].includes(userChoice)) {
    alert("Неправильный выбор. Пожалуйста, выберите камень, бумагу или ножницы.");
    return;
  }

  const computerChoice = getRandomChoice();
  const result = determineWinner(userChoice, computerChoice);

  alert(`Вы выбрали: ${userChoice}\nКомпьютер выбрал: ${computerChoice}\n${result}`);
}

playGame();

PHP

<?php

function getRandomChoice() {
    $choices = ["камень", "бумага", "ножницы"];
    $randomIndex = rand(0, count($choices) - 1);
    return $choices[$randomIndex];
}

function determineWinner($userChoice, $computerChoice) {
    if ($userChoice === $computerChoice) {
        return "Ничья!";
    } elseif (
        ($userChoice === "камень" && $computerChoice === "ножницы") ||
        ($userChoice === "бумага" && $computerChoice === "камень") ||
        ($userChoice === "ножницы" && $computerChoice === "бумага")
    ) {
        return "Вы победили!";
    } else {
        return "Компьютер победил!";
    }
}

function playGame() {
    $userChoice = strtolower(readline("Выберите: камень, бумага или ножницы? "));

    if (!in_array($userChoice, ["камень", "бумага", "ножницы"])) {
        echo "Неправильный выбор. Пожалуйста, выберите камень, бумагу или ножницы.\n";
        return;
    }

    $computerChoice = getRandomChoice();
    $result = determineWinner($userChoice, $computerChoice);

    echo "Вы выбрали: $userChoice\n";
    echo "Компьютер выбрал: $computerChoice\n";
    echo "$result\n";
}

playGame();
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Давайте поможем друг другу! Если вы нашли ошибку или хотите предложить лучшее решение, пожалуйста, напишите об этом в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *