Создание сетки и заполнения её цифрами
| |
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 |
старожил
Сейчас нет на сайте
| Цитата Не думал, что начертить какую-то сетку будет столько проблем Проблема тут только одна — никто не хочет за тебя код писать бесплатно
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
|
|
| |
DeveloperGame | Дата: Вторник, 18 Сентября 2018, 22:00 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Цитата Зачем ты ему выводишь сетку в консоль? :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 не работают
|
|
| |
|