Среда, 13 Ноября 2024, 04:03

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Создание сетки и заполнения её цифрами
DeveloperGameДата: Понедельник, 17 Сентября 2018, 22:14 | Сообщение # 1
частый гость
Сейчас нет на сайте
Как на unity 4.5.0f6. создать сетку и заполнить цифрами типа судоку? Вот массив из цифр который надо заполнить.
Это на javascript пример, только мне нужно на C#.
Код

arr = [0,2,0,4,0,0,0,0,0,4,5,6,7,0,9,1,2,0,7,8,0,0,0,0,0,0,0,0,0,0,5,0,7,0,0,0,0,0,7,8,9,0,2,0,4,0,0,0,2,3,4,0,6,7,3,0,0,0,0,0,0,0,0,6,0,0,0,1,2,0,0,5,0,0,0,0,4,0,6,0,0];

В итоге вот, что должно получится в заполненной сетке
0,2,0,4,0,0,0,0,0,
4,5,6,7,0,9,1,2,0,
7,8,0,0,0,0,0,0,0,
0,0,0,5,0,7,0,0,0,
0,0,7,8,9,0,2,0,4,
0,0,0,2,3,4,0,6,7,
3,0,0,0,0,0,0,0,0,
6,0,0,0,1,2,0,0,5,
0,0,0,0,4,0,6,0,0


Developer online game

Сообщение отредактировал DeveloperGame - Понедельник, 17 Сентября 2018, 22:15
DivESДата: Понедельник, 17 Сентября 2018, 23:49 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
DeveloperGame, так вопрос, собственно, в чём? Как создать массив? Или как отобразить это на экране?
Я бы предпочёл двумерный массив для представления таблицы чисел:
Код
int array[9][9] = {{0, 2, 0, 4, 0, 0, 0, 0, 0}, {4, 5, 6, 7... и так далее}};

(это пример на C++, но насколько я знаю, именно этот аспект в этих двух языках в принципе одинаков)
Конечно, для игры нужно будет каждый раз генерировать различные числа. Тут нужно будет разработать алгоритм со всеми необходимыми проверками (нет одинаковых чисел в строке/столбце/квадрате 3*3).
По поводу отображения - должны быть какие-то базовые функции для отрисовки линий (сетка создаётся с помощью двух циклов) или же целых таблиц. :)


Сообщение отредактировал DivES - Понедельник, 17 Сентября 2018, 23:50
ArtemSДата: Вторник, 18 Сентября 2018, 06:05 | Сообщение # 3
почетный гость
Сейчас нет на сайте
DeveloperGame, попробуй воспользоваться компонентом Grid, это таблицы, мне кажется с помощью нихъ что-то можно придумать.

хуяк, хуяк и в продакшн
DeveloperGameДата: Вторник, 18 Сентября 2018, 13:24 | Сообщение # 4
частый гость
Сейчас нет на сайте
Не думал, что начертить какую-то сетку будет столько проблем, информации об этом вообще нет. Создание супер-пупер 3d, с элементами rpg весь интернет завален. Вообщем у меня проблема не чертит?
Код

using UnityEngine;
using System.Collections;

public class Grid : MonoBehaviour {
    public int xSize = 5;
    public int ySize = 5;
    private Vector3 initialPos;

    void Start () {
  CreateGrid ();
    }

    void CreateGrid(){

  for (int i = 0; i < ySize; i++) {
   for(int j = 0; j <= xSize; j++){

    Debug.DrawLine(new Vector3(-100000.0f, Mathf.Floor(i/30)*30,0.0f),
                   new Vector3(100000.0f, Mathf.Floor(i/30)*30,0.0f));
    Debug.DrawLine(new Vector3(Mathf.Floor(j/30)*30,-1000000.0f,0.0f),
                   new Vector3(Mathf.Floor(j/30)*30, 1000000.0f,0.0f));

   }
  }
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}


Developer online game
drcrackДата: Вторник, 18 Сентября 2018, 15:00 | Сообщение # 5
старожил
Сейчас нет на сайте
Цитата
Не думал, что начертить какую-то сетку будет столько проблем

Проблема тут только одна — никто не хочет за тебя код писать бесплатно :D

Debug.DrawLine надо передать еще один параметр — сколько времени будет показываться линия, у тебя он по дефолту 0, а это значит что только 1 кадр


Сообщение отредактировал drcrack - Вторник, 18 Сентября 2018, 15:02
DronДата: Вторник, 18 Сентября 2018, 17:26 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Цитата DeveloperGame ()
В итоге вот, что должно получится в заполненной сетке
0,2,0,4,0,0,0,0,0,
4,5,6,7,0,9,1,2,0,
7,8,0,0,0,0,0,0,0,
0,0,0,5,0,7,0,0,0,
0,0,7,8,9,0,2,0,4,
0,0,0,2,3,4,0,6,7,
3,0,0,0,0,0,0,0,0,
6,0,0,0,1,2,0,0,5,
0,0,0,0,4,0,6,0,0



Поставленную проблему можно решить следующим образом code C#:
Код

using System;
     
public class Program
{
    public static void Main()
    {

    int[][] data = new int[9][];
      data[0] = new int[] { 0, 2, 0, 4, 0, 0, 0, 0, 0 };
      data[1] = new int[] { 4, 5, 6, 7, 0, 9, 1, 2, 0 };
      data[2] = new int[] { 7, 8, 0, 0, 0, 0, 0, 0, 0 };
      data[3] = new int[] { 0, 0, 0, 5, 0, 7, 0, 0, 0 };
      data[4] = new int[] { 0, 0, 7, 8, 9, 0, 2, 0, 4 };
      data[5] = new int[] { 0, 0, 0, 2, 3, 4, 0, 6, 7 };
      data[6] = new int[] { 3, 0, 0, 0, 0, 0, 0, 0, 0 };
      data[7] = new int[] { 6, 0, 0, 0, 1, 2, 0, 0, 5 };
      data[8] = new int[] { 0, 0, 0, 0, 4, 0, 6, 0, 0 };

    for (int r = 0; r < 9; ++r)  {
    for (int c = 0; c < 9; ++c)  {
      if (data[r][c] == 0)
         Console.Write(" _");
       else
       Console.Write(" " + data[r][c]);
    }
  Console.WriteLine("");
    }
}
}

Посмотреть в действии: https://dotnetfiddle.net/68OOW7


Сообщение отредактировал Dron - Вторник, 18 Сентября 2018, 17:30
drcrackДата: Вторник, 18 Сентября 2018, 18:39 | Сообщение # 7
старожил
Сейчас нет на сайте
Зачем ты ему выводишь сетку в консоль? :D :D
DeveloperGameДата: Вторник, 18 Сентября 2018, 22:00 | Сообщение # 8
частый гость
Сейчас нет на сайте
Цитата
Зачем ты ему выводишь сетку в консоль? :D :D

Не знаю, вы мне скажите, зачем? Я С# почти не знаю из всех примеров вывести линии для сетке в гугле мне показали только Debug.DrawLine.


Developer online game
DronДата: Вторник, 18 Сентября 2018, 22:19 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Да уж. Я показал принцип который вам нужен. Или вы считаете что я обязан сразу полностью вам написать код? Интересно.
Могу облегчить ваши потуги. Здесь можете посмотреть как реализован код для судоку, и основные приемы применить у себя.
DeveloperGameДата: Среда, 19 Сентября 2018, 00:00 | Сообщение # 10
частый гость
Сейчас нет на сайте
Dron, да нет необязательно писать за меня код, просто я его ещё не тестировал, завтра протестирую.

Developer online game
drcrackДата: Среда, 19 Сентября 2018, 00:51 | Сообщение # 11
старожил
Сейчас нет на сайте
Я же ответил тебе почему твои DrawLine не работают
  • Страница 1 из 1
  • 1
Поиск:

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