Создаем Свою Игру Wordle: Подробное Руководство

onion ads platform Ads: Start using Onion Mail
Free encrypted & anonymous email service, protect your privacy.
https://onionmail.org
by Traffic Juicy

Создаем Свою Игру Wordle: Подробное Руководство

Wordle захватил интернет штурмом своей простой, но увлекательной концепцией. Если вы когда-нибудь задумывались о том, как создать свою собственную версию этой популярной игры, вы попали по адресу. В этой статье мы подробно рассмотрим процесс создания Wordle, начиная с основ и заканчивая реализацией рабочего прототипа. Мы рассмотрим основные шаги, необходимые для построения игры, включая выбор слова, обработку пользовательского ввода и отображение результатов. Вы узнаете, как создать функциональную игру Wordle, которую можно будет запускать в браузере.

Что Такое Wordle?

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

Необходимые Инструменты и Знания

Для создания нашей версии Wordle нам понадобятся следующие инструменты и знания:

  • HTML: Для создания структуры игры (разметка элементов, кнопок, полей ввода).
  • CSS: Для стилизации внешнего вида игры (цвета, шрифты, размеры, расположение элементов).
  • JavaScript: Для обработки логики игры (выбор слова, проверка ввода, обновление интерфейса).
  • Базовые знания программирования: Понимание основ программирования поможет вам лучше разобраться в коде и адаптировать его под свои нужды.
  • Текстовый редактор или IDE: (например, VS Code, Sublime Text, Atom) для написания кода.

Для этой статьи мы будем использовать простой текстовый редактор и браузер для проверки результатов. Никаких сложных инструментов не потребуется.

Шаг 1: Создание Структуры HTML

Начнем с создания HTML-структуры для нашей игры. Нам понадобится контейнер для игрового поля, а также элементы для ввода букв и отображения результатов. Вот пример простого HTML-кода:


<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Wordle Clone</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <h1>Wordle</h1>
        <div id="game-board"></div>
        <input type="text" id="guess-input" maxlength="5">
        <button id="guess-button">Проверить</button>
        <div id="message"></div>
    </div>

    <script src="script.js"></script>
</body>
</html>

Разберем этот код:

  • <!DOCTYPE html>: Объявление типа документа HTML5.
  • <html lang="ru">: Корневой элемент HTML-документа с указанием языка «русский».
  • <head>: Контейнер для метаданных документа (заголовок, подключение CSS).
  • <title>Wordle Clone</title>: Заголовок страницы, который отображается во вкладке браузера.
  • <link rel="stylesheet" href="style.css">: Подключение файла стилей CSS.
  • <body>: Основной контент страницы.
  • <div class="container">: Контейнер для всего контента игры.
  • <h1>Wordle</h1>: Заголовок игры.
  • <div id="game-board"></div>: Контейнер для отображения игрового поля (попытки угадывания).
  • <input type="text" id="guess-input" maxlength="5">: Поле ввода для ввода слова.
  • <button id="guess-button">Проверить</button>: Кнопка для отправки введенного слова.
  • <div id="message"></div>: Контейнер для отображения сообщений (например, «Правильно!», «Неверно!»).
  • <script src="script.js"></script>: Подключение файла JavaScript.

Сохраните этот код в файл с именем index.html.

Шаг 2: Стилизация с Помощью CSS

Теперь создадим файл style.css и добавим стили, чтобы наша игра выглядела более привлекательно. Вот пример CSS-кода:


body {
    font-family: sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background-color: #f0f0f0;
}

.container {
    text-align: center;
    background-color: white;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

#game-board {
    display: grid;
    grid-template-rows: repeat(6, 1fr);
    grid-template-columns: repeat(5, 1fr);
    gap: 5px;
    margin: 20px 0;
    max-width: 300px;
}

.letter-box {
    border: 1px solid #ccc;
    height: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 20px;
    text-transform: uppercase;
}

.letter-box.correct {
    background-color: #6aaa64;
    color: white;
    border: none;
}

.letter-box.present {
    background-color: #c9b458;
    color: white;
    border: none;
}

.letter-box.absent {
    background-color: #787c7e;
    color: white;
    border: none;
}

#guess-input {
    padding: 8px;
    margin-bottom: 10px;
    border: 1px solid #ccc;
    border-radius: 4px;
}

#guess-button {
    padding: 10px 15px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

#guess-button:hover {
    background-color: #0056b3;
}

#message {
    margin-top: 10px;
    font-weight: bold;
}


Этот код задает следующие стили:

  • Центрирует контент на странице.
  • Задает стиль для контейнера игры (фон, рамка, тень).
  • Определяет сетку для игрового поля.
  • Стилизует ячейки с буквами (границы, размер, центрирование).
  • Задает стили для ячеек с правильными, присутствующими и отсутствующими буквами (цвета фона и текста).
  • Стилизует поле ввода и кнопку.
  • Задает стиль для сообщений.

Сохраните этот код в файл с именем style.css в той же папке, что и index.html.

Шаг 3: Логика Игры на JavaScript

Теперь самое интересное — добавим логику игры на JavaScript. Создайте файл script.js в той же папке и вставьте в него следующий код:


const words = [
    "слово",
    "кисть",
    "книга",
    "ручка",
    "ветер",
    "море",
    "солнце",
    "небо",
    "земля",
    "стол",
    "стул",
    "окно",
    "дверь",
     "свет",
     "ночь",
    "день",
    "город",
     "лес",
     "река",
      "дом",
       "сад",
      "друг",
       "мир",
      "час",
    "год",
    "печь",
    "сыр",
    "мясо",
    "суп",
    "хлеб",
    "чай",
    "кофе",
    "сок",
    "вода",
   "игры",
   "вино",
   "пиво",
   "кот",
   "пес",
   "утка",
   "рыба",
   "жара",
    "холод",
   "туман",
    "гром",
   "дождь",
    "снег",
    "лед",
    "луна",
    "звезда",
    "роза",
    "трава",
    "лист",
    "парк",
    "пляж",
    "баня",
    "поезд",
    "авто",
    "вело",
   "кран",
  "врач",
    "зуб",
    "мозг",
   "пол",
   "потолок",
   "стена",
   "канал",
   "театр",
    "музей",
    "школа",
    "банк",
    "газ",
    "ток",
    "игла",
    "нить",
    "часы",
    "куст",
    "цвет",
    "шум",
    "вид",
    "вкус",
    "запах",
   "смех",
    "сон",
   "боль",
   "мыло",
   "пыль",
   "грязь",
   "тело",
   "ум",
    "душа",
    "вера",
    "зло",
    "раб",
  "бог"
    
];

let secretWord;
let currentGuess = "";
let guessesRemaining = 6;
let gameBoard = document.getElementById("game-board");
let guessInput = document.getElementById("guess-input");
let guessButton = document.getElementById("guess-button");
let messageDiv = document.getElementById("message");

function startGame() {
    secretWord = words[Math.floor(Math.random() * words.length)];
    console.log("Secret Word:", secretWord);
    gameBoard.innerHTML = ""; // clear the board
    currentGuess = "";
    guessesRemaining = 6;
    messageDiv.innerText = "";

    for (let i = 0; i < 6; i++) {
        for (let j = 0; j < 5; j++) {
            const letterBox = document.createElement("div");
            letterBox.classList.add("letter-box");
            gameBoard.appendChild(letterBox);
        }
    }
}

function updateBoard() {
    const boxes = gameBoard.querySelectorAll(".letter-box");
    let currentLetterIndex = 0;

    for(let i = 0; i < 6; i++) {
        for(let j = 0; j < 5; j++) {
            const box = boxes[currentLetterIndex];
            if(i < 6 - guessesRemaining) {
                let pastGuess = document.querySelectorAll(".letter-box")[i*5 + j];
                pastGuess.textContent = getPastGuess(i)[j] || "";

                if (getPastGuess(i)) {
                    if (getPastGuess(i)[j] === secretWord[j]){
                        pastGuess.classList.add("correct");
                    } else if (secretWord.includes(getPastGuess(i)[j])){
                         pastGuess.classList.add("present");
                    } else {
                        pastGuess.classList.add("absent")
                    }
               }

            } else{
                  box.textContent = "";
                 box.classList.remove("correct", "present", "absent");
             }
               
                currentLetterIndex++;
          }
    }
}

let pastGuesses = [];

function getPastGuess(index) {
   return pastGuesses[index] || "";
}


function handleGuess() {
    currentGuess = guessInput.value.toLowerCase();

    if (currentGuess.length !== 5) {
        messageDiv.innerText = "Слово должно содержать 5 букв.";
        return;
    }

    if (!words.includes(currentGuess)) {
        messageDiv.innerText = "Нет такого слова в словаре.";
         return;
    }

    pastGuesses.push(currentGuess);
    guessesRemaining--;
    updateBoard();

    if (currentGuess === secretWord) {
        messageDiv.innerText = "Поздравляем, вы угадали слово!" ;
       guessInput.disabled = true;   
       guessButton.disabled = true;
        return;
    }

    if (guessesRemaining === 0) {
        messageDiv.innerText = `Вы проиграли. Загаданное слово: ${secretWord}`;
        guessInput.disabled = true;
        guessButton.disabled = true;
        return;
    }

    guessInput.value = ""; // clear input field
}



guessButton.addEventListener("click", handleGuess);

guessInput.addEventListener("keypress", (event) => {
    if (event.key === "Enter") {
        handleGuess();
    }
});


startGame();

Этот код выполняет следующие действия:

  • Инициализация переменных: Определяет список слов, выбирает случайное слово в качестве загаданного, устанавливает начальные значения для переменных.
  • startGame(): Запускает новую игру, выбирает случайное слово, очищает игровое поле и устанавливает начальное количество попыток.
  • updateBoard(): Обновляет игровое поле на основе введенных пользователем букв.
  • handleGuess(): Обрабатывает ввод пользователя, проверяет слово, обновляет доску и определяет победителя или проигравшего.
  • Обработчики событий: Назначает обработчики событий для кнопки «Проверить» и нажатия клавиши Enter в поле ввода.

Сохраните этот код в файл с именем script.js в той же папке, что и index.html и style.css.

Шаг 4: Тестирование

Теперь, когда у вас есть все три файла (index.html, style.css и script.js), вы можете открыть index.html в своем браузере. Вы должны увидеть простую игру Wordle. Попробуйте ввести слово и нажать кнопку «Проверить». Убедитесь, что игра работает правильно, и что стили отображаются корректно. Попробуйте несколько слов, чтобы проверить работу разных типов букв.

Улучшения и Дополнения

Этот простой прототип Wordle можно улучшить и дополнить различными функциями. Вот некоторые идеи:

  • Сохранение прогресса: Добавьте функцию сохранения состояния игры, чтобы пользователь мог продолжить позже.
  • Статистика: Ведите статистику игр пользователя (количество побед, поражений, среднее количество попыток).
  • Анимация: Добавьте анимации, чтобы сделать игру более интерактивной и динамичной.
  • Сложность: Позвольте пользователю выбирать уровень сложности, например, меняя длину слова или словарь.
  • Интерфейс: Сделайте более привлекательный дизайн, включая выбор тем и цветовых схем.
  • Адаптивный дизайн: Убедитесь, что игра хорошо отображается на разных устройствах (компьютерах, планшетах, телефонах).
  • Локализация: Добавьте поддержку нескольких языков.

Заключение

В этой статье мы рассмотрели все основные шаги для создания игры Wordle с нуля. Мы использовали HTML для структуры, CSS для стилизации и JavaScript для логики игры. Созданный прототип можно использовать в качестве основы для дальнейшего развития и экспериментов. Вы можете добавить новые функции, улучшить дизайн и создать свою уникальную версию Wordle.

Теперь, когда у вас есть базовое понимание того, как создать Wordle, вы можете попробовать создать свою игру и поделиться ею с друзьями. Помните, что программирование — это процесс постоянного обучения и совершенствования, поэтому не бойтесь экспериментировать и пробовать новые вещи!

Если у вас возникнут вопросы или предложения, не стесняйтесь оставлять их в комментариях ниже.

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments