Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
VoltDeMar
16 / 16 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
1

Входные и выходные параметры функции

12.02.2013, 15:56. Просмотров 2654. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Пытаюсь разобраться в объявлении функции, подскажите пожалуйста, если у меня есть метод генерирующий массив и метод использующий сгенерированный массив, в свою очередь вызываемый таймером. Как записать подобную конструкцию без public переменных?
Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
        public int[,] array_f;
        public int figure;
 
         private void LoadFigure(int figure)  /* Генерируем массив */
         {
 
             if (figure == 1)
              {
                 array_f = new int[2, 2] { { 1, 1 }, { 1, 1 } };
              } 
             if (figure == 2)
              {
                 if (orientation % 2 == 0) ;
                 {
                     array_f = new int[3, 2] { { 1, 0 }, { 1, 1 }, { 0, 1 } };
                 }
                 if (orientation % 2 == 1) ;
                 {
                     array_f = new int[2, 3] { { 0, 1, 1 }, { 1, 1, 0 } };
                 }
              }
 
    private void Draw(int[,] array_f)    /* Рисуем его */
    {
      int i, j;
      int sqrSize = 40;
      panel1.Invalidate();
      using (var gfx = panel1.CreateGraphics())
        {
            for (i = 0; i < array_f.GetLength(0); i++)
            {
                for (j = 0; j < array_f.GetLength(1); j++)
 
                    gfx.FillRectangle(array_f[i, j] == 1 ? Brushes.Black : Brushes.Transparent, new Rectangle(sqrSize * j + xx, sqrSize * i + yy, sqrSize, sqrSize));
            }
        }
    }
 
  private void timer1_Tick(object sender, EventArgs e)   /* Действия выполняются по таймеру  */
         {
 
             if (yy < 560)
             {
                 yy = yy + 40; 
                 label4.Text = yy.ToString();
                 Draw(array_f);
                 Array_fillup();
             }
 
             if (yy >= 560)
             {
                 figure = next;      /* Сейчас это место не компилируется, переменная next не имеет значения */
                 LoadFigure(figure);
                 Draw(array_f);
                 for (byte i = 1; i < 9; i++)
                 next = random.Next(i);
                 Draw_next(array_f);  /* Работает не корректно, массив array_f такой же как у текущей фигуры*/
                } 
         }
сейчас у меня публично объявлены переменные, сутью вопроса является как написать чтобы следующая фигура прорисовывалась на другой панели, сейчас реализовать прорисовку следующей фигуры таким образом нельзя, потому что она каждый раз прорисовывается из публичной переменной. Т.е. нужно чтобы входные данные и выходные данные каждого метода были самостоятельны. Поясните пожалуйста, можно ли задавать в качестве параметра объект ( panel2) и можно ли создать ссылку на функцию и использовать её как переменную, читал про делегаты, если правильно понял можно организовать ветвление в цикле в зависимости от имени входной переменной, однако как сделать зависимым от этого имя выходного массива, не копируя код создания массива для каждого if ?

Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 15:56
Ответы с готовыми решениями:

Входные параметры
Помогите за плюсик: использовать входные параметры функций со способом передачи данных “по...

Методы: выходные параметры (исправить код)
Помогите пожалуйста исправить ошибку, не могу понять в чем дело :( using System; using...

Запретить изменять входные параметры в методе
Добрый день, задался вопросом, а возможно ли запретить изменять входные параметры в методе?...

Входные/выходные данные консольного приложения
Есть некое консольное приложение namespace SomeApp { class SomeClass { static void...

Реализовать программу через выходные параметры
Есть программа, реализованная через параметры значений и параметры ссылки, мне нужно реализовать...

1
andrew_w2k
326 / 326 / 90
Регистрация: 04.03.2010
Сообщений: 648
12.02.2013, 16:01 2
что-то Вы всё в кучу свалили. Создайте класс Фигура с соответствующими свойствами и методами и работайте с экземпляром этого класса, как с отдельной фигурой.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 16:01

Реализовать программу через выходные параметры
Дана программа, ее нужно реализовать через выходные параметры using System; using...

Оптимизация кода, функции и методы как параметры функции
Грубо говоря - есть множество циклов которые привязаны к проверочным функциям, поскольку сами по...

функции и параметры
помогите разобраться с функциями- в библиотеке ole32 есть такие функции- HRESULT StgCreateDocfile...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru