Форум программистов, компьютерный форум CyberForum.ru

Как создать фигуры для тетриса? - C++

Восстановить пароль Регистрация
 
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
05.08.2014, 22:31     Как создать фигуры для тетриса? #1
Привет всем! Захотел написать простенькую игру и решил начать с тетриса. Пишу в visual studio 2013 c++. Как и всегда появляются проблемы:
Нарисовал текстурки для фигур, но я не знаю как из текстур сделать фигуры.

P.s.
Текстуры прикрепил к посту.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2014, 22:31     Как создать фигуры для тетриса?
Посмотрите здесь:

C++ инклуды для написания 2 мерного тетриса
C++ Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
класс для моделирования шахматной фигуры C++
C++ Как можно бы создать метод для ввода размерности (т.е. для ввода private переменных n,m)?
программа в виде тетриса(нарды, шашки) или вращения планет по орбите C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
05.08.2014, 22:35  [ТС]     Как создать фигуры для тетриса? #2
Пишу в Windows forms clr. Не использую никаких графических библиотек.
-=ЮрА=-
Заблокирован
Автор FAQ
05.08.2014, 22:36     Как создать фигуры для тетриса? #3
STBOL, зачем из текстур?Нарисуй для начала квадратами, получится примерно так как на миниатюре. Текстуры и прочее накладывают когда есть рабочий опробованный алгоритм. Азы по GDI графике можешь найти здесь
Как рисовать элементарные геометрические фигуры?
Миниатюры
Как создать фигуры для тетриса?  
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
05.08.2014, 22:55  [ТС]     Как создать фигуры для тетриса? #4
-=ЮрА=-, Спасибо, но похоже тут без основ winApi будет трудновато разобраться. Придется все таки прочитать книги Педзольда...

Если разговор зашел о winApi то, есть вопрос: Книга Педзольда довольно старая и там он пишет чуть ли не про первый windows с графической оболочкой, так вот изменений в winApi с тех пор нет и можно продолжать читать его?
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
05.08.2014, 23:07     Как создать фигуры для тетриса? #5
тут работа с GDI+. В Windows forms это пространство имен System.Drawing ( и др)
Оно там по умолчанию подключено.
-=ЮрА=-
Заблокирован
Автор FAQ
05.08.2014, 23:36     Как создать фигуры для тетриса? #6
Цитата Сообщение от STBOL Посмотреть сообщение
Если разговор зашел о winApi то, есть вопрос: Книга Педзольда довольно старая и там он пишет чуть ли не про первый windows с графической оболочкой, так вот изменений в winApi с тех пор нет и можно продолжать читать его?
- касательно GDI ничего не менялось уже долгое время. За это время да, появились SVG GDI+ и многие другие графические интерфейсы которые позволяют делать то что GDI не может. НО я бі рекомендовал сначала познать GDI чтобі в дальнейшем понимать "откуда растут ноги" большинства графических оболочек.
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
08.08.2014, 19:34  [ТС]     Как создать фигуры для тетриса? #7
Если рисовать с GDI, то я совсем не представляю как обратиться к нарисованному объекту. Если спуск можно реализовать перерисовкой, но при этом будут стираться другие объекты.
-=ЮрА=-
Заблокирован
Автор FAQ
08.08.2014, 19:49     Как создать фигуры для тетриса? #8
Цитата Сообщение от STBOL Посмотреть сообщение
Если рисовать с GDI, то я совсем не представляю как обратиться к нарисованному объекту. Если спуск можно реализовать перерисовкой, но при этом будут стираться другие объекты.
- а кто сказал что нужно обарщаться к нарисованному?Заводишь целочисленную матрицу и в ней устанавливаешь 1 в занятых и ноль в незанятых клетках.
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
08.08.2014, 20:18  [ТС]     Как создать фигуры для тетриса? #9
-=ЮрА=-, Ого! Я почему-то и не подумал об этом, спасибо!
Иными словами нужен цикл, который будет проверять каждую клетку при каждом тике.
-=ЮрА=-
Заблокирован
Автор FAQ
08.08.2014, 21:02     Как создать фигуры для тетриса? #10
Цитата Сообщение от STBOL Посмотреть сообщение
-=ЮрА=-, Ого! Я почему-то и не подумал об этом, спасибо!
Иными словами нужен цикл, который будет проверять каждую клетку при каждом тике.
- для отрисовки да нужен цикл, прохода по всему полю.
Цитата Сообщение от STBOL Посмотреть сообщение
-=ЮрА=-, Ого!
- поверь на самом деле тетрис очень элементарен, в принципе как пакман. Ты про цвет ещё не забудь(занято не занято подходит для 2-цветной версии. Для многоцветной версии можешь идти двумя путями либо делять все на структурах(т.е матрица из структур в которой одно поле отвечает за занятый/не занятый квадратик а второе за цвет), либо же завести ,что при константном размере поля на мой вгляд проще, доп матрицу цвета.
STBOL
 Аватар для STBOL
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 86
08.08.2014, 21:09  [ТС]     Как создать фигуры для тетриса? #11
-=ЮрА=-, Да, я тоже решил сделать матрицу для цвета.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 02:33     Как создать фигуры для тетриса?
Еще ссылки по теме:

C++ Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
C++ С чего начать создания графического тетриса
C++ Главный цикл тетриса

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

Или воспользуйтесь поиском по форуму:
_Ivana
2192 / 1397 / 124
Регистрация: 01.03.2013
Сообщений: 4,159
Записей в блоге: 2
09.08.2014, 02:33     Как создать фигуры для тетриса? #12
Спасибо участникам темы за дельные рекомендации и примеры кода! Сейчас впервые в жизни решил попробовать создать оконное приложение в среде С++ Вижуал Студии, создал пустой проект, почитал немного интернета и все работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.............
    case WM_LBUTTONDOWN:
        PM = MAKEPOINTS(lParam);
        x2 = PM.x;
        y2 = PM.y;
        InvalidateRgn(hWnd, NULL, FALSE);
        UpdateWindow(hWnd);
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        hPen1 = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
        holdPen = SelectObject(hdc, hPen1);
        MoveToEx(hdc, x1, y1, NULL);
        LineTo(hdc, x2, y2);
        x1 = x2;
        y1 = y2;
        SelectObject(hdc, holdPen);
        DeleteObject(hPen1);
        EndPaint(hWnd, &ps);
        break;
..............
правда у меня x1,y1,x2,y2 - глобальные переменные, не знаю где их еще можно хранить, чтобы они были снова видны при перерисовке окна функцией CALLBACK WndProc...

Добавлено через 7 минут
Цитата Сообщение от STBOL Посмотреть сообщение
Если спуск можно реализовать перерисовкой, но при этом будут стираться другие объекты.
Какой Пензольд - полчаса интернета и волшебные ответы найдены :
раз и два
Yandex
Объявления
09.08.2014, 02:33     Как создать фигуры для тетриса?
Ответ Создать тему
Опции темы

Текущее время: 09:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru