Змейка
Игра "Змейка" имеет интересную историю. Она появилась в 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 там же можно научиться программировать с нуля, всем с любого возраста, с любым уровнем подготовки.