Найти тему
Прогер

Создание простой игры на JavaScript может быть увлекательным проектом!

Оглавление

Змейка


Игра "Змейка" имеет интересную историю. Она появилась в 1970-х годах и стала популярной благодаря своей простой, но увлекательной механике.

История и Создатель

1. Ранние версии:
- Изначально концепция игры была представлена в аркадной игре "Blockade", выпущенной в 1976 году компанией Gremlin.
- В 1977 году компания Atari выпустила аналогичную игру под названием "Surround".

2. Популяризация на Nokia:
- Наибольшую популярность игра получила в 1998 году, когда была предустановлена на мобильных телефонах Nokia. Эта версия была разработана Танели Арманто, инженером компании Nokia.

Танели Арманто

- Карьера: Танели Арманто работал в Nokia и занимался разработкой программного обеспечения для мобильных устройств.
- Вклад: Его версия "Змейки" стала культовой и одной из самых известных мобильных игр своего времени.
- Наследие: Благодаря успеху на Nokia, "Змейка" стала символом ранних мобильных игр и до сих пор вызывает ностальгию у многих пользователей.

Влияние

- Игровая механика: Простая, но увлекательная механика игры, где игрок управляет змейкой, которая растёт при поедании пищи, сделала её доступной и популярной среди широкого круга людей.
- Современные версии: Сегодня существует множество вариаций и клонов "Змейки" на различных платформах, от мобильных приложений до веб-игр.

"Змейка" остаётся классикой, которая продолжает вдохновлять разработчиков на создание новых игр с похожей механикой.
Вот пример создания простой игры "Змейка" с использованием HTML, CSS и JavaScript.


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Snake Game</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #000;
}

canvas {
border: 1px solid #fff;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');

const box = 20;
let snake = [];
snake[0] = { x: 9 * box, y: 10 * box };

let food = {
x: Math.floor(Math.random() * 19 + 1) * box,
y: Math.floor(Math.random() * 19 + 1) * box
};

let d;
document.addEventListener('keydown', direction);

function direction(event) {
if (event.keyCode == 37 && d != 'RIGHT') d = 'LEFT';
else if (event.keyCode == 38 && d != 'DOWN') d = 'UP';
else if (event.keyCode == 39 && d != 'LEFT') d = 'RIGHT';
else if (event.keyCode == 40 && d != 'UP') d = 'DOWN';
}

function collision(head, array) {
for (let i = 0; i < array.length; i++) {
if (head.x == array[i].x && head.y == array[i].y) {
return true;
}
}
return false;
}

function draw() {
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, canvas.width, canvas.height);

for (let i = 0; i < snake.length; i++) {
ctx.fillStyle = (i == 0) ? 'green' : 'white';
ctx.fillRect(snake[i].x, snake[i].y, box, box);

ctx.strokeStyle = 'red';
ctx.strokeRect(snake[i].x, snake[i].y, box, box);
}

ctx.fillStyle = 'red';
ctx.fillRect(food.x, food.y, box, box);

let snakeX = snake[0].x;
let snakeY = snake[0].y;

if (d == 'LEFT') snakeX -= box;
if (d == 'UP') snakeY -= box;
if (d == 'RIGHT') snakeX += box;
if (d == 'DOWN') snakeY += box;

if (snakeX == food.x && snakeY == food.y) {
food = {
x: Math.floor(Math.random() * 19 + 1) * box,
y: Math.floor(Math.random() * 19 + 1) * box
};
} else {
snake.pop();
}

let newHead = {
x: snakeX,
y: snakeY
};

if (snakeX < 0 || snakeY < 0 || snakeX >= canvas.width || snakeY >= canvas.height || collision(newHead, snake)) {
clearInterval(game);
}

snake.unshift(newHead);
}

let game = setInterval(draw, 100);
</script>
</body>
</html>

Просто скопируйте код в блокнот, сохраните с расширением ".html" и игра готова к использованию в браузере.


На сайте
https://hi-aga.ru/index.php/igry-na-js сможете поиграть и в другие игры на JS.

Описание
HTML: Создаёт холст, на котором будет отображаться игра.
CSS: Центрирует холст и задаёт фон.
JavaScript: Управляет логикой игры, включая движение змейки, генерацию пищи и обработку столкновений.


Камень, ножницы, бумага

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

Правила игры:

1. Игроки делают выбор: Каждый игрок одновременно выбирает один из трех вариантов:
- Камень: обозначается кулаком.
- Ножницы: обозначаются двумя вытянутыми пальцами.
- Бумага: обозначается открытой ладонью.

2. Определение победителя:
- Камень побеждает ножницы (камень ломает ножницы).
- Ножницы побеждают бумагу (ножницы режут бумагу).
- Бумага побеждает камень (бумага накрывает камень).
- Если оба игрока выбрали одно и то же, это ничья.

Стратегия:

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

История:

Игра имеет древние корни и, вероятно, возникла в Китае. Со временем она распространилась по всему миру и стала популярной в различных культурах.

Современное использование:

Сегодня "Камень, ножницы, бумага" используется не только для развлечения, но и как метод случайного выбора в различных ситуациях, от детских игр до принятия решений в бизнесе.
Ниже приведен простой код этой игры, так же для браузера.


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Камень, ножницы, бумага</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
background-color: #f0f0f0;
}
button {
margin: 10px;
padding: 10px 20px;
font-size: 16px;
}
</style>
</head>
<body>
<h1>Камень, ножницы, бумага</h1>
<div>
<button onclick="playGame('Камень')">Камень</button>
<button onclick="playGame('Ножницы')">Ножницы</button>
<button onclick="playGame('Бумага')">Бумага</button>
</div>
<h2 id="result"></h2>

<script>
function playGame(userChoice) {
const choices = ['Камень', 'Ножницы', 'Бумага'];
const computerChoice = choices[Math.floor(Math.random() * choices.length)];
let result = '';

if (userChoice === computerChoice) {
result = 'Ничья!';
} else if (
(userChoice === 'Камень' && computerChoice === 'Ножницы') ||
(userChoice === 'Ножницы' && computerChoice === 'Бумага') ||
(userChoice === 'Бумага' && computerChoice === 'Камень')
) {
result = 'Вы выиграли!';
} else {
result = 'Вы проиграли!';
}

document.getElementById('result').textContent = `Вы выбрали: ${userChoice}, Компьютер выбрал: ${computerChoice}. ${result}`;
}
</script>
</body>
</html>


Этот код создает простую игру, где вы можете выбрать "Камень", "Ножницы" или "Бумагу", и компьютер случайным образом выбирает один из вариантов. Результат выводится на экран.
Здесь ->
https://hi-aga.ru/index.php/igry-na-js вы можете поиграть и в другие знакомые JS игры.

Кости

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

Основные правила (один из вариантов):

1.
Инвентарь: Обычно используются пять или шесть шестигранных костей.

2.
Цель игры: Набрать наибольшее количество очков за определенное количество раундов.

3.
Начало игры: Игроки по очереди бросают кости. В зависимости от выпавших значений, игроки могут получать очки.

4.
Подсчет очков:
- Разные комбинации костей дают разное количество очков.
- Например, три одинаковых числа могут давать больше очков, чем просто сумма этих чисел.
- В некоторых вариантах игры бонусы даются за определенные комбинации, такие как "стрит" (последовательность чисел) или "фулл хаус" (две кости одного значения и три другого).

5.
Конец игры: Игра заканчивается после определенного количества раундов или когда кто-то из игроков достигает заранее определенного количества очков.

Стратегия:

Игроки могут выбирать, какие кости оставить, а какие перебросить в надежде получить более выгодную комбинацию. Стратегия может включать в себя рискованные решения, такие как попытка собрать редкую комбинацию для большого количества очков.

Популярные варианты:

- Ятцы (Yahtzee): Один из самых известных вариантов игры с костями, в котором используются пять костей и специальные комбинации для подсчета очков.
- Крэпс (Craps): Игра в кости, популярная в казино, с другими правилами и ставками.

Игра "Кости" популярна благодаря своей простоте и элементу удачи, что делает её доступной и интересной для игроков всех возрастов.
по ссылке
https://hi-aga.ru/index.php/igry-na-js вы можете найти один из разновидностей этой игры.
Ниже представлен код


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Игра Кости</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f4f4f9;
margin: 0;
}

.container {
text-align: center;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
border: none;
border-radius: 5px;
background-color: #6200ea;
color: white;
}

#diceContainer {
margin-top: 20px;
}

.die {
display: inline-block;
font-size: 24px;
margin: 0 5px;
width: 40px;
height: 40px;
line-height: 40px;
background-color: #e0e0e0;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="container">
<h1>Игра Кости</h1>
<button id="rollButton">Бросить кости</button>
<div id="diceContainer"></div>
<p id="score"></p>
</div>
<script>
function rollDice(numDice = 5) {
const dice = [];
for (let i = 0; i < numDice; i++) {
dice.push(Math.floor(Math.random() * 6) + 1);
}
return dice;
}

function scoreRoll(dice) {
const counts = {};
let score = 0;

dice.forEach(num => {
counts[num] = (counts[num] || 0) + 1;
});

for (const num in counts) {
if (counts[num] >= 3) {
score += num * 3;
}
}

const isStraight = (set) => set.size === 5 && (set.has(1) && set.has(5) || set.has(2) && set.has(6));
if (isStraight(new Set(dice))) {
score += 15;
}

const values = Object.values(counts).sort();
if (values[0] === 2 && values[1] === 3) {
score += 25;
}

return score;
}

function displayDice(dice) {
const diceContainer = document.getElementById('diceContainer');
diceContainer.innerHTML = '';
dice.forEach(num => {
const die = document.createElement('div');
die.className = 'die';
die.textContent = num;
diceContainer.appendChild(die);
});
}

function playGame() {
const dice = rollDice();
displayDice(dice);
const score = scoreRoll(dice);
document.getElementById('score').textContent = `Счет: ${score}`;
}

document.getElementById('rollButton').addEventListener('click', playGame);
</script>
</body>
</html>

Этот код имитирует бросание игроком пяти костей при нажатии на кнопку "Бросить кости", а скрипт подсчитывает очки на основе комбинаций, в результате увидите текст, например "Счет: 15".



Монетка

Игра "Монетка" (орёл или решка) — это простая игра на удачу, в которой используется обычная монета. Вот основные моменты:

Правила игры:
1. Выбор стороны: Игрок выбирает одну из двух сторон монеты: орёл или решка.
2. Подбрасывание монеты: Монета подбрасывается в воздух, и после приземления определяется, какая сторона оказалась сверху.
3. Результат: Если выпадает выбранная игроком сторона, он выигрывает; если нет, проигрывает.

История и использование:
- Историческая игра: Игра с монеткой известна с древних времён и использовалась для принятия решений.
- Простота: Требует только монеты и часто используется для выбора между двумя равнозначными вариантами, например, кто будет начинать игру.

Применение:
- Спортивные события: Используется для определения начала игры (например, кто будет подавать в футболе).
- Повседневные решения: Помогает быстро принять решение, когда оба варианта равны.

Вероятности:
- Вероятность выпадения орла или решки — 50% для каждой стороны, если монета честная и сбалансированная.

Игра "Монетка" — это не только развлечение, но и удобный способ принятия решений в ситуациях, где требуется случайность.
Вот пример простого кода для игры "Монетка" (орёл или решка) в одном HTML-файле:


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Игра Монетка</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f4f4f9;
margin: 0;
}

.container {
text-align: center;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
border: none;
border-radius: 5px;
background-color: #6200ea;
color: white;
}

#result {
margin-top: 20px;
font-size: 24px;
}
</style>
</head>
<body>
<div class="container">
<h1>Игра Монетка</h1>
<button id="flipButton">Подбросить монетку</button>
<div id="result"></div>
</div>
<script>
function flipCoin() {
const result = Math.random() < 0.5 ? 'Орёл' : 'Решка';
document.getElementById('result').textContent = `Результат: ${result}`;
}

document.getElementById('flipButton').addEventListener('click', flipCoin);
</script>
</body>
</html>


Думаю все предельно ясно.
По адресу
https://hi-aga.ru/index.php/igry-na-js вы увидите разные простые примеры JS игр.

Угадайка

Игра "Угадайка" — это простая и увлекательная игра, в которой игрок пытается угадать загаданное число. Вот основные аспекты игры:

Правила игры:
1. Выбор диапазона: Обычно выбирается диапазон чисел, например, от 1 до 100.
2. Загадывание числа: Ведущий (или программа) загадывает случайное число в этом диапазоне.
3. Попытки угадать: Игрок делает попытки угадать число, называя свои варианты.
4. Подсказки: После каждой попытки игрок получает подсказку — больше или меньше загаданное число.

Цель:
- Угадать загаданное число за минимальное количество попыток.

Вариации:
- С ограничением по времени: Угадать число за определённое время.
- С ограничением по количеству попыток: Игроку даётся ограниченное число попыток.

Применение:
- Обучение: Используется для обучения детей основам математики и логики.
- Развлечение: Отличный способ провести время в компании или в одиночестве.

Пример реализации:
Игра может быть реализована как в настольной версии, так и в виде компьютерной программы или мобильного приложения.

"Угадайка" — это не только развлечение, но и способ развивать навыки логического мышления и интуиции.
пример простого кода для игры "Угадайка"


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Игра Угадайка</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
h1 {
color: #333;
}
input[type="number"] {
padding: 10px;
font-size: 16px;
margin: 10px 0;
}
button {
padding: 10px 20px;
font-size: 16px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
.message {
margin-top: 20px;
font-size: 18px;
color: #333;
}
</style>
</head>
<body>
<h1>Игра Угадайка</h1>
<input type="number" id="guess" placeholder="Введите число от 1 до 100" />
<button onclick="checkGuess()">Угадать</button>
<div class="message" id="message"></div>

<script>
const randomNumber = Math.floor(Math.random() * 100) + 1;
let attempts = 0;

function checkGuess() {
const userGuess = Number(document.getElementById('guess').value);
const message = document.getElementById('message');
attempts++;

if (userGuess < 1 || userGuess > 100) {
message.textContent = 'Пожалуйста, введите число от 1 до 100.';
} else if (userGuess < randomNumber) {
message.textContent = 'Больше!';
} else if (userGuess > randomNumber) {
message.textContent = 'Меньше!';
} else {
message.textContent = `Поздравляем! Вы угадали число ${randomNumber} за ${attempts} попыток.`;
}
}
</script>
</body>
</html>

Описание:
HTML: Создаёт структуру страницы с заголовком, полем ввода и кнопкой.
CSS: Добавляет стили для центрирования элементов и улучшения внешнего вида.


JavaScript: Содержит логику игры, включая генерацию случайного числа и проверку догадок.


Больше разновидностей JS игр на сайте
https://hi-aga.ru/index.php/igry-na-js там же можно научиться программировать с нуля, всем с любого возраста, с любым уровнем подготовки.