Форум РОС

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум РОС » Темы для общения » Опрос №55: В какую(ие) из данных игр вы играли?


Опрос №55: В какую(ие) из данных игр вы играли?

Сообщений 1 страница 11 из 11

Опрос

Опрос №55: В какую(ие) из данных игр вы играли?
Играл

57% - 4 Не играл

42% - 3
Играл

57% - 4 Не играл

42% - 3
Играл

28% - 2 Не играл

71% - 5
Играл

28% - 2 Не играл

71% - 5
Играл

100% - 7 Не играл

0% - 0
Голосов: 7; Проголосовали: 7

1

Опрос №55: В какую(ие) из данных игр вы играли?

Подпись автора

https://forumupload.ru/uploads/001c/58/e1/5/454984.gif

0

2

Варианты, чтобы не забыть:
https://forumupload.ru/uploads/001c/58/e1/23/t525904.jpg

Подпись автора

[html]<div class="div1"><div class="div2"><a href="https://scratch.mit.edu/users/AGScratcherBest-2">Скретч</a><div class="dot"></div><a href="https://discord.gg/gbKEB6hnTy">Discord</a><div class="dot"></div><a href="https://clck.ru/3J6GDx">Matrix</a><div class="dot"></div><a href="https://agsb.miraheze.org/">Вики</a><div class="dot"></div><a href="https://shitpost.poridge.club/@AGScratcherBest">Sharkey</a></div></div><style>.div1 {background: radial-gradient(circle, #072e4b 45%, #08314e 10%) repeat;background-size: 35px 35px; /* Размер сетки точек */background-attachment: fixed;padding: 2em;border-radius: 1em;}.div2 {background-color: #041521;padding: 1em;border-radius: 3px;display: flex;}a {padding: 0 !important;display: block;color: #83d3f9 !important;font-size: 1.5em;font-weight: bold;margin: 0 !important;text-decoration:none!important;}a:first-child {margin-left:auto!important;}a:last-child {margin-right:auto!important;}.dot {background-color: #83d3f930;width: 5.5px;height:5.5px;margin:auto 7.5px;border-radius:50%;}</style>[/html]

+1

3

Только в сапер.

Подпись автора

Scratch
                      Я кроме scratch занимаюсь unity, уже сделал некоторые "сильные" проекты для моего уровня.
https://forumupload.ru/uploads/001c/58/e1/7/t116631.pnghttps://forumupload.ru/uploads/001c/58/e1/7/t116631.png
https://forumupload.ru/uploads/001c/58/e1/7/t116631.png
                            Думал красивей получится. Лад, потом исправлю

0

4

AGScratcherBest написал(а):

(#2)
Варианты, чтобы не забыть:
https://forumupload.ru/uploads/001c/58/e1/23/t525904.jpg

У меня также!

Подпись автора

Scratch
                      Я кроме scratch занимаюсь unity, уже сделал некоторые "сильные" проекты для моего уровня.
https://forumupload.ru/uploads/001c/58/e1/7/t116631.pnghttps://forumupload.ru/uploads/001c/58/e1/7/t116631.png
https://forumupload.ru/uploads/001c/58/e1/7/t116631.png
                            Думал красивей получится. Лад, потом исправлю

+1

5

elisdema2013 написал(а):

(#4)
У меня также!

Сапер легенда!

Подпись автора

В основном сижу на уютном сервере под названием Роса вместе с друзьями

+1

6

White_Lord написал(а):

(#5)
Сапер легенда!

Как и Косынка!

Подпись автора

https://forumupload.ru/uploads/001c/58/e1/5/454984.gif

+1

7

White_Lord написал(а):

(#5)
Сапер легенда!

[html]
<!DOCTYPE html>
<html lang="ru">
<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;
            background-color: #f0f0f0;
            margin: 0;
            padding: 20px;
        }
       
        h1 {
            color: #333;
        }
       
        .game-info {
            margin-bottom: 15px;
            display: flex;
            gap: 20px;
        }
       
        .board {
            display: grid;
            grid-template-columns: repeat(10, 30px);
            grid-template-rows: repeat(10, 30px);
            gap: 2px;
            margin-bottom: 20px;
        }
       
        .cell {
            width: 30px;
            height: 30px;
            background-color: #ccc;
            border: 1px solid #999;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: bold;
            cursor: pointer;
            user-select: none;
        }
       
        .cell.revealed {
            background-color: #eee;
            cursor: default;
        }
       
        .cell.mine {
            background-color: #f00;
            color: white;
        }
       
        .cell.flagged {
            background-color: #ff0;
        }
       
        .controls {
            margin-bottom: 20px;
        }
       
        button {
            padding: 8px 16px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
       
        button:hover {
            background-color: #45a049;
        }
       
        .color-1 { color: blue; }
        .color-2 { color: green; }
        .color-3 { color: red; }
        .color-4 { color: darkblue; }
        .color-5 { color: brown; }
        .color-6 { color: teal; }
        .color-7 { color: black; }
        .color-8 { color: gray; }
    </style>
</head>
<body>
    <h1>Сапёр</h1>
   
    <div class="game-info">
        <div>Флаги: <span id="flags">10</span></div>
        <div>Время: <span id="time">0</span></div>
    </div>
   
    <div class="board" id="board"></div>
   
    <div class="controls">
        <button id="reset">Новая игра</button>
    </div>
   
    <script>
        const BOARD_SIZE = 10;
        const MINES_COUNT = 10;
       
        let board = [];
        let revealed = [];
        let flagged = [];
        let gameOver = false;
        let firstClick = true;
        let timer = 0;
        let timerInterval = null;
       
        const boardElement = document.getElementById('board');
        const flagsElement = document.getElementById('flags');
        const timeElement = document.getElementById('time');
        const resetButton = document.getElementById('reset');
       
        function initGame() {
            board = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(0));
            revealed = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(false));
            flagged = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(false));
            gameOver = false;
            firstClick = true;
            timer = 0;
           
            if (timerInterval) clearInterval(timerInterval);
            timerInterval = null;
           
            updateFlagsDisplay();
            updateTimeDisplay();
            renderBoard();
        }
       
        function placeMines(firstRow, firstCol) {
            let minesPlaced = 0;
           
            while (minesPlaced < MINES_COUNT) {
                const row = Math.floor(Math.random() * BOARD_SIZE);
                const col = Math.floor(Math.random() * BOARD_SIZE);
               
                // Не ставим мину на первую нажатую клетку и вокруг неё
                if (Math.abs(row - firstRow) <= 1 && Math.abs(col - firstCol) <= 1) {
                    continue;
                }
               
                if (board[row][col] !== -1) {
                    board[row][col] = -1;
                    minesPlaced++;
                   
                    // Обновляем счетчики мин вокруг
                    for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_SIZE - 1, row + 1); r++) {
                        for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_SIZE - 1, col + 1); c++) {
                            if (board[r][c] !== -1) {
                                board[r][c]++;
                            }
                        }
                    }
                }
            }
        }
       
        function renderBoard() {
            boardElement.innerHTML = '';
           
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    const cell = document.createElement('div');
                    cell.className = 'cell';
                    cell.dataset.row = row;
                    cell.dataset.col = col;
                   
                    if (revealed[row][col]) {
                        cell.classList.add('revealed');
                       
                        if (board[row][col] === -1) {
                            cell.classList.add('mine');
                            cell.textContent = '💣';
                        } else if (board[row][col] > 0) {
                            cell.textContent = board[row][col];
                            cell.classList.add(`color-${board[row][col]}`);
                        }
                    } else if (flagged[row][col]) {
                        cell.classList.add('flagged');
                        cell.textContent = '🚩';
                    }
                   
                    cell.addEventListener('click', () => handleCellClick(row, col));
                    cell.addEventListener('contextmenu', (e) => {
                        e.preventDefault();
                        handleRightClick(row, col);
                    });
                   
                    boardElement.appendChild(cell);
                }
            }
        }
       
        function handleCellClick(row, col) {
            if (gameOver || flagged[row][col] || revealed[row][col]) return;
           
            if (firstClick) {
                firstClick = false;
                placeMines(row, col);
                startTimer();
            }
           
            revealed[row][col] = true;
           
            if (board[row][col] === -1) {
                // Игрок наступил на мину
                gameOver = true;
                revealAllMines();
                clearInterval(timerInterval);
                alert('Игра окончена! Вы проиграли.');
            } else if (board[row][col] === 0) {
                // Если пустая клетка, открываем соседние
                revealAdjacentCells(row, col);
            }
           
            if (checkWin()) {
                gameOver = true;
                clearInterval(timerInterval);
                alert('Поздравляем! Вы победили!');
            }
           
            renderBoard();
        }
       
        function handleRightClick(row, col) {
            if (gameOver || revealed[row][col]) return;
           
            flagged[row][col] = !flagged[row][col];
            updateFlagsDisplay();
            renderBoard();
        }
       
        function revealAdjacentCells(row, col) {
            for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_SIZE - 1, row + 1); r++) {
                for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_SIZE - 1, col + 1); c++) {
                    if (!revealed[r][c] && !flagged[r][c]) {
                        revealed[r][c] = true;
                        if (board[r][c] === 0) {
                            revealAdjacentCells(r, c);
                        }
                    }
                }
            }
        }
       
        function revealAllMines() {
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    if (board[row][col] === -1) {
                        revealed[row][col] = true;
                    }
                }
            }
        }
       
        function checkWin() {
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    if (board[row][col] !== -1 && !revealed[row][col]) {
                        return false;
                    }
                }
            }
            return true;
        }
       
        function startTimer() {
            timerInterval = setInterval(() => {
                timer++;
                updateTimeDisplay();
            }, 1000);
        }
       
        function updateFlagsDisplay() {
            const flaggedCount = flagged.flat().filter(Boolean).length;
            flagsElement.textContent = MINES_COUNT - flaggedCount;
        }
       
        function updateTimeDisplay() {
            timeElement.textContent = timer;
        }
       
        resetButton.addEventListener('click', initGame);
       
        // Инициализация игры при загрузке
        initGame();
    </script>
</body>
</html>
[/html]

Подпись автора

[html]<div class="div1"><div class="div2"><a href="https://scratch.mit.edu/users/AGScratcherBest-2">Скретч</a><div class="dot"></div><a href="https://discord.gg/gbKEB6hnTy">Discord</a><div class="dot"></div><a href="https://clck.ru/3J6GDx">Matrix</a><div class="dot"></div><a href="https://agsb.miraheze.org/">Вики</a><div class="dot"></div><a href="https://shitpost.poridge.club/@AGScratcherBest">Sharkey</a></div></div><style>.div1 {background: radial-gradient(circle, #072e4b 45%, #08314e 10%) repeat;background-size: 35px 35px; /* Размер сетки точек */background-attachment: fixed;padding: 2em;border-radius: 1em;}.div2 {background-color: #041521;padding: 1em;border-radius: 3px;display: flex;}a {padding: 0 !important;display: block;color: #83d3f9 !important;font-size: 1.5em;font-weight: bold;margin: 0 !important;text-decoration:none!important;}a:first-child {margin-left:auto!important;}a:last-child {margin-right:auto!important;}.dot {background-color: #83d3f930;width: 5.5px;height:5.5px;margin:auto 7.5px;border-radius:50%;}</style>[/html]

+2

8

AGScratcherBest написал(а):

(#7)
[html]<!DOCTYPE html>
<html lang="ru">
<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;
            background-color: #f0f0f0;
            margin: 0;
            padding: 20px;
        }
       
        h1 {
            color: #333;
        }
       
        .game-info {
            margin-bottom: 15px;
            display: flex;
            gap: 20px;
        }
       
        .board {
            display: grid;
            grid-template-columns: repeat(10, 30px);
            grid-template-rows: repeat(10, 30px);
            gap: 2px;
            margin-bottom: 20px;
        }
       
        .cell {
            width: 30px;
            height: 30px;
            background-color: #ccc;
            border: 1px solid #999;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: bold;
            cursor: pointer;
            user-select: none;
        }
       
        .cell.revealed {
            background-color: #eee;
            cursor: default;
        }
       
        .cell.mine {
            background-color: #f00;
            color: white;
        }
       
        .cell.flagged {
            background-color: #ff0;
        }
       
        .controls {
            margin-bottom: 20px;
        }
       
        button {
            padding: 8px 16px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
       
        button:hover {
            background-color: #45a049;
        }
       
        .color-1 { color: blue; }
        .color-2 { color: green; }
        .color-3 { color: red; }
        .color-4 { color: darkblue; }
        .color-5 { color: brown; }
        .color-6 { color: teal; }
        .color-7 { color: black; }
        .color-8 { color: gray; }
    </style>
</head>
<body>
    <h1>Сапёр</h1>
   
    <div class="game-info">
        <div>Флаги: <span id="flags">10</span></div>
        <div>Время: <span id="time">0</span></div>
    </div>
   
    <div class="board" id="board"></div>
   
    <div class="controls">
        <button id="reset">Новая игра</button>
    </div>
   
    <script>
        const BOARD_SIZE = 10;
        const MINES_COUNT = 10;
       
        let board = [];
        let revealed = [];
        let flagged = [];
        let gameOver = false;
        let firstClick = true;
        let timer = 0;
        let timerInterval = null;
       
        const boardElement = document.getElementById('board');
        const flagsElement = document.getElementById('flags');
        const timeElement = document.getElementById('time');
        const resetButton = document.getElementById('reset');
       
        function initGame() {
            board = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(0));
            revealed = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(false));
            flagged = Array(BOARD_SIZE).fill().map(() => Array(BOARD_SIZE).fill(false));
            gameOver = false;
            firstClick = true;
            timer = 0;
           
            if (timerInterval) clearInterval(timerInterval);
            timerInterval = null;
           
            updateFlagsDisplay();
            updateTimeDisplay();
            renderBoard();
        }
       
        function placeMines(firstRow, firstCol) {
            let minesPlaced = 0;
           
            while (minesPlaced < MINES_COUNT) {
                const row = Math.floor(Math.random() * BOARD_SIZE);
                const col = Math.floor(Math.random() * BOARD_SIZE);
               
                // Не ставим мину на первую нажатую клетку и вокруг неё
                if (Math.abs(row - firstRow) <= 1 && Math.abs(col - firstCol) <= 1) {
                    continue;
                }
               
                if (board[row][col] !== -1) {
                    board[row][col] = -1;
                    minesPlaced++;
                   
                    // Обновляем счетчики мин вокруг
                    for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_SIZE - 1, row + 1); r++) {
                        for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_SIZE - 1, col + 1); c++) {
                            if (board[r][c] !== -1) {
                                board[r][c]++;
                            }
                        }
                    }
                }
            }
        }
       
        function renderBoard() {
            boardElement.innerHTML = '';
           
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    const cell = document.createElement('div');
                    cell.className = 'cell';
                    cell.dataset.row = row;
                    cell.dataset.col = col;
                   
                    if (revealed[row][col]) {
                        cell.classList.add('revealed');
                       
                        if (board[row][col] === -1) {
                            cell.classList.add('mine');
                            cell.textContent = '💣';
                        } else if (board[row][col] > 0) {
                            cell.textContent = board[row][col];
                            cell.classList.add(`color-${board[row][col]}`);
                        }
                    } else if (flagged[row][col]) {
                        cell.classList.add('flagged');
                        cell.textContent = '🚩';
                    }
                   
                    cell.addEventListener('click', () => handleCellClick(row, col));
                    cell.addEventListener('contextmenu', (e) => {
                        e.preventDefault();
                        handleRightClick(row, col);
                    });
                   
                    boardElement.appendChild(cell);
                }
            }
        }
       
        function handleCellClick(row, col) {
            if (gameOver || flagged[row][col] || revealed[row][col]) return;
           
            if (firstClick) {
                firstClick = false;
                placeMines(row, col);
                startTimer();
            }
           
            revealed[row][col] = true;
           
            if (board[row][col] === -1) {
                // Игрок наступил на мину
                gameOver = true;
                revealAllMines();
                clearInterval(timerInterval);
                alert('Игра окончена! Вы проиграли.');
            } else if (board[row][col] === 0) {
                // Если пустая клетка, открываем соседние
                revealAdjacentCells(row, col);
            }
           
            if (checkWin()) {
                gameOver = true;
                clearInterval(timerInterval);
                alert('Поздравляем! Вы победили!');
            }
           
            renderBoard();
        }
       
        function handleRightClick(row, col) {
            if (gameOver || revealed[row][col]) return;
           
            flagged[row][col] = !flagged[row][col];
            updateFlagsDisplay();
            renderBoard();
        }
       
        function revealAdjacentCells(row, col) {
            for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_SIZE - 1, row + 1); r++) {
                for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_SIZE - 1, col + 1); c++) {
                    if (!revealed[r][c] && !flagged[r][c]) {
                        revealed[r][c] = true;
                        if (board[r][c] === 0) {
                            revealAdjacentCells(r, c);
                        }
                    }
                }
            }
        }
       
        function revealAllMines() {
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    if (board[row][col] === -1) {
                        revealed[row][col] = true;
                    }
                }
            }
        }
       
        function checkWin() {
            for (let row = 0; row < BOARD_SIZE; row++) {
                for (let col = 0; col < BOARD_SIZE; col++) {
                    if (board[row][col] !== -1 && !revealed[row][col]) {
                        return false;
                    }
                }
            }
            return true;
        }
       
        function startTimer() {
            timerInterval = setInterval(() => {
                timer++;
                updateTimeDisplay();
            }, 1000);
        }
       
        function updateFlagsDisplay() {
            const flaggedCount = flagged.flat().filter(Boolean).length;
            flagsElement.textContent = MINES_COUNT - flaggedCount;
        }
       
        function updateTimeDisplay() {
            timeElement.textContent = timer;
        }
       
        resetButton.addEventListener('click', initGame);
       
        // Инициализация игры при загрузке
        initGame();
    </script>
</body>
</html>
[/html]

А сложность Любитель есть?

Подпись автора

https://forumupload.ru/uploads/001c/58/e1/5/454984.gif

0

9

Karera_77 написал(а):

(#8)
А сложность Любитель есть?

Сделал кастомизируемую версию, где можно задать размер побольше:
[html]
<!DOCTYPE html>
<html lang="ru">
<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;
            background-color: #f0f0f0;
            margin: 0;
            padding: 20px;
        }
       
        h1 {
            color: #333;
        }
       
        .settings {
            display: flex;
            gap: 15px;
            margin-bottom: 15px;
            flex-wrap: wrap;
            /*justify-content: center;*/
        }
       
        .setting-group {
            display: flex;
            flex-direction: column;
        }
       
        label {
            margin-bottom: 5px;
            font-weight: bold;
        }
       
        input {
            padding: 5px;
            width: 60px;
            text-align: center;
        }
       
        .game-info {
            margin-bottom: 15px;
            display: flex;
            gap: 20px;
        }
       
        .board {
            display: grid;
            gap: 2px;
            margin-bottom: 20px;
        }
       
        .cell {
            width: 30px;
            height: 30px;
            background-color: #ccc;
            border: 1px solid #999;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: bold;
            cursor: pointer;
            user-select: none;
        }
       
        .cell.revealed {
            background-color: #eee;
            cursor: default;
        }
       
        .cell.mine {
            background-color: #f00;
            color: white;
        }
       
        .cell.flagged {
            background-color: #ff0;
        }
       
        .controls {
            margin-bottom: 20px;
        }
       
        button {
            padding: 8px 16px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
       
        button:hover {
            background-color: #45a049;
        }
       
        .color-1 { color: blue; }
        .color-2 { color: green; }
        .color-3 { color: red; }
        .color-4 { color: darkblue; }
        .color-5 { color: brown; }
        .color-6 { color: teal; }
        .color-7 { color: black; }
        .color-8 { color: gray; }
    </style>
</head>
<body>
    <div class="settings">
        <div class="setting-group">
            <label for="width">Ширина:</label>
            <input type="number" id="width" min="5" max="30" value="10">
        </div>
       
        <div class="setting-group">
            <label for="height">Высота:</label>
            <input type="number" id="height" min="5" max="30" value="10">
        </div>
       
        <div class="setting-group">
            <label for="mines">Мины:</label>
            <input type="number" id="mines" min="1" max="100" value="10">
        </div>
    </div>
   
    <div class="game-info">
        <div>Флаги: <span id="flags">10</span></div>
        <div>Время: <span id="time">0</span></div>
    </div>
   
    <div class="board" id="board"></div>
   
    <div class="controls">
        <button id="reset">Новая игра</button>
    </div>
   
    <script>
        let BOARD_WIDTH = 10;
        let BOARD_HEIGHT = 10;
        let MINES_COUNT = 10;
       
        let board = [];
        let revealed = [];
        let flagged = [];
        let gameOver = false;
        let firstClick = true;
        let timer = 0;
        let timerInterval = null;
       
        const boardElement = document.getElementById('board');
        const flagsElement = document.getElementById('flags');
        const timeElement = document.getElementById('time');
        const resetButton = document.getElementById('reset');
        const widthInput = document.getElementById('width');
        const heightInput = document.getElementById('height');
        const minesInput = document.getElementById('mines');
       
        function initGame() {
            // Получаем настройки из полей ввода
            BOARD_WIDTH = parseInt(widthInput.value) || 10;
            BOARD_HEIGHT = parseInt(heightInput.value) || 10;
            MINES_COUNT = parseInt(minesInput.value) || 10;
           
            // Проверяем допустимые значения
            BOARD_WIDTH = Math.max(2, Math.min(1000, BOARD_WIDTH));
            BOARD_HEIGHT = Math.max(2, Math.min(1000, BOARD_HEIGHT));
           
            const maxMines = Math.floor(BOARD_WIDTH * BOARD_HEIGHT * 0.75);
            MINES_COUNT = Math.max(1, Math.min(maxMines, MINES_COUNT));
           
            // Обновляем поля ввода на случай, если значения были изменены
            widthInput.value = BOARD_WIDTH;
            heightInput.value = BOARD_HEIGHT;
            minesInput.value = MINES_COUNT;
           
            // Инициализируем игровое поле
            board = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(0));
            revealed = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(false));
            flagged = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(false));
            gameOver = false;
            firstClick = true;
            timer = 0;
           
            if (timerInterval) clearInterval(timerInterval);
            timerInterval = null;
           
            // Настраиваем стиль игрового поля
            boardElement.style.gridTemplateColumns = `repeat(${BOARD_WIDTH}, 30px)`;
            boardElement.style.gridTemplateRows = `repeat(${BOARD_HEIGHT}, 30px)`;
           
            updateFlagsDisplay();
            updateTimeDisplay();
            renderBoard();
        }
       
        function placeMines(firstRow, firstCol) {
            let minesPlaced = 0;
           
            while (minesPlaced < MINES_COUNT) {
                const row = Math.floor(Math.random() * BOARD_HEIGHT);
                const col = Math.floor(Math.random() * BOARD_WIDTH);
               
                // Не ставим мину на первую нажатую клетку и вокруг неё
                if (Math.abs(row - firstRow) <= 1 && Math.abs(col - firstCol) <= 1) {
                    continue;
                }
               
                if (board[row][col] !== -1) {
                    board[row][col] = -1;
                    minesPlaced++;
                   
                    // Обновляем счетчики мин вокруг
                    for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_HEIGHT - 1, row + 1); r++) {
                        for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_WIDTH - 1, col + 1); c++) {
                            if (board[r][c] !== -1) {
                                board[r][c]++;
                            }
                        }
                    }
                }
            }
        }
       
        function renderBoard() {
            boardElement.innerHTML = '';
           
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    const cell = document.createElement('div');
                    cell.className = 'cell';
                    cell.dataset.row = row;
                    cell.dataset.col = col;
                   
                    if (revealed[row][col]) {
                        cell.classList.add('revealed');
                       
                        if (board[row][col] === -1) {
                            cell.classList.add('mine');
                            cell.textContent = '💣';
                        } else if (board[row][col] > 0) {
                            cell.textContent = board[row][col];
                            cell.classList.add(`color-${board[row][col]}`);
                        }
                    } else if (flagged[row][col]) {
                        cell.classList.add('flagged');
                        cell.textContent = '🚩';
                    }
                   
                    cell.addEventListener('click', () => handleCellClick(row, col));
                    cell.addEventListener('contextmenu', (e) => {
                        e.preventDefault();
                        handleRightClick(row, col);
                    });
                   
                    boardElement.appendChild(cell);
                }
            }
        }
       
        function handleCellClick(row, col) {
            if (gameOver || flagged[row][col] || revealed[row][col]) return;
           
            if (firstClick) {
                firstClick = false;
                placeMines(row, col);
                startTimer();
            }
           
            revealed[row][col] = true;
           
            if (board[row][col] === -1) {
                // Игрок наступил на мину
                gameOver = true;
                revealAllMines();
                clearInterval(timerInterval);
                alert('Игра окончена! Вы проиграли.');
            } else if (board[row][col] === 0) {
                // Если пустая клетка, открываем соседние
                revealAdjacentCells(row, col);
            }
           
            if (checkWin()) {
                gameOver = true;
                clearInterval(timerInterval);
                alert('Поздравляем! Вы победили!');
            }
           
            renderBoard();
        }
       
        function handleRightClick(row, col) {
            if (gameOver || revealed[row][col]) return;
           
            flagged[row][col] = !flagged[row][col];
            updateFlagsDisplay();
            renderBoard();
        }
       
        function revealAdjacentCells(row, col) {
            for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_HEIGHT - 1, row + 1); r++) {
                for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_WIDTH - 1, col + 1); c++) {
                    if (!revealed[r][c] && !flagged[r][c]) {
                        revealed[r][c] = true;
                        if (board[r][c] === 0) {
                            revealAdjacentCells(r, c);
                        }
                    }
                }
            }
        }
       
        function revealAllMines() {
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    if (board[row][col] === -1) {
                        revealed[row][col] = true;
                    flagged[row][col] = false;
                    }
                }
            }
        }
       
        function checkWin() {
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    if (board[row][col] !== -1 && !revealed[row][col]) {
                        return false;
                    }
                }
            }
            return true;
        }
       
        function startTimer() {
            timerInterval = setInterval(() => {
                timer++;
                updateTimeDisplay();
            }, 1000);
        }
       
        function updateFlagsDisplay() {
            const flaggedCount = flagged.flat().filter(Boolean).length;
            flagsElement.textContent = MINES_COUNT - flaggedCount;
        }
       
        function updateTimeDisplay() {
            timeElement.textContent = timer;
        }
       
        resetButton.addEventListener('click', initGame);
       
        // Обновляем игру при изменении настроек
        widthInput.addEventListener('change', initGame);
        heightInput.addEventListener('change', initGame);
        minesInput.addEventListener('change', initGame);
       
        // Инициализация игры при загрузке
        initGame();
    </script>
</body>
</html>
[/html]

Подпись автора

[html]<div class="div1"><div class="div2"><a href="https://scratch.mit.edu/users/AGScratcherBest-2">Скретч</a><div class="dot"></div><a href="https://discord.gg/gbKEB6hnTy">Discord</a><div class="dot"></div><a href="https://clck.ru/3J6GDx">Matrix</a><div class="dot"></div><a href="https://agsb.miraheze.org/">Вики</a><div class="dot"></div><a href="https://shitpost.poridge.club/@AGScratcherBest">Sharkey</a></div></div><style>.div1 {background: radial-gradient(circle, #072e4b 45%, #08314e 10%) repeat;background-size: 35px 35px; /* Размер сетки точек */background-attachment: fixed;padding: 2em;border-radius: 1em;}.div2 {background-color: #041521;padding: 1em;border-radius: 3px;display: flex;}a {padding: 0 !important;display: block;color: #83d3f9 !important;font-size: 1.5em;font-weight: bold;margin: 0 !important;text-decoration:none!important;}a:first-child {margin-left:auto!important;}a:last-child {margin-right:auto!important;}.dot {background-color: #83d3f930;width: 5.5px;height:5.5px;margin:auto 7.5px;border-radius:50%;}</style>[/html]

+3

10

AGScratcherBest написал(а):

(#9)
Сделал кастомизируемую версию, где можно задать размер побольше:
[html]<!DOCTYPE html>
<html lang="ru">
<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;
            background-color: #f0f0f0;
            margin: 0;
            padding: 20px;
        }
       
        h1 {
            color: #333;
        }
       
        .settings {
            display: flex;
            gap: 15px;
            margin-bottom: 15px;
            flex-wrap: wrap;
            /*justify-content: center;*/
        }
       
        .setting-group {
            display: flex;
            flex-direction: column;
        }
       
        label {
            margin-bottom: 5px;
            font-weight: bold;
        }
       
        input {
            padding: 5px;
            width: 60px;
            text-align: center;
        }
       
        .game-info {
            margin-bottom: 15px;
            display: flex;
            gap: 20px;
        }
       
        .board {
            display: grid;
            gap: 2px;
            margin-bottom: 20px;
        }
       
        .cell {
            width: 30px;
            height: 30px;
            background-color: #ccc;
            border: 1px solid #999;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: bold;
            cursor: pointer;
            user-select: none;
        }
       
        .cell.revealed {
            background-color: #eee;
            cursor: default;
        }
       
        .cell.mine {
            background-color: #f00;
            color: white;
        }
       
        .cell.flagged {
            background-color: #ff0;
        }
       
        .controls {
            margin-bottom: 20px;
        }
       
        button {
            padding: 8px 16px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
       
        button:hover {
            background-color: #45a049;
        }
       
        .color-1 { color: blue; }
        .color-2 { color: green; }
        .color-3 { color: red; }
        .color-4 { color: darkblue; }
        .color-5 { color: brown; }
        .color-6 { color: teal; }
        .color-7 { color: black; }
        .color-8 { color: gray; }
    </style>
</head>
<body>
    <div class="settings">
        <div class="setting-group">
            <label for="width">Ширина:</label>
            <input type="number" id="width" min="5" max="30" value="10">
        </div>
       
        <div class="setting-group">
            <label for="height">Высота:</label>
            <input type="number" id="height" min="5" max="30" value="10">
        </div>
       
        <div class="setting-group">
            <label for="mines">Мины:</label>
            <input type="number" id="mines" min="1" max="100" value="10">
        </div>
    </div>
   
    <div class="game-info">
        <div>Флаги: <span id="flags">10</span></div>
        <div>Время: <span id="time">0</span></div>
    </div>
   
    <div class="board" id="board"></div>
   
    <div class="controls">
        <button id="reset">Новая игра</button>
    </div>
   
    <script>
        let BOARD_WIDTH = 10;
        let BOARD_HEIGHT = 10;
        let MINES_COUNT = 10;
       
        let board = [];
        let revealed = [];
        let flagged = [];
        let gameOver = false;
        let firstClick = true;
        let timer = 0;
        let timerInterval = null;
       
        const boardElement = document.getElementById('board');
        const flagsElement = document.getElementById('flags');
        const timeElement = document.getElementById('time');
        const resetButton = document.getElementById('reset');
        const widthInput = document.getElementById('width');
        const heightInput = document.getElementById('height');
        const minesInput = document.getElementById('mines');
       
        function initGame() {
            // Получаем настройки из полей ввода
            BOARD_WIDTH = parseInt(widthInput.value) || 10;
            BOARD_HEIGHT = parseInt(heightInput.value) || 10;
            MINES_COUNT = parseInt(minesInput.value) || 10;
           
            // Проверяем допустимые значения
            BOARD_WIDTH = Math.max(2, Math.min(1000, BOARD_WIDTH));
            BOARD_HEIGHT = Math.max(2, Math.min(1000, BOARD_HEIGHT));
           
            const maxMines = Math.floor(BOARD_WIDTH * BOARD_HEIGHT * 0.75);
            MINES_COUNT = Math.max(1, Math.min(maxMines, MINES_COUNT));
           
            // Обновляем поля ввода на случай, если значения были изменены
            widthInput.value = BOARD_WIDTH;
            heightInput.value = BOARD_HEIGHT;
            minesInput.value = MINES_COUNT;
           
            // Инициализируем игровое поле
            board = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(0));
            revealed = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(false));
            flagged = Array(BOARD_HEIGHT).fill().map(() => Array(BOARD_WIDTH).fill(false));
            gameOver = false;
            firstClick = true;
            timer = 0;
           
            if (timerInterval) clearInterval(timerInterval);
            timerInterval = null;
           
            // Настраиваем стиль игрового поля
            boardElement.style.gridTemplateColumns = `repeat(${BOARD_WIDTH}, 30px)`;
            boardElement.style.gridTemplateRows = `repeat(${BOARD_HEIGHT}, 30px)`;
           
            updateFlagsDisplay();
            updateTimeDisplay();
            renderBoard();
        }
       
        function placeMines(firstRow, firstCol) {
            let minesPlaced = 0;
           
            while (minesPlaced < MINES_COUNT) {
                const row = Math.floor(Math.random() * BOARD_HEIGHT);
                const col = Math.floor(Math.random() * BOARD_WIDTH);
               
                // Не ставим мину на первую нажатую клетку и вокруг неё
                if (Math.abs(row - firstRow) <= 1 && Math.abs(col - firstCol) <= 1) {
                    continue;
                }
               
                if (board[row][col] !== -1) {
                    board[row][col] = -1;
                    minesPlaced++;
                   
                    // Обновляем счетчики мин вокруг
                    for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_HEIGHT - 1, row + 1); r++) {
                        for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_WIDTH - 1, col + 1); c++) {
                            if (board[r][c] !== -1) {
                                board[r][c]++;
                            }
                        }
                    }
                }
            }
        }
       
        function renderBoard() {
            boardElement.innerHTML = '';
           
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    const cell = document.createElement('div');
                    cell.className = 'cell';
                    cell.dataset.row = row;
                    cell.dataset.col = col;
                   
                    if (revealed[row][col]) {
                        cell.classList.add('revealed');
                       
                        if (board[row][col] === -1) {
                            cell.classList.add('mine');
                            cell.textContent = '💣';
                        } else if (board[row][col] > 0) {
                            cell.textContent = board[row][col];
                            cell.classList.add(`color-${board[row][col]}`);
                        }
                    } else if (flagged[row][col]) {
                        cell.classList.add('flagged');
                        cell.textContent = '🚩';
                    }
                   
                    cell.addEventListener('click', () => handleCellClick(row, col));
                    cell.addEventListener('contextmenu', (e) => {
                        e.preventDefault();
                        handleRightClick(row, col);
                    });
                   
                    boardElement.appendChild(cell);
                }
            }
        }
       
        function handleCellClick(row, col) {
            if (gameOver || flagged[row][col] || revealed[row][col]) return;
           
            if (firstClick) {
                firstClick = false;
                placeMines(row, col);
                startTimer();
            }
           
            revealed[row][col] = true;
           
            if (board[row][col] === -1) {
                // Игрок наступил на мину
                gameOver = true;
                revealAllMines();
                clearInterval(timerInterval);
                alert('Игра окончена! Вы проиграли.');
            } else if (board[row][col] === 0) {
                // Если пустая клетка, открываем соседние
                revealAdjacentCells(row, col);
            }
           
            if (checkWin()) {
                gameOver = true;
                clearInterval(timerInterval);
                alert('Поздравляем! Вы победили!');
            }
           
            renderBoard();
        }
       
        function handleRightClick(row, col) {
            if (gameOver || revealed[row][col]) return;
           
            flagged[row][col] = !flagged[row][col];
            updateFlagsDisplay();
            renderBoard();
        }
       
        function revealAdjacentCells(row, col) {
            for (let r = Math.max(0, row - 1); r <= Math.min(BOARD_HEIGHT - 1, row + 1); r++) {
                for (let c = Math.max(0, col - 1); c <= Math.min(BOARD_WIDTH - 1, col + 1); c++) {
                    if (!revealed[r][c] && !flagged[r][c]) {
                        revealed[r][c] = true;
                        if (board[r][c] === 0) {
                            revealAdjacentCells(r, c);
                        }
                    }
                }
            }
        }
       
        function revealAllMines() {
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    if (board[row][col] === -1) {
                        revealed[row][col] = true;
                    flagged[row][col] = false;
                    }
                }
            }
        }
       
        function checkWin() {
            for (let row = 0; row < BOARD_HEIGHT; row++) {
                for (let col = 0; col < BOARD_WIDTH; col++) {
                    if (board[row][col] !== -1 && !revealed[row][col]) {
                        return false;
                    }
                }
            }
            return true;
        }
       
        function startTimer() {
            timerInterval = setInterval(() => {
                timer++;
                updateTimeDisplay();
            }, 1000);
        }
       
        function updateFlagsDisplay() {
            const flaggedCount = flagged.flat().filter(Boolean).length;
            flagsElement.textContent = MINES_COUNT - flaggedCount;
        }
       
        function updateTimeDisplay() {
            timeElement.textContent = timer;
        }
       
        resetButton.addEventListener('click', initGame);
       
        // Обновляем игру при изменении настроек
        widthInput.addEventListener('change', initGame);
        heightInput.addEventListener('change', initGame);
        minesInput.addEventListener('change', initGame);
       
        // Инициализация игры при загрузке
        initGame();
    </script>
</body>
</html>
[/html]

Я победил!

Подпись автора

Я администратор. Я сделал очень много вещей, например кнопку чата сверху (кстати заходите, если хотите дам вам пароль от пробного аккаунта), отправку файлов (через тот чат, не удаляйте пробный аккаунт пожалуйста, иначе отправка файлов перестанет работать), тёмную тему, нормальное цитирование, выбор смайликов и многое другое.
MatrixMastodo… ой то есть Misskey
[html]<iframe src="https://shitpost.poridge.club/embed/user-timeline/a7w5npj75y?maxHeight=300" data-misskey-embed-id="v1_f2e81845-9b9f-4b1c-a8f8-4edd40b0171c" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" style="border: none; width: 100%; width: 500px; height: 300px; color-scheme: light dark;"></iframe>
<script defer src="https://shitpost.poridge.club/embed.js"></script><a href=https://www.calend.ru target=_blank style="display: inline; position: absolute; margin-left: 20px;"><img src="https://www.calend.ru/img/export/informer.png" width="189" alt="Праздники сегодня" border="0"></a>[/html]

0

11

Gregon написал(а):

(#10)
Я победил!

На Профессионале?

Подпись автора

https://forumupload.ru/uploads/001c/58/e1/5/454984.gif

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»



Вы здесь » Форум РОС » Темы для общения » Опрос №55: В какую(ие) из данных игр вы играли?