|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.12.2011, 01:48 | #11 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
зато теперь я вас понял!
ну тогда все ясно)) да. наврятли получиться без предварительной инициализации как-то использовать данные в глобальном пространстве. (ну я себе такого не могу представить) |
29.12.2011, 01:59 | #12 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Не уверен, что понимаю о чем речь. Поэтому, может быть я зря влазию.
Но возможно проблема ТС связанна с тем, что порядок инициализации глобальных данных не определён. Это означает, что если Second инициализируется раньше, чем First, но ему для работы нужны корректные данные от First, то последствия могут быть непредсказуемыми. Лекарство: паттерн "одиночка", или "Singleton" |
29.12.2011, 02:00 | #13 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
Вот это печалька..... Выходит, что мне все, что обращается к конкретным цветам, пихать в главный файл?
|
29.12.2011, 02:01 | #14 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
_Bers, именно для предотвращения такой ситуации мне и приходится пихать все ... Выходит тогда, что мне даже функции описывать надо в главной функции?
|
29.12.2011, 02:11 | #15 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Возможно ты борешься с последствиями, а не с причиной проблемы. Чем меньше функция знает об окружении, тем ею проще управлять, и она надежнее. Поэтому, предпочтительнее скармливать функциям только то, что им нужно для работы. И что бы они не просили знаний о глобальных переменных. Но если нет такой возможности - хотя бы минимизировать количество глобальных переменных. И инкапсулировать их при помощи паттерна "одиночка" Доступ к этим данным - только через одиночку. Это гарантирует, что при первом же обращении к одиночке, одиночка проинициализируется только один раз корректными данными. |
|
29.12.2011, 02:24 | #16 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
mmx358, так а я не пойму в чём проблема сделать передачу цвета как параметра?
|
29.12.2011, 14:06 | #17 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
_Bers, вы, безусловно, правы, поэтому не буду трогать указатель на рабочую поверхность, с этим тогда все в порядке.
Теперь по поводу того, почему я не могу сделать передачу цвета как параметра, как это сделано в остальных ф-ях. Дело в том, что есть функция, которая выводит на экран графический объект такого цвета, который зависит от случайного числа. Т.е. на функция возложена обязанность рисовать не каким-то цветом, который ей передается как параметр, а именно одним из конкретных цветов. Короче говоря, в ф-ции присутсвтуют идентификаторы цветов (yellow, red, ..... ), но в этом случае цвета "не работают", т.е. выводится "пустое" изображение, хотя, если вставить тело функции в главную функцию, то все работает. Есть какие-то правильные решения? Мне пока что приходит в голову безумная идея создать массив цветов и передавать его по значению или указатель в функции. Хотя мне такой вариант совсем не нравится. Что вы можете посоветовать? |
29.12.2011, 14:09 | #18 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
генерить случайное число вне функции.
|
29.12.2011, 15:10 | #19 |
Пользователь
Регистрация: 28.06.2009
Сообщений: 84
|
onewho, дээээ, придется размазывать алгоритм по файлам... очень жаль... Наверное, когда завершу эту программу, буду изучать OpenGL, что-то мне подсказывает, что с ним не будет такого геморроя касательно графики.
|
29.12.2011, 21:01 | #20 |
Пользователь
Регистрация: 28.12.2011
Сообщений: 27
|
Итак, пишим на С, есть файлы:
main.c - содержит главную функцию, инициализация и закрытие SDL систем graph.c - содержит необходимые графические функции algor.c - содержит алгоритм программы. пусть будет файл graph.h в нем обьявляем глобальный указатель на обьект экрана Код:
Код:
обьявляешь Код:
Код:
теперь можешь использовать pScreen где надо и все будет путем. Касательно твоих цветов. Рассмотрим на примере 1 цвета. В файле graph.h в нем обьявляем глобальный цвет в формате RGB Код:
Код:
обьявляешь Код:
Код:
и дальше смело юзать цвета. Иначе они будут "черные". |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разделение программы на отдельные модули (Паскаль) | Olya1 | Помощь студентам | 1 | 08.07.2011 11:25 |
Разбиение программы на модули | Neolit1819 | Общие вопросы C/C++ | 4 | 11.04.2011 19:14 |
разбиение программы на модули | SUDALV | Помощь студентам | 1 | 22.06.2010 22:01 |
Создание программы использующей ICQ протокол | SuBwooFer | Общие вопросы C/C++ | 1 | 17.01.2010 13:50 |
Рзработка модуля и программы использующей этот модуль (Delphi) | Sonny01 | Помощь студентам | 2 | 07.11.2009 17:26 |