Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2014, 15:21   #51
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от Foreseen Посмотреть сообщение
А не проще разбить задачу на подзадачи и последовательно решить их?
Попробуйте это Лилии объяснить. Какую первую подзадачу ей решить?

Вот я именно так и поступаю. Ставлю маленькие цели. Сначала кубик вывел. Потом заставил его двигаться вниз. Потом сделал управления клавишами. Потом сделал так чтобы кубик не уходил за границы окна (при нажатии на кнопки влево\вправо). Потом сделал так чтобы кубик останавливался на полу. Потом сделал класс "Square". Потом массив объектов класса "Square" и т.д. Потихоньку продвигаюсь

Приложение: https://yadi.sk/d/vnJD_Y5ebTTHY
Содержимое следующего архива должно лежать в папке с приложением: https://yadi.sk/d/GV2PozMcbSuUG

8Observer8 вне форума Ответить с цитированием
Старый 13.09.2014, 15:58   #52
marenko.lilia
Пользователь
 
Аватар для marenko.lilia
 
Регистрация: 25.12.2013
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Мужики, не запутывайте девушку . Лилия, а в какой среде Вы пишете?
собиралась написать в mvs 2013. Но не уверена уже, что это хорошая идея. Во-первых - не собиралась писать его сразу, а только хотела собрать максимум мнений и предложений.
Во-вторых, это и правда сложно для меня пока (что заметили и другие).
Плюс получила сегодня серьезную критику от одного из участников форума.
Поэтому не тратьте на меня время, пожалуйста. Пусть это останется моей личной заботой.
Спасибо.
marenko.lilia вне форума Ответить с цитированием
Старый 13.09.2014, 17:10   #53
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
rrrFer - это будет смешно, если такой монстр программирования, как ты не сможет написать консольный тетрис за два часа (утрирую, конечно). Если ты уж дал такое задание хрупкой девушке, которая только начала изучать программирование, то будь добр - скинь exe через Яндекс.Диск (там на вирусы проверка есть). Мы заценим.

А то получается, что ты даёшь задание, а сам не можешь с ним справиться. Причём это задание для новичка (по твоим меркам).
Читай сообщение #40 до прояснения. Консольный тетрис, который я предложил написать Лилии пишется за 2 часа без всякого утрирования Это мега просто, я не знаю че ты так привязался со своим опенглом и треугольниками.

Ты гришь - составить из треугольников прямоугольник. Я говорю -
cout << '*'; // я вывел квадрат заполненный фигурой.
cout << '#' // вывел всяких хлам на дне
cout << ' '; // вывел пустую клетку

Грубо говоря - так. А реально надо завернуть это красиво в enum;

Хочешь написать юнит тесты - тестируешь, например передвижение фигуры:

До:
Код:
   
   ***
     *
     
     
####  ###
#########

После:
Код:
     

   ***
     *
     
####  ###
#########[
Тестируешь размещение фигуры на дне:

1 состояние:
Код:
     
  ***
    * 
#### ###
########
второе состояние:
Код:
   
     
  
  ***
####*###
########
Третье состояние:
Код:
   
     
  
  ###
########
########
Тестируешь удаление заполненных строк на дне

До:
Код:
   
     
  
  ###
########
########
После
Код:
   
     

  
  ###
########
Снизу решетками я чисто для форума показал границу стакана, иначе не понятно.

Я не вижу проблем тут вообще - достаточно уметь работать с двумерными массивами. И да, я сразу могу прикинуть тесты, ведь я знаю что я хочу получить. А ты рисуешь треугольники, поэтому тебе тяжело ))

Последний раз редактировалось rrrFer; 13.09.2014 в 17:21.
rrrFer вне форума Ответить с цитированием
Старый 13.09.2014, 17:14   #54
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Я не пойму - неужели сложно проверить, что строка двумерного массива целиком состоит из решеток?

Сложно удалить эту строку, со сдвигом всех строк над ней вниз?

Совсем не сложно перемещать все звездочки массива на одну клетку вниз или по диагонали

Единственное сложное, что я тут вижу - вращение фигуры. Тут надо подумать, я пока не придумал как это ДОЛЖНО ВЫГЛЯДЕТЬ, т.е. я не писал для этого тестовые примеры.
rrrFer вне форума Ответить с цитированием
Старый 13.09.2014, 17:20   #55
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Чтобы написать тетрис, нужно знать WINAPI, GDI или OpenGL/ DirectX. После прочтения Кернигана, Ричи, Строустропа, Майерса и прочих, написать тетрис не получится.
А как-же китайцы реализовали тетрис на слабом микроконтроллере и в начале 90х впарили этот девайс каждому в нашей стране?
Ты чето путаешь чувак, я тут уже грил, что первый тетрис был написан в начало 80х, когда ни о каком опенгле и директиксе, винапи, где никто ничего не слышал.
rrrFer вне форума Ответить с цитированием
Старый 13.09.2014, 18:15   #56
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от marenko.lilia Посмотреть сообщение
собиралась написать в mvs 2013. Но не уверена уже, что это хорошая идея. Во-первых - не собиралась писать его сразу, а только хотела собрать максимум мнений и предложений.
Во-вторых, это и правда сложно для меня пока (что заметили и другие).
Плюс получила сегодня серьезную критику от одного из участников форума.
Поэтому не тратьте на меня время, пожалуйста. Пусть это останется моей личной заботой.
Спасибо.
Тут Вам чёрте-чего наговорили. И про OpenGL и про консоль и про DirectX...
Всё решается куда проще. Разместите на форме компонент Image. У этого компонента есть канва. Вот на канву-то и можно выводить всю графику.
Сам алгоритм тетриса не сложный и описан rrrFer в первых постах. Я не работал в MVS, но думаю, формы там создаются.

Создаём матрицу. Как правило это x=20, y=50. Каждую из фигур, обозначаем разными цифрами, которые соответствуют определённому цвету. Делаем соответствующие проверки на стенки, а на полу с цветами, рядом лежащих кубиков. Если строка от стенки до стенки заполнена, удаляем строку смещая верхние кубики вниз и т.д.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.09.2014, 18:17   #57
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
А как-же китайцы реализовали тетрис на слабом микроконтроллере и в начале 90х впарили этот девайс каждому в нашей стране?
Ты чето путаешь чувак, я тут уже грил, что первый тетрис был написан в начало 80х, когда ни о каком опенгле и директиксе, винапи, где никто ничего не слышал.
Они на ассемблере это писали а не на C++. На ассемблере прямой доступ к видео памяти, поэтому они это в 80х сделали. В консоли Windows нет прямого доступа к видео памяти, а доступ предоставляется посредством DirectX
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 13.09.2014, 18:41   #58
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Они на ассемблере это писали а не на C++. На ассемблере прямой доступ к видео памяти, поэтому они это в 80х сделали. В консоли Windows нет прямого доступа к видео памяти, а доступ предоставляется посредством DirectX
Ты потрудись прочитать всю тему перед тем как отвечать.
Это с одной стороны. С другой стороны ты пишешь невероятный и эпический бред.

Язык ваще никак с доступом к видеопамяти не связан. Ты можешь писать код для железа на Си, а можешь писать на ассемблере под винду. Ассемблер под виндой не даст тебе прямого доступа к видеопамяти.

Начни с начала темы, все это уже обсуждалось. Включая то, что не нужен тут директиск ваще, как и опенгл и все прочее (более полный список ищи в старых постах)

Последний раз редактировалось rrrFer; 13.09.2014 в 18:43.
rrrFer вне форума Ответить с цитированием
Старый 13.09.2014, 18:45   #59
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Смит

Цитата:
Тут Вам чёрте-чего наговорили. И про OpenGL и про консоль и про DirectX...
Всё решается куда проще
Да это чукчи. Чукча не читатель - чукча - писатель.
Они все равно не читают твой ответ, они сразу пишут свой. Свой про опенгл, директиск, и треугольники. Попутно научат тебя тестированию приложений, скажут что ты ничего не знаешь и все прочее. Спорить бесполезно, поэтому я написал пост #40.
rrrFer вне форума Ответить с цитированием
Старый 13.09.2014, 18:55   #60
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Ты потрудись прочитать всю тему перед тем как отвечать.
Это с одной стороны. С другой стороны ты пишешь невероятный и эпический бред.

Язык ваще никак с доступом к видеопамяти не связан. Ты можешь писать код для железа на Си, а можешь писать на ассемблере под винду. Ассемблер под виндой не даст тебе прямого доступа к видеопамяти.

Начни с начала темы, все это уже обсуждалось. Включая то, что не нужен тут директиск ваще, как и опенгл и все прочее (более полный список ищи в старых постах)
Я не бред пишу. Код на си для железа пишется на уровне драйверов, а не в пользовательском режиме.
Основой работы Windows является ядро (ntoskrnl), которое загружает драйвера .sys которые работают с железом. На уровне ОС сделан hal(hardware abstraction layer), который обеспечивает загрузку ОС и взаимодействие ядра с железом. После загрузки железа в нулевом кольце защиты процессора ( ring0), загружаются системные службы и программы ( user32, kernel32, gdi32, ntdll (ring1), которые загружают графический интерфейс ОС и обертки к winapo. Пользовательские программы действуют в ring2. Подробно это описано у Руссиновича/Саломона.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C тетрис Цукер Помощь студентам 0 21.11.2011 22:53
Тетрис на си фыф123 Помощь студентам 1 22.06.2011 10:48
Тетрис Александр123456 Общие вопросы C/C++ 1 02.12.2010 23:15
Тетрис k1r1ch Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 02.01.2010 12:20
массив и тетрис sid Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2007 14:41