0 / 0 / 0
Регистрация: 16.08.2021
Сообщений: 17
1

Управление змейкой

21.12.2021, 17:29. Показов 671. Ответов 9
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Как реализовать управление персонажем (например, змейкой) в консоли? Нужно ли это делать в отдельном потоке, или как-то через дельтатайм? Или нужно использовать и то, и другое? Где можно об этом почитать или увидеть какие-то примеры? Интересует именно момент со считыванием клавиш при работающей программе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2021, 17:29
Ответы с готовыми решениями:

Управление змейкой
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include...

Сортировка змейкой
И снова прошу помочь с сортировкой).Я уже 2-ой день голову ломаю,но не могу написать программу...

Заполнение змейкой
заполнение матрицы по диагонали змейкой по принципу 1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16....

Матрица змейкой
Нужно вывести матрицу змейкой, но выводит по строчкам, что нужно исправить? // Матрица змейкой...

9
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
21.12.2021, 17:49 2
BlC, тебе под винду?
0
0 / 0 / 0
Регистрация: 16.08.2021
Сообщений: 17
21.12.2021, 17:54  [ТС] 3
Да, в консоли аркаду пытаюсь сделать
0
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
21.12.2021, 17:59 4
Тогда смотри консольное API Windows(и для "рисования" оно будет эффективнее).
https://docs.microsoft.com/en-... nsoleinput
Там в конце ссылка на пример есть.

Не по теме:

А вообще не нужно такие игры в консоли делать. Она для текстового ввода/вывода.

1
0 / 0 / 0
Регистрация: 16.08.2021
Сообщений: 17
21.12.2021, 18:08  [ТС] 5
В качестве обучения вроде бы норм, почему нет? С графикой работать — это ещё несколько месяцев читать только про графическое апи, векторную математику и прочие связанные вещи... Для первой проги, где знакомишься с основами не слишком подходит же?
0
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
21.12.2021, 18:14 6
Цитата Сообщение от BlC Посмотреть сообщение
Для первой проги, где знакомишься с основами не слишком подходит же?
Трудно сказать. Знакомится с основами языка(и программирования) лучше на решении других задач.
Хотя, есть люди, которые сразу на Unreal Engine прыгают...

Да, кстати, для неблокирующего чтения тебе понадобится функция PeekConsoleInput.
ReadConsoleInput блокирует. Или предварительно запрашивай количество сообщений(функцией GetNumberOfConsoleInputEvents) и только если они есть, читай.
1
0 / 0 / 0
Регистрация: 16.08.2021
Сообщений: 17
21.12.2021, 18:20  [ТС] 7
Благодарю.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
21.12.2021, 18:43 8
Цитата Сообщение от BlC Посмотреть сообщение
С графикой работать — это ещё несколько месяцев читать только про графическое апи, векторную математику и прочие связанные вещи...
Берите готовый фреймворк, там и без векторной математики неплохо. Вот примерчик.
0
0 / 0 / 0
Регистрация: 16.08.2021
Сообщений: 17
24.12.2021, 17:05  [ТС] 9
Странно, что никто не предложил через _kbhit() + _getch() из <conio.h> сделать. Простейшая и удобнейшая реализация.

Добавлено через 4 минуты
Нашёл в интернете спустя некоторое время.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
Sleep(sleep_time); // задержка потока программы на заданный ранее интервал
 
        if (_kbhit()) // проверяем, была ли нажата какая-либо клавиша и запускаем её обработку в случае ИСТИНЫ
        {
            int k = _getch(); // считываем код клавиши из буфера
            if (k == 0 || k == 224) // если первый код - вспомогательный, считываем второй код
                k = _getch();
            switch (k) // пропускаем код нажатой клавиши внутрь оператора выбора
            {
            case 80: // если была нажата клавиша вниз
                                    someFunc(); // ваш код
                break;
 
...
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
25.12.2021, 16:09 10
Цитата Сообщение от BlC Посмотреть сообщение
В качестве обучения вроде бы норм, почему нет?
Я за написание очень маленьких игр в качестве обучающей практики программирования, но не нужно только на играх зацикливаться. Надо чередовать: что-то с GUI писать, что-то с базами данных, что-то с парсингом XML/JSON из сети, простые задачки порешать на https://www.codewars.com/, что-то клиет-серверное на сокетах, какие-то графики с таблицами, unit-тесты пописать и т.д. В качестве GUI фреймворка лучше взять Qt, потому что он самый популярный и по нему больше всего вакансий. Очень хорошие уроки по введению в Qt: https://zetcode.com/gui/qt5/ Я даже находил перевод этих уроков. В конце есть туториалы по играм: Snake game и Breakout game Для мотивации, какие маленькие игры можно ещё написать: Несколько небольших игрушек Я сам сейчас тоже пишу маленькие игры, потому что очень нравится процесс. Давно хочу написать змейку по сети на сокетах.
0
25.12.2021, 16:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2021, 16:09
Помогаю со студенческими работами здесь

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

Заполнение матрицы змейкой
Подскажите как мне изменить код #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace...

Заполнение матрицы змейкой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 ...

Заполнение матрицы змейкой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 в...

Turbo C++(матрица змейкой)
Здравствуйте уважаемые программисты!!!Помогите с решением задачи на матрицу. Нужно просто ввести n...

Заполнение матрици змейкой
Как заполнить квадратную матрицу змейкой.1234 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru