English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Введение в эксперимент
1.1 Содержание эксперимента
В этом разделе мы анализируем思路 перед дизайном Тетриса и介绍 способ использования библиотеки ncurses.
1.2 Знания по экспериментам
Основы программирования на C++
Использование библиотеки ncurses
Логический дизайн Tetris
1.3 Среда выполнения
терминал xface
компилятор g++
библиотека ncurses
1.4 Кто подходит для этого курса
Этот курс среднего уровня сложности, подходит для студентов с базовыми знаниями C++ и интересующихся разработкой игр и анализом логики.
1.5 Получение кода
git clone https://github.com/Gamerchen/game_zero.git
第二节:подготовка к разработке
2.1 Установка библиотеки ncurses
sudo apt-get update sudo apt-get install libncurses5-dev
2.2 Компиляция программы
Команда компиляции должна включать опцию -l для включения библиотеки ncurses:
g++ main.c -l ncurses
Третий раздел: экспериментальная теория
3.1 Анализ перед разработкой
Прежде чем начать программирование, нам нужно сначала проанализировать, какие функции необходимо реализовать в программе, и как их можно разделить на модули. В случае с Tetris, первой мыслью должно быть отображение блоков, затем их падение, перемещение влево и вправо, вращение, и, наконец, удаление строк при заполнении уровня. Кроме того, базовая игра Tetris должна иметь функцию подсказки следующего блока.
Таким образом, в нашем программировании мы должны решить следующие проблемы:
Отображение блока
Реализация движения блока
Вращение блока
Удаление строк при заполнении уровня
Подсказка следующего блока
3.2 Основные графические элементы
Каждый блок состоит из четырех box, они падают из центра игры, и могут вращаться, если не сталкиваются с границами и другими блоками.
3.3 Использование библиотеки NCURSES
Проще говоря, NCURSES - это клон CURSES из System V Release 4.0 (SVr4), это библиотека, которую можно свободно конфигурировать, полная совместимость с старыми версиями CURSES, и библиотека, которая позволяет приложениям напрямую контролировать отображение на экране терминала. NCURSES обертывает базовые функции терминала, включает функции создания окон и расширения CURSES базовой библиотеки с помощью Menu, Panel и Form, позволяя создавать приложения, которые содержат одновременно несколько окон (multiple windows), меню (menus), панели (panels) и формы (forms). Окна могут быть управляемы независимо, например, их можно прокручивать (scrollability) или скрывать. Меню (Menus) позволяют пользователям создавать опции команд, что упрощает выполнение команд. А формы (Forms) позволяют пользователям создавать окна для простого ввода и отображения данных. Панели (Panels) являются расширением функции управления окнами NCURSES и могут использоваться для покрытия или堆积 окон.
3.3.1 NCURSES -- с программы "Hello World"
Пример:
#include <ncurses.h> int main() { initscr(); // Инициализация, вход в режим NCURSES printw("Hello World!"); // Вывод "Hello World!" на виртуальный экран refresh(); // Запись содержимого виртуального экрана на монитор и обновление getch(); // Ожидание ввода пользователя endwin(); // Выход из режима NCURSES return 0; }
В данном примере мы介绍了 использование самых базовых функций библиотеки NCURSES, функции которых описаны в комментариях, поэтому мы не будем их повторять.
3.3.2 Механизм окон
При инициализации NCURSES автоматически создается окно с именем stdscr, размером обычно 80 столбцов и 25 строк (размер может варьироваться в зависимости от монитора или видеокарты), кроме того, вы можете создать свои собственные окна с помощью функций системы окон.
Пример: если вызвать следующую функцию:
printw("Hi!"); refresh();
Это выведет "Hi!" в текущей позиции курсора stdscr, вызов функции refresh() обновит только буфер stdscr.
Если вы уже создали окно с именем win и хотите выводить содержимое в этом окне, добавьте перед обычной функцией префикс w, а также измените параметры.
printw(string) // Вывод строки string в текущей позиции курсора stdscr
mvprintw(y, x, string) // Вывод строки string в координате (y, x)
wprintw(win,string) //Напечатайте строку string в текущем положении курсора окна win
mvwprintw(win,y,x,string) //Переместите курсор в положение (y,x) окна win и напечатайте строку string
Надеюсь, что после изучения примеров вы уже можете понять различия в функциях по их именам.
3.3.3 функции newwin и box
Создание окна начинается с функции newwin(), которая возвращает указатель на структуру окна, который может быть передан в функции, требующие параметр окна, такие как wprintw().
Однако, созданный нами окно мы не видим, поэтому для его видимости необходимо использовать функцию box() для рисования рамки вокруг уже определенного окна.
Пример:
WINDOW *create_newin(int height, int width, int starty, int startx) { WINDOW *local_win; local_win = newin(height, width, starty, startx); box(local_win, 0, 0); wrefresh(local_win); return local_win; }
Вот и все, что я хотел рассказать о базовом использовании библиотеки NUCRSES, при возникновении проблем в процессе использования все равно необходимо обращаться к соответствующей документации.
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, материал предоставлен пользователями Интернета в порядке добровольного сотрудничества и самостоятельной загрузки. Этот сайт не обладает правами собственности, не производит ручную редактуру и не несет ответственности за связанные с этим юридические последствия. Если вы обнаружите материалы,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении и предоставления соответствующих доказательств. При подтверждении факта нарушения, этот сайт немедленно удалил涉嫌侵权的内容。