|
5 / 5 / 0
Регистрация: 28.06.2013
Сообщений: 116
|
||||||
Тетрис на c++03.08.2013, 21:13. Показов 7156. Ответов 10
Метки нет (Все метки)
Я решил проверить свои скудные знания языка и написать всем известную игру тетрис. Вот что получилось.
Кликните здесь для просмотра всего текста
Но только она не работает должным образом. То есть не падает блок. нельзя двигать его по бокам. В чем ошибка? и насколько правильнен код? и как написать лучше? Добавлено через 7 минут да и как можно записать без static, а то это меня напрягает, все таки статик для всех параметры одинаковы, а мне надо будет сделать для каждого объекта копию его класса, чтобы как бы параметры типа координаты и значка были лично для этого объекта. все таки надо сделать спавн блоков
0
|
||||||
| 03.08.2013, 21:13 | |
|
Ответы с готовыми решениями:
10
Тетрис на C++ Тетрис на С++
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 04.08.2013, 03:25 | ||
|
Повороты наверно делаются просто для какждого блока в зависимости от формы там ге, квадрат или палка программируешь как она будет отображатся после поворота, короче как изменит свое состояния не знаю но похоже самое тяжолое это сделать поворот хотя кто его знает, да тут наверно каждый блок должен хранить состояние поля. И вообще структуру программы если б я делал я б сделал все в одном классе, просто при начале хода сделал бы рандомный выбор функций фигур, функция палки, функция квадрата и.тд и запрограммировал бы каждую функцию и они б уже до конца обработали поле без создания там разных классов, так просто мне эта мелкая программа яснее представляется. По такому циклу яб делал: рандомно выбираешь какой блок выпадет, это рандомиш число, а затем в swtich определяешь фунцию которая изменяет координаты поля каждая по своему или квадрат или палка, и в цикле доводит до конца пока вниз не опустится, наверно как то в этот период нужно обрабатывать три события вправа влево поворот. Село на низ проверяешь заполнены ли строки массива, удаляешь заполненые строки, затем снова делаешь рандомный выбор функции и так пока буде место свободное в массиве, ну например две верхних строки свободные. как токо они не свободны, то выводишь типо пользователь проиграл. В принципе тут не сильно понятно как события ловить в период падения, я просто как события ловить вообще не знаю, но сама реализация и алгоритм я б по такому делал, мне так кажется намного проще чем разбивать на классы. Добавлено через 2 минуты Gomg, Ты тут написал 90 строк кода и спрашиваешь почему оно не работает, когда там должно быть строк примерно 1.5к
0
|
||
|
5 / 5 / 0
Регистрация: 28.06.2013
Сообщений: 116
|
|||||||||||
| 04.08.2013, 08:44 [ТС] | |||||||||||
|
так почему-то не назначается массиву символ по измененной y++ координате
Добавлено через 1 час 5 минут
0
|
|||||||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 04.08.2013, 12:24 | ||
|
0
|
||
|
5 / 5 / 0
Регистрация: 28.06.2013
Сообщений: 116
|
|
| 04.08.2013, 16:46 [ТС] | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 23.06.2013
Сообщений: 13
|
|||||||
| 04.08.2013, 17:12 | |||||||
1
|
|||||||
|
1 / 1 / 2
Регистрация: 13.01.2013
Сообщений: 71
|
|
| 04.08.2013, 17:12 | |
|
да с поворотами и проверкой на столкновения фигур тут заморочки
0
|
|
|
1 / 1 / 0
Регистрация: 23.06.2013
Сообщений: 13
|
|
| 04.08.2013, 17:34 | |
|
извини, забыл сказать: надо подключить ctime перед использованием timeGetTime
#include <ctime>
0
|
|
|
5 / 5 / 0
Регистрация: 28.06.2013
Сообщений: 116
|
|
| 05.08.2013, 08:39 [ТС] | |
|
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__timeGetTime@0 в функции "void __cdecl Time(void)" (?Time@@YAXXZ)
вот что выходит после этого. и define почему-то не работает. пишет что что-то пустое, хотя значение есть. Пришлось писать просто const float TIME_TICK Добавлено через 27 секунд <ctime> есть
0
|
|
|
1 / 1 / 0
Регистрация: 23.06.2013
Сообщений: 13
|
||||||
| 06.08.2013, 22:57 | ||||||
|
Gomg, извини,что не отвечал (не мог добраться к инету...)
на самом деле надо подключать не <ctime> а <Windows.h> и подключить в Project / ... Propertes / Configuration propertes / Linker / Input в строке Additional Dependences библиотеку winmm.lib. В этой строке перечислены библиотеки, кот. подключаются по умолчанию. Судя по всему winmm.lib у тебя там не записан. Вот код простого примерчика использования этой функции. Программа отмеряет время между вводами данных с клавиатуры и выводит на экран
timeGetTime Function The timeGetTime function retrieves the system time, in milliseconds. The system time is the time elapsed since Windows was started. Syntax DWORD timeGetTime(void); Parameters This function has no parameters. Return Value Returns the system time, in milliseconds. Remarks The only difference between this function and the timeGetSystemTime function is that timeGetSystemTime uses the MMTIME structure to return the system time. The timeGetTime function has less overhead than timeGetSystemTime. Note that the value returned by the timeGetTime function is a DWORD value. The return value wraps around to 0 every 2^32 milliseconds, which is about 49.71 days. This can cause problems in code that directly uses the timeGetTime return value in computations, particularly where the value is used to control code execution. You should always use the difference between two timeGetTime return values in computations. Requirements Minimum supported client Windows 2000 Professional Minimum supported server Windows 2000 Server Header Mmsystem.h (include Windows.h) Library Winmm.lib DLL Winmm.dll See Also Multimedia Timers Multimedia Timer Functions Send comments about this topic to Microsoft Build date: 10/9/2009 [/SPOILER]
0
|
||||||
| 06.08.2013, 22:57 | |
|
Помогаю со студенческими работами здесь
11
Тетрис Тетрис Тетрис
Тетрис на mvc Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|