Игра «Камень, ножницы, бумага» — это одна из самых простых и популярных логических игр, которая знакома почти каждому. Несмотря на свою простоту, она остается увлекательной и интересной, способной развлечь как детей, так и взрослых. Эта игра требует от участников быстрого выбора одного из трех элементов — камня, ножниц или бумаги — и может служить не только средством развлечения, но и интересным упражнением для развития логического мышления. В наше время программирования и компьютерных технологий создание компьютерных версий классических игр стало распространенной практикой. В данной статье мы поговорим о создании программы «Камень, ножницы, бумага» на различных языках программирования.
Теория
Алгоритм программы для игры «Камень, ножницы, бумага» может быть довольно простым. Вот основные шаги, которые вы можете использовать для создания такой программы:
- Инициализация переменных. Создайте переменные для представления выбора пользователя и выбора компьютера. В этой игре у нас три возможных варианта: камень, ножницы и бумага. Вы можете использовать целые числа или строки для представления этих вариантов.
- Получение выбора пользователя. Запросите у пользователя его выбор (камень, ножницы или бумага). В большинстве случаев это можно сделать через ввод с клавиатуры.
- Генерация случайного выбора компьютера. Для выбора компьютера случайным образом сгенерируйте число от 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();