![]() |
|
Модераторы: bsa |
![]()
|
|
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Помогите пожалуйста!
Надо в турбо си нарисовать картинку. Вобщем я нарисовала самолетик, а залить его не могу,заливается весь экран, продскажите, что делать?
Это сообщение отредактировал(а) Truegirl - 14.2.2009, 19:09 |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Не правда, ты сначала заливаешь, а потом рисуешь самолетик. А нужно именно так какт ты сказала Это сообщение отредактировал(а) Gluttton - 14.2.2009, 22:21 -------------------- Слава Україні! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
не получается!!!
всеравно заливается весь экран Это сообщение отредактировал(а) Truegirl - 15.2.2009, 00:01 |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
0. Попробуй третим параметром в функцию floodfill передать цвет, которым ты рисуешь границы самолета
1. Возможно у тебя самолет не является ограниченой областью (т.е. имею место "дыры"). Смотри внимательнее. 2. Заливать нужно область внутри самолета, а не снаружи. У тебя самолет расположен по Х примерно 220 на 360, по Y 255 на 470, а область для заливки ты указываешь 30, 31? Хотя если бы проблема была в этом, то у тебя бы заливался весь экран кроме самолета. -------------------- Слава Україні! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Спасибо за советы, все учла, вот только когда floodfill третьим параметром передала цвет самолета, то самолет закрашивается белым, и setfillstyle не меняет цвет и стиль, а почему?
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Если приведенный выше код актуален, то проблема в том, что ты сначала заливаешь, а лишь потом меняешь цвет заливки. -------------------- Слава Україні! |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
ИМХО, лучше так
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Спасибо всем за помощь, но у меня есть еще неколько вопросов. Я дописала код, чтоб самолетик двигался и взрывался, а взрыв не получается, раскажите как его реализовать
расскажите пожалуйста как сделать так что бы кусочки самолета разлетались, и еще как написать код для управления клавиатурой? зараннее огромное спасибо! |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Тот же принцип и в реализации взрыва: сначала стираешь существующее изображение, а потом рисуешь новое. Прининципиальное отличие взрыва от движения заключается в том, что при нормальном движении у тебя все "части" самолета двигаються с одинаковой скоростью и в одном направлении. В случае же взрыва различные "части" самолета (сама определяй какие) двигаються в различных направлениях (не всегда по линейной траектории - самое время разобраться с синусами и косинусами Логичнее всего взрыв реализовать при помощи циклов, изменяя различные параметры (скорость, размер, направление, цвет, и т.д.) Управление с клавиатуры поищи на форуме около двух недель назад кто-то уже интересовался. (1 вопрос - 1 тема). -------------------- Слава Україні! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
спасибо за совет! учту
вот только когда я пыталась закрасить(убрать) самолет floodfill();закрашивался весь экран,кроме того цвета который указан в качестве 3 го параметпра floodfill();, может сущетвует оператор закрашивающий только нужную часть, а вот насчет огня и дыма проблематично, на 16 цвеиах имеющихся в наличии особо не разгонишься, и еще как можно сделать, чттобы кусочки самолета разлеталить не закрашивая при это тучи и солнце? Это сообщение отредактировал(а) Truegirl - 22.2.2009, 00:49 |
|||
|
||||
| Gluttton |
|
||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Мухи отдельно, котлеты отдельно.
Не нужно мешать две проблемы. 1. Концепция реализации:
Не согласен. И на двух цветах разгонялся. Например белым по черному от точки исходящие от центра к перифирии острые углы (равнобердренные треугольники без основания направленые вершиной от центра взрыва) могут символизировать огонь, а окружность постепенно увеличивающаяся в диаметре - дым). Ну это так, на вскидку, если хорошенько покурить можно и не такое придумать
Во время взрыва переризовывать тучи и солнце сразу после отображения очередной итерации "летящей запчасти самолета". Т.е. взрыв, и полетело крыло в сторону - рисуем в цикле: 1. Закрашиваем текущее изображение крыла. 2. Рисуем новое изображение крыла. 3. Рисуем фон. 2. Проблемы в реализации:
С учетом предистории данного топика, рекомендую "порисовать" пошагово. Возможно я ошибаюсь, но у меня предчуствие, что ты этого не делала. Ряд вопросов отпадет сам собой.
Весьма возможно, лично мне с графикой сталкиваться не приходилось, но, по опыту работы с другими библиотеками, рекомендую просто ознакомиться со всеми существующими функциями. Тогда ты будешь наверняка знать существуют ли или нет, и кроме того ты сможешь (зная возможности инструментария) грамотно производить декомпозицию решаемой задачи. Попробуй "стерать" путем рисования прямоугольника цвета фона. У меня однажды была проблема: заливка "просачивалась" через границу, когда линия была под углом (т.е. не вертикальная и не горизонтальная). Решил проблему путем увеличения толщины линии на пиксел. -------------------- Слава Україні! |
||||||||
|
|||||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Gluttton, Ну ты МОНСТР
Респект -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
andrew_121 , может хочешь предложить другие варианты?
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
To andrew_121
+1. Рассмотреные в топике метод реализации поставленой задачи, мягко говоря, не рациональный. В намерениях автора просматривается амбициозное желание творить, в свое время не чуждое и мне. К сожаления автор топика (как и я в свое время, а может быть и ещё много-много людей) не обладает необходимым уровнем знаний проблемной области и это не позволяет ей реализовать задачу проще и быстрее. Кроме того, на лицо факт не только проблем с реализацией, но и с построением алгоритма. Я думаю, что Truegirl так и не сможет сделать то чего хочет, но решение данной задачи должно будет научить ее не только рисовать самолетики Если в ее созние закрадется мысль о том, что люди пишущие игры "рисуют самолетики" иначе, то тогда она будет морально готова узнать и применить на практике, а главное оценить приемущество, этих методов и тогда, как говориться, Level Up, а иначе Game Over To Truegirl Извини за назедательный тон, но в самом деле bigest_boom, big_boom, smaller_boom так и просяться замениться на boom в цикле с изменяемым размером -------------------- Слава Україні! |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Да, именно МЯГКО говоря... Truegirl - Soah предложил вариант на много логичнее и практичнее. Если еще немного вложиться в его идею, то можно будет реализовать, нечто, вроде конструктора. Т.е. Механизм отрисовщика стандартизовать, и только создавать массивы параметров для него. Или, что еще лучше, файлы с параметрами. А еще чуток добавить, и сценариями. Это будет уже что-то стоящее внимания. P.S. Господа, ваши комментарии... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Gluttton |
|
||||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
1. Почему бы не уйти от "магических чисел". Описать константами основные параметры самолета: длины физюляжа, крыла, хвостового оперения и т.д. (можно ввести масштаб, тогда самолет сможет летать с отличной от нуля радиальной скоростью относительно наблюдателя). К координатам дописать "+d", где d - расстояние. Можно в цикле и паузу добавить и менять, тогда самолет и с разной скоростью летать сможет. 2. Реализовать отображение самолета функцией и обернуть циклом по d, ИМХО после этого летать будет легче.
Это и будет функция.
Ну-у-у даже и не знаю. В принципе если в функцию отображения добавить и код направления, то можно будет трассу ручками прописывать и менять в файле. Но судя по тому что собирается делать Truegirl
ей такой вариант не подойдет. Ну вообще бы то не мешало и саму Truegirl послушать Это сообщение отредактировал(а) Gluttton - 22.2.2009, 17:02 -------------------- Слава Україні! |
||||||||||
|
|||||||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Gluttton, С первым и вторым пунктами абсолютно согласен.
Это я и имел в виду. Парить... Варриант... Добавлено через 12 минут и 29 секунд Кстати. Замечание: В этой теме присутствуют все, кроме самой создательницы темы -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
ве замечания, конечно, умесны, но это моя первая работа с графикой впринципе, поэтому как только освою хотя бы элементарне вещи, перейду к более рациональной записи, а есть у кого - нибудь материалы помогающие освоить графику быстрее ?
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Замечу: Освоила. Элементарней некуда.
Учебник по геометрии. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
andrew_121, не издевайся пожалуйста, я за помощью обратилась....
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Спроси у Google "Графика на си"...
-------------------- Слава Україні! |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Я бы себе не позволил. Я в правду пытаюсь помочь. Могла бы заметить. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
Надо определится зачем тебе всё это.
Если делаешь для себя, то советую взять другую IDE и другую библиотеку(OpenGL/DirectX). Ну а если для университета, тогда можно у преподавателя спросить где можно взять материал. А вообще всё что можно сделать в этой среде можно узнать в Help, конкретно для графики: HELP -> Index, набираем graphics.h, и смотрим что там есть. Насчёт книг, конкретно для графики в этой среде я не видел, но немного рассказывается в этой книге(Практика программирования: Бейсик, Си, Паскаль) также советую посмотреть функции: setviewport() и clearviewport(). маленький пример
посмотри что будет. Будут ещё вопросы, создавай темы, попробуем помочь. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Я бы посоветовал бы обертку над DirectDraw: HGE
Естественно, советую выкинуть компилятор, которому лет больше, чем мне. Не надо предаваться некрофилии =) |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
nerezus, с удовольтвием выбросила бы и компилятор, и лабараторку делала бы под Windows, а не под DOS,но нельзя!
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
А вот еще вопрос: можно ли вставить как - нибудь картинку, на задний план, чтобы ее ничего не могло стиреть и т.д и как это можно сделать?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
это как?
|
|||
|
||||
| Soah |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Допустим у тебя есть регион, который нужно стереть - но вместо стирания рисуешь этот регион соответствующим фрагментом из картинки фона. Удобнее будет если регионы будут прямоугольной формы. P.S. windows (да и другие оси) таким же образом создают иллюзию нестираемого фона. Это сообщение отредактировал(а) mes - 1.3.2009, 21:27 |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Truegirl, перерисовывай фон, а потом рисуй поверх него.
способ mes гораздо лучше, но ты его не осилишь. |
|||
|
||||
| Truegirl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
а если зарание неизвесно что и где сотрется?
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Если ты (в смысле твоя программа) рисуешь, то и ты указываешь координаты, где рисовать (даже если они вычисляються случайным образом). А раз ты их определяешь, то ты их и знаешь Если я правильно понял вопрос. -------------------- Слава Україні! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |