Вторник, 26 Ноября 2024, 04:27

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Требуется помощь с ступенчатыми массивами. {C#}[Решено]
AmriДата: Суббота, 05 Октября 2013, 15:47 | Сообщение # 1
Auriss IGD
Сейчас нет на сайте
Доступно только для пользователей

Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:07
pelmenkaДата: Суббота, 05 Октября 2013, 16:24 | Сообщение # 2
Драгоценный Тунеядец
Сейчас нет на сайте
Цитата (Amri)
int[] [,] massiv= new int [5] [,] ;
Amri, это в шарпе такие массивы?


Сталина в каждый дом!
AmriДата: Суббота, 05 Октября 2013, 20:08 | Сообщение # 3
Auriss IGD
Сейчас нет на сайте
pelmenka, это массив массивов.

массив обьявляется так
это простой
Код
type [,.....,] massiv_name = new typo [,....,]

а массив массивов - так, так сверху. Это частный случай

Добавлено (05.10.2013, 20:08)
---------------------------------------------
Никто не знает?

vasua99Дата: Суббота, 05 Октября 2013, 22:29 | Сообщение # 4
GNU follower
Сейчас нет на сайте
Я далеко не специалист, но не так? smile

Код

int[][,] array = new int[5][,] ;  

// бла-бла-бла

for (int r = 0; r < array[i].GetLength (0); r++) {
     for (int j = 0; j < array[i].GetLength (1); j++) {
         int a = array[i][r, j];
   
         switch(a) {
             case 1: .... break;
             case 2: .... break;
             case N: .... break;
         }
     }
}


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
AmriДата: Воскресенье, 06 Октября 2013, 18:29 | Сообщение # 5
Auriss IGD
Сейчас нет на сайте
Доступно только для пользователей

Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:07
vasua99Дата: Воскресенье, 06 Октября 2013, 23:52 | Сообщение # 6
GNU follower
Сейчас нет на сайте
Цитата
vasua99, а - это не номер искомого массива, а номер элемента в массиве. Короче, в массивах я держу локации. Так вот, а обозначает, что отрисовывается на этот месте. Так что не катит ( . И да, вот эти строчки
Цитата (vasua99)
for (int r = 0; r < array[i].GetLength (0); r++) {
for (int j = 0; j < array[i].GetLength (1); j++) {


Можно сделать преобразование в перечесление;

Код

enum Map { Main = 0, Two = 1, .... };
....
switch (a.getID ()) {
               case Map.Main: .... break;
               case Map.Two: .... break;
               case N: .... break;
           }


Насчет твоего вопроса, я как понял ты в массиве массивов хочешь прочитать конкретный массив(например array[i][1, j] (где r и и j любые числа(которые используются в циклах) )

Может так?

Код


//....
int[][,] array = new int[5][,] ;    

// бла-бла-бла

boolean isOnlyOne = true;
for (int i = 0; i < array.GetLength(0); i++ ) {   
       for (int r = 0; r < array[i].GetLength (0); r++) {
           for (int j = 0; j < array[i].GetLength (1); j++) {
               int a = array[i][r, j];
       
               switch(a.getID ()) {
                   case Map.Main: .... break;
                   case Map.Two: .... break;
                   case N: .... break;
              }
          }
      }
          if (isOnlyOne) break;   
}
? happy


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)

Сообщение отредактировал vasua99 - Воскресенье, 06 Октября 2013, 23:54
AmriДата: Понедельник, 07 Октября 2013, 10:53 | Сообщение # 7
Auriss IGD
Сейчас нет на сайте
Доступно только для пользователей

Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:08
vasua99Дата: Понедельник, 07 Октября 2013, 16:43 | Сообщение # 8
GNU follower
Сейчас нет на сайте
Цитата (Amri)
vasua99, и а модифицировать нельзя, потому как придется переписывать весь класс. Это элемент списка текстур.


А если не модифицировать, а допустим применить Адаптер?

И насчет считать отдельный массив, так тогда наверное.

Код

boolean isOnlyOne; // считать один массив или все.
for (int i = 0; i < massiv.GetLength(0); i++ ) //обработка массива массивов
{
     if (isOnlyOne) break;
}


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)

Сообщение отредактировал vasua99 - Понедельник, 07 Октября 2013, 16:46
AmriДата: Понедельник, 07 Октября 2013, 22:58 | Сообщение # 9
Auriss IGD
Сейчас нет на сайте
Доступно только для пользователей

Сообщение отредактировал Amri - Понедельник, 07 Октября 2013, 23:09
vasua99Дата: Понедельник, 07 Октября 2013, 23:45 | Сообщение # 10
GNU follower
Сейчас нет на сайте
Цитата (Amri)

if (massiv_numer < array.GetLength(0)))
{
int i = massiv_numer;
//тут условие изменения переменной massiv_numer

if (//условие выполнено для первого , точнее второго массива)
massiv_numer=1;
if (//условие для третьего массива)
massiv_numer= 2;
if (//и наконец для четвертого))
massiv_numer= 3;
//и так для нужного количества массивов.
//а дальше уже обработка выбранного массива
[/C#]


Тогда уж
Код

if (massiv_numer < array.GetLength(0)))
{
int i = massiv_numer;
//тут условие изменения переменной massiv_numer

if (//условие выполнено для первого , точнее второго массива) // главное расположить наиболее вероятные варианты первыми
massiv_numer=1;
else if (//условие для третьего массива)
massiv_numer= 2;
else if (//и наконец для четвертого))
massiv_numer= 3;
//и так для нужного количества массивов.
//а дальше уже обработка выбранного массива
побыстрее будет работать biggrin

Добавлено (07.10.2013, 23:37)
---------------------------------------------
и еще, если просишь помощи, советую пользоваться тегами

Код

// Вот так
Удачи!):)

Добавлено (07.10.2013, 23:45)
---------------------------------------------
И кстати, break в for все таки работает.

А еще можно так(чую тухлые помидоры) biggrin

Код


//....
int[][,] array = new int[5][,] ;

// бла-бла-бла

boolean isOnlyOne = true;
for (int i = 0; i < array.GetLength(0); i++ ) {
     for (int r = 0; r < array[i].GetLength (0); r++) {
         for (int j = 0; j < array[i].GetLength (1); j++) {
             int a = array[i][r, j];

             switch(a.getID ()) {
                 case Map.Main: .... break;
                 case Map.Two: .... break;
                 case N: .... break;
             }
         }
     }
     if (isOnlyOne) goto Out;
}
Out:


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
AmriДата: Вторник, 08 Октября 2013, 00:36 | Сообщение # 11
Auriss IGD
Сейчас нет на сайте
vasua99, тут я ошибся) условие изменения номера искомого массива не тут
Цитата (vasua99)
if (massiv_numer < array.GetLength(0)))
{
int i = massiv_numer;
//тут условие изменения переменной massiv_numer


а в самих ифах) это я замотался и обрадовался) то если после присвоение стоят только иф. . Т Е так
[C#]
if (massiv_numer < array.GetLength(0)))
{
int i = massiv_numer;

if (//условие выполнено для первого , точнее второго массива)
massiv_numer=1;
if (//условие для третьего массива)
massiv_numer= 2;
if (//и наконец для четвертого))
massiv_numer= 3;
//и так для нужного количества массивов.
//а дальше уже обработка выбранного массива
[/C#]
) и да, у меня не случайные переключения, а по определенному действию) они все будут использоваться. Для теста я сделал на нажатие нумпада. И работает однако)

Цитата (vasua99)
и еще, если просишь помощи, советую пользоваться тегами

они меня бесят) тут нет тега под шарп-код dry

Добавлено (07.10.2013, 23:51)
---------------------------------------------
vasua99,

Цитата (vasua99)
еще можно так(чую тухлые помидоры)

они будут) ну что ты к этой а прицепился? happy Нужно же было цепляться как раз к i. Эта скотина и есть номер искомого массива biggrin

Добавлено (08.10.2013, 00:35)
---------------------------------------------

Цитата (vasua99)
И кстати, break в for все таки работает.

как ни странно, но работает. Но либо первый, либо все. У меня так получилось. Однако в спецификации это не описано dry

Добавлено (08.10.2013, 00:36)
---------------------------------------------

Цитата (vasua99)
А еще можно так(чую тухлые помидоры)

и еще потому, что писать в этом случае надо больше. А мне лень biggrin
vasua99Дата: Вторник, 08 Октября 2013, 00:44 | Сообщение # 12
GNU follower
Сейчас нет на сайте
Цитата (Amri)
Цитата (vasua99)
И кстати, break в for все таки работает.

как ни странно, но работает. Но либо первый, либо все. У меня так получилось. Однако в спецификации это не описано dry


Странно, но в MSDN это есть) smile break(MSDN)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
AmriДата: Вторник, 08 Октября 2013, 00:57 | Сообщение # 13
Auriss IGD
Сейчас нет на сайте
vasua99, оно то есть. Я это видел) . Блин, как же это я не заметил это вот тут? [url=http://msdn.microsoft.com/ru-ru/library/ch45axte.aspx][/url] sad

Сообщение отредактировал Amri - Вторник, 08 Октября 2013, 01:00
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг