Как вывести сообщение на экран
Перейти к содержимому

Как вывести сообщение на экран

  • автор:

Вывод сообщения на экран при условии

Есть код змейки, работает нормально (делал по учебнику). При столкновении с границей поля или с собой, игра выводит на экран сообщение «Конец игры». Я попытался добавить похожее условие, если игрок собирает 3 яблока, то выводится сообщение и победе, но у меня какая-то ошибка, браузер ругается на return в 190 строке.

    Змейка!   canvas < /*background-color: #839C86;*/ background-image: url(https://i.pinimg.com/originals/31/fe/12/31fe123182f2a5f956bf542af837ca12.jpg); margin-left: 35%; margin-top: 1%; >body < background-image: url(Snake/img/Background.jpg); >text < color: white; >button < margin-top: 4%; margin-left: 58%; font-family: 'Press Start 2P'; font-size: 10px; >.gradient  

Отслеживать
задан 28 мая 2021 в 7:20
Дмитрий Судонин Дмитрий Судонин
98 7 7 бронзовых знаков
@ZaArs вы ошибаетесь. не прочитав делаете выводы
28 мая 2021 в 7:47
ок, увидел, сорян
28 мая 2021 в 7:48

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Немного подправил код, теперь работает.

Проблема была в следущей части кода:

 if (score === 3) < Win(); return; //На это ругается браузер. >; 

Блок return находился вне функции.

// Настройка «холста» var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); // Получаем ширину и высоту элемента canvas var width = canvas.width; var height = canvas.height; // Вычисляем ширину и высоту в ячейках var blockSize = 10; var widthInBlocks = width / blockSize; var heightInBlocks = height / blockSize; // Устанавливаем счет 0 var score = 0; // Рисуем рамку var drawBorder = function () < ctx.fillStyle = "#383838"; ctx.fillRect(0, 0, width, blockSize); ctx.fillRect(0, height - blockSize, width, blockSize); ctx.fillRect(0, 0, blockSize, height); ctx.fillRect(width - blockSize, 0, blockSize, height); >; // Выводим счет игры в левом верхнем углу var drawScore = function () < ctx.font = "20px 'Press Start 2P'"; ctx.fillStyle = "White"; ctx.textAlign = "left"; ctx.textBaseline = "top"; ctx.fillText("Счет: " + score, blockSize, blockSize); >; // Отменяем действие setInterval и печатаем сообщение «Конец игры» var gameOver = function () < clearInterval(intervalId); ctx.font = "30px 'Press Start 2P'"; ctx.fillStyle = "White"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillText("Конец игры", width / 2, height / 2); >; var Win = function () < //Переменная Win с сообщением. clearInterval(intervalId); ctx.font = "30px 'Press Start 2P'"; ctx.fillStyle = "White"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillText("Победа !", width / 2, height / 2); >; // Рисуем окружность (используя функцию из главы 14) var circle = function (x, y, radius, fillCircle) < ctx.beginPath(); ctx.arc(x, y, radius, 0, Math.PI * 2, false); if (fillCircle) < ctx.fill(); >else < ctx.stroke(); >>; // Задаем конструктор Block (ячейка) var Block = function (col, row) < this.col = col; this.row = row; >; // Рисуем квадрат в позиции ячейки Block.prototype.drawSquare = function (color) < var x = this.col * blockSize; var y = this.row * blockSize; ctx.fillStyle = color; ctx.fillRect(x, y, blockSize, blockSize); >; // Рисуем круг в позиции ячейки Block.prototype.drawCircle = function (color) < var centerX = this.col * blockSize + blockSize / 2; var centerY = this.row * blockSize + blockSize / 2; ctx.fillStyle = color; circle(centerX, centerY, blockSize / 2, true); >; // Проверяем, находится ли эта ячейка в той же позиции, что и ячейка // otherBlock Block.prototype.equal = function (otherBlock) < return this.col === otherBlock.col && this.row === otherBlock.row; >; // Задаем конструктор Snake (змейка) var Snake = function () < this.segments = [ new Block(7, 5), new Block(6, 5), new Block(5, 5) ]; this.direction = "right"; this.nextDirection = "right"; >; // Рисуем квадратик для каждого сегмента тела змейки Snake.prototype.draw = function () < for (var i = 0; i < this.segments.length; i++) < this.segments[i].drawSquare("#0cd3cd"); >>; // Создаем новую голову и добавляем ее к началу змейки, // чтобы передвинуть змейку в текущем направлении Snake.prototype.move = function () < var head = this.segments[0]; var newHead; this.direction = this.nextDirection; if (this.direction === "right") < newHead = new Block(head.col + 1, head.row); >else if (this.direction === "down") < newHead = new Block(head.col, head.row + 1); >else if (this.direction === "left") < newHead = new Block(head.col - 1, head.row); >else if (this.direction === "up") < newHead = new Block(head.col, head.row - 1); >if (this.checkCollision(newHead)) < gameOver(); return; >this.segments.unshift(newHead); if (newHead.equal(apple.position)) < score++; apple.move(); >else < this.segments.pop(); >if (score === 3) < //При получении трёх яблок, игра должна остановиться и вывести сообщение о победе. Win(); return; >; >; // Проверяем, не столкнулась ли змейка со стеной или собственным // телом Snake.prototype.checkCollision = function (head) < var leftCollision = (head.col === 0); var topCollision = (head.row === 0); var rightCollision = (head.col === widthInBlocks - 1); var bottomCollision = (head.row === heightInBlocks - 1); var wallCollision = leftCollision || topCollision || rightCollision || bottomCollision; var selfCollision = false; for (var i = 0; i < this.segments.length; i++) < if (head.equal(this.segments[i])) < selfCollision = true; >> return wallCollision || selfCollision; >; // Задаем следующее направление движения змейки на основе нажатой // клавиши Snake.prototype.setDirection = function (newDirection) < if (this.direction === "up" && newDirection === "down") < return; >else if (this.direction === "right" && newDirection === "left") < return; >else if (this.direction === "down" && newDirection === "up") < return; >else if (this.direction === "left" && newDirection === "right") < return; >this.nextDirection = newDirection; >; // Задаем конструктор Apple (яблоко) var Apple = function () < this.position = new Block(20, 20); >; // Рисуем кружок в позиции яблока Apple.prototype.draw = function () < this.position.drawCircle("Red"); >; // Перемещаем яблоко в случайную позицию Apple.prototype.move = function () < var randomCol = Math.floor(Math.random() * (widthInBlocks - 2)) + 1; var randomRow = Math.floor(Math.random() * (heightInBlocks - 2)) + 1; this.position = new Block(randomCol, randomRow); >; // Создаем объект-змейку и объект-яблоко var snake = new Snake(); var apple = new Apple(); // Запускаем функцию анимации через setInterval var intervalId = setInterval(function () < ctx.clearRect(0, 0, width, height); drawScore(); snake.move(); snake.draw(); apple.draw(); drawBorder(); >, 80); // Преобразуем коды клавиш в направления var directions = < 65: "left", 87: "up", 68: "right", 83: "down" >; // Задаем обработчик события keydown (клавиши-стрелки) $("body").keydown(function (event) < var newDirection = directions[event.keyCode]; if (newDirection !== undefined) < snake.setDirection(newDirection); >>); $(document).on("click", ".update", function()< location.reload(true); >);
canvas < /*background-color: #839C86;*/ background-image: url(https://i.pinimg.com/originals/31/fe/12/31fe123182f2a5f956bf542af837ca12.jpg); margin-left: 35%; margin-top: 1%; >body < background-image: url(Snake/img/Background.jpg); >text < color: white; >button < margin-top: 4%; margin-left: 58%; font-family: 'Press Start 2P'; font-size: 10px; >.gradient
    

Как вывести сообщение на экран в любое время?

Доброго времени суток, написал простенький код для alertDialog и хотел бы вывести его вне приложения. То есть чтоб он вылезал сам через какое-то определенное время, вне зависимости от активности пользователя. Возможно alertDialog не совсем подходит для этого и есть какая-то специальная служба? Искал на протяжении недели хоть какую-то информацию об этом, но все тщетно. Заранее спасибо за ответ.

  • Вопрос задан более года назад
  • 143 просмотра

Комментировать
Решения вопроса 1

AgentSmith

Николай Савельев @AgentSmith
Это мой правильный ответ на твой вопрос

На уровне системы такая дичь запрещена.
Можно только делать уведомления Notifications с помощью сервисов, например

Ответ написан более года назад
Нравится 1 5 комментариев
Nevers @Nevers Автор вопроса

А как же работают самоучители английского, которые выводят на экран свои тесты, пока ты например переписываешься где-то или смотришь видос?

AgentSmith

Николай Савельев @AgentSmith
Nevers, ни разу такого не видел
Nevers @Nevers Автор вопроса

Николай Савельев, По крайней мере раньше очень популярны были приложения по изучению английского, которые при включении телефона выводили свое диалоговое окно и нужно было решить задачку(ну или просто закрыть его). Возможно, конечно, такую функцию убрали, потому что на данный момент в плей маркете я не наблюдаю приложений с такими возможностями.

AgentSmith

Николай Савельев @AgentSmith
Nevers, именно так и есть. Это вредная для пользователя фича и поэтому её убрали.
Не надо так делать
Nevers @Nevers Автор вопроса
Николай Савельев, понял, спасибо огромное!
Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

android

  • Android
  • +1 ещё

Как сделать авто переключение фрагментов?

  • 1 подписчик
  • 53 минуты назад
  • 7 просмотров

Вывод сообщений на экран монитора или ТВ одним нажатием кнопки на компьютере.

Иногда нужно быстро вывести короткое сообщение на экран монитора: Входите, Ожидайте, Проходите на посадку, Приема нет и т.д.

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

Новый функционал плеера позволяет менять информацию на экране монитора быстро и максимально просто — выбирая нужный пункт меню или просто нажимая 1 кнопку на клавиатуре компьютера. Посмотрите видео ролик ниже, в котором подробно рассказано о новой функции управления сообщениями.

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

  • в банках
  • в автобусных терминалах
  • в институтах
  • в гос. учреждениях
  • в поликлиниках
  • в офисах предприятий
  • на производстве

Как вывести сообщение на экран

Вывести сообщение пользователю на экран можно с помощью команды:

Это сообщение появится в области сообщений.

Еще вариант — воспользоваться СообщениеПользователю() . Разобраться с ним, говорят что для клиент-серверного варианта лучше использовать его.

Чтобы показать сообщение в окне, надо воспользоваться другой функцией:

Затухающее окно внизу экрана (только на клиенте):

  • Как получить состояние галочки и открыть на редактирование пару полей
  • Как получить значение константы, как установить значение константы
  • 1С 8.2: Где какие модули выполняются — на клиенте или на сервере
  • 1С 8.2: Где какие модули выполняются — на клиенте или на сервере, объяснение второе
  • 1С 8.2: Где какие модули выполняются — на клиенте или на сервере, объяснение третье
  • Пример обращения к константе
  • 1С: Как вывести сообщение пользователю на экран
  • 1С 8.2: Как быстро сделать окно запроса с вопросом Да/Нет
  • Пример вызова произвольной формы со списком выбора
  • Как удалить помеченные на удаление объекты в 1С 8.2 Управляемое приложение
  • Как пометить сразу много записей в 1С 8.2
  • Система компоновки данных (СКД) в 1С 8.2 для самых маленьких
  • Как сканировать картинки из 1С:8.2
  • Как определить, что запущен тонкий клиент или толстый
  • Как ограничить доступ к документам. Как разрешить редактировать только пользователю, создавшему документ.
  • Где в 1С лежат файлы лицензии
  • Как преобразовать тип поля из строки в справочник
  • Пример выгрузки в XML
  • Пример выгрузки в XML, вариант 2
  • Как перебрать элементы справочника
  • Как сделать переключатель (радиокнопку)
  • Пример XML кода элемента справочника
  • Пример разделения прав доступа (Шпаков)
  • Как объекту ЧтениеXML задать данные из ЭлементDOM?
  • Как узнать список всех справочников в конфигурации
  • Как для элемента подсистемы назначить видимость разным пользователям
  • Как в 1С разбить строку на подстроки, аналог функции explode в PHP
  • Программное управление списком пользователей
  • 1С: Динамическое поле. Дополнительная вычисляемая или текстовая колонка в списке.
  • 1С: Динамическое поле или вычисляемые колонки
  • Подчиненный справочник. Объяснение связи параметров выбора
  • 1С 8.2: Как вывести дату в нужном формате
  • Последовательность выполнения предопределенных процедур документа в 1С 8 при записи и проведении.
  • Как отловить событие пометки на удаление
  • 1С 8.2. Дата и пустая дата в языке запросов
  • 1С 8.2: Как передать в динамический список (в запрос) значение переменной
  • Команды запуска 1С, запуск через ярлык
  • 1С 8.2: Как получить дату с начала эпохи UNIX
  • 1C 8.2: Как проверить тип значения
  • 1С 8.2: Как работает функция УстановитьНовыйКод()
  • 1С 8.2: Основные функции
  • 1С: Выгрузка / Загрузка данных посредством текстовых (TXT) файлов
  • 1С 8.2: Как проверить, почему элемент не виден в интерфейсе
  • 1С 8.2: Как выполнить экспортируемую процедуру объекта, находясь в его форме?
  • 1С 8.2: Как открыть форму списка с некоторым отбором (статья из ИТС)
  • 1С 8.2: Как сделать связь параметра выбора, если элемент, по которому делается выбор отсутствует на форме
  • 1С 8.2: Как перебрать (выбрать) элементы подчиненного справочника
  • 1С: Интерактивное копирование объекта, обработка создание скопированного объекта
  • Как сделать кнопку множественного добавления к элементу справочника
  • Как получить владельца формы подчиненного справочника
  • 1С 8.2: Как установить сортировку по-умолчанию в динамическом списке
  • 1С 8.2 Как показать команду в подсистеме (как перенести с панели действий на панель навигации)
  • 1С: Как получить элементы древовидного справочника в ветке и ниже
  • 1С 8.2: Как выбрать (перебрать) все элементы из определенной группы
  • 1С 8.2: Вывести список элементов, расположенных в корне справочника
  • 1С 8: Как вывести иерархический справочник
  • 1С 8: Определить количество подчиненных элементов у выбранного элемента справочника
  • 1C 8.2: Обход древовидной выборки (иерархии) примеры Шпаков
  • 1С 8.2: Управление обязательностью заполнения поля АвтоОтметкаНезаполненного и ОтметкаНезаполненного
  • 1С 8.2: Как сохранять значения реквизитов на произвольной форме
  • 1С: Создание таблицы значений через код
  • 1С: Копирование структуры таблицы значений (создание новой таблицы со структурой, идентичной уже существующей)
  • 1С: Полное копирование (структуры и данные) таблицы значений в новую таблицу значений
  • 1С: Как программно получить состав плана обмена
  • 1С: Как преобразовать в УникальныйИдентификатор (GUID)
  • 1С: Как получить ссылку по уникальному идентификатору
  • 1C: Как в запросе выполнить отбор по «объект не найден»
  • 1С: Как сравнивать типы значений
  • 1С: Где спрятана видимость настройки отбора в макете СКД. Создание отчетов.
  • Как в 1С запустить команду системы
  • 1С 8.2: Как перехватить формирование отчета с СКД?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *