Доброго времени суток всем экспертам! Вопрос касается графики на bc++ 3.1. Задание следующее реализовать движение фигуры, используя 3 метода стирания. Во-первых проблема - один из методов: "стирание как таковое не производится, а выполняется вывод изображения, помещенного в прямоугольную область, размеры которого определяются таким образом, чтобы новое изображение полностью накрывало старое (с учетом смещения изображения)". Причем вроде бы для этого можно использовать процедуры getimage/putimage. Но при этом у меня должен менятся цвет фигуры. Но как его менять если они оперируют одним и тем же изображением? Можно в принципе рисовать все это дело в буфере (но только не на другой видеостранице) а потом а потом выводить на экран. Вообщем как этот метод реализовать, подскажите. Во-вторых высылаю вам исходник свой программы. Кому не лень,
пожалуйста посмотрите код, может там что то надо исправить, оптимизировать и т.п. У нас новый препод и хочется не ударить в грязь лицом :)). Всем спасибо за помощь!
Приветствую Вас, Jens! К сожалению, давно уже непрограммирую на BC++ 3.1, но это не суть. Этот известный метод перемещения изображений (спрайтов), основанный на свойствах логической операции XOR. Алгоритм такой: 1. Выводите изображение цвета (c) в позицию (х,y) c параметром выводить по маске XOR (это должно как-то в PutImage или еще где-то задаваться). 2. Здесь некие действия, например обработка клавиш, в зависимости от которых изменяются координаты и цвет, пусть они запомнены в (x1,y1) и (c1). 3. Выводите изображение цвета (c) в позицию (х,y) c параметром выводить по маске XOR (т.е. в ту же позицию и тем же цветом). 4. x = x1; y = y1; c = c1; перейти к шагу 1. С уважением, Avl2k. Ответ отправлен: 07.10.2002, 11:41 Отправитель: Avl2k
Вопрос № 274
Здравствуйте эксперты! У меня к вам два вопроса. 1) Нужно записать число 0,625d в двоичном виде и нормализовать его. 0,625d=0,101b=1,01b*2^-1 (1). По другому (1) можно записать так: 1,01E-1? Что означает такое высказывание при описании переменной типа float: "с точность не менее 6 значащих десятичных цифр"? 2) Файл1: --//-- int a //(2) --//-- int main() { --//-- } (2)- какой класс памяти и почему?
Приветствую Вас, kuper! 1. Ну думаю таких функция нет стандартных, но ты сам млжешь такую функцию написать, просто преобразуешь число после запятой в двоичное, но не прямым способом, а с помощью сравнения твоего числа и результата деления на попалам тестового числа. После сравнения тестовым числов становится сумма результата и предыдущего тестового числа в случае того, если число больше результата, в противном случае тестовое число остается таким же. Начальним тестовым числом является 1 и после первой операции сравнения к тестовому числу добавалять тестовое не надо, а просто присвоить результат. Ну думаю что, тебе лучше известен алгоритм преобразования. При преобразовании, резульат сравнения в виде 1 или 0 записывай в строку, а после первой попавшейся единицы поставить запятую, и запомнить степень, которую и записать в строку в конце. 2. Обычно компилятор
помещает эту перемнную в секцию или сегмент данных в исполняемом файле. Ответ отправлен: 06.10.2002, 17:52 Отправитель: Pablo Отвечает Илья
Доброе время суток, kuper! 1. По идее можно, но по правилу записи чисел для компа нет. Это по идее получается число с плавающей запятой, а оно записывается так: знак мантисы . мантиса знак порядка . порядок т.е. в твоем случае 0.1,01 1.1 ну ты наверно понимаешь, что -(минус) это 1, а + это 0 2. Это значит что в твоем числе будет 6 цифр после запятой т.е 23,472831 а значащие цифры - это все кроме нуля т.е. 23,47000015 записав с точностью шесть знаков получим 23,47 3. Немного не понял Ответ отправлен: 05.10.2002, 02:36 Отправитель: Илья Отвечает Avl2k
Здравствуйте, kuper! 1) Нормализация бывает разная, например мантисса от 0 до 1 или от 1 до 10. Если я не ошибаюсь, то "E" обозначает именно "10 в степени", правда не уверен. может ли оно употребляться для двоичной с/c. Количество десятичных значащих цифр, насколько я помню, это количество цифр после запятой до последней не нулевой цифры (включая ее), т.е. в числе 0.00203 - 5 значащих десятичных цифр. 2) В данном случае, это определяющее объявление глобальной переменной. Свойства: - начальное значение 0; - глобальное время жизни; - доступна всем модулям трансляции проекта (из других файлов может быть достпуна через ссылочное объявление с extern). Глобальная переменная с таким именем в проекте может быть только одна. Почему: - объявлена вне всех функций; - не указан класс памяти extern; - не указан класс памяти
static; - не указано явно начальное значение; С уважением, Avl2k. Ответ отправлен: 07.10.2002, 12:32 Отправитель: Avl2k
Вопрос № 275
Привет экспертам. Помогите начинающему программисту(почти чайнику), пытался учится по книгам но там всё как то мутно. Если не в лом, пришлите пожалуйста пару уроков для начинающих если можно с примерами. За ранее благодарен.
Ответ отправлен: 07.10.2002, 13:59 Отправитель: Jadd Отвечает Avl2k
Здравствуйте, max! Вопрос очень общий. Что значит пару уроков? Чтобы начать кодировать нужно иметь алгоритм решения какой-либо задачи. Чтобы закодировать алгоритм на каком-либо из языков программирования, нужно знать как минимум синтаксис этого языка. По вопросу концепции и синтаксиса C++ - читайте Страуструпа (лучше в "бумажном" виде). Ссылки: http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/index.htm#pgm_c - учебники http://khpi-iip.mipk.kharkiv.edu/library/pgm/index.htm - Страуструп С уважением, Avl2k. Ответ отправлен: 07.10.2002, 11:18 Отправитель: Avl2k
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.