|
11.12.2009, 21:05
|
#1
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
id клетки
Создаю поле 20x20
как мне для каждой клетке создать свою номер(id)
Type terrain
Field id
Field x, y
Field status:Int
Function Create()
For i = 1 To size
For j = 1 To size
v:terrain = New v
v.id = (как?)
v.x = i * 128
v.y = j * 128
v.status = 0
Next
Next
End Function
|
|
(Offline)
|
|
11.12.2009, 21:15
|
#2
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: id клетки
например (не точно но суть ясна)
v.id$=int(str(i)+str(j))
|
(Offline)
|
|
11.12.2009, 21:24
|
#3
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
не понимаю(
зачем тут str?
|
(Offline)
|
|
11.12.2009, 21:47
|
#4
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: id клетки
Вот попробуй так
V.id=j+(i-1)*size
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.12.2009, 21:53
|
#5
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
в таком случае обратный вопрос!
Какой формулой(законом) вы руководствуетесь?
|
(Offline)
|
|
11.12.2009, 21:57
|
#6
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: id клетки
Я ведь программист, я всё придумываю сам, ТАРАМ-ПАМ-ПАМ. Так что мыслим и думаем товарищи
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
|
|
11.12.2009, 22:10
|
#7
|
|
Ответ: id клетки
G.A.D
тут бесконечное количество вариантов, по-сути ты хочешь от нас некую функцию z = f(x,y), которых может сколько угодно много
как вариант использовать перевод двух индексов 2д массива в 1 индекс 1д массива, те Z = Y * array_width_size + X (по-сути это и происходит с двумя индексами когда ты обращаешься к 2д массиву, потому что 2д массив в памяти это 1д массив и компилятор просто переводит 2 индекса в 1 индекс)
|
|
|
Сообщение было полезно следующим пользователям:
|
|
13.12.2009, 21:56
|
#8
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: id клетки
G.A.D: Такие вещи лучше массивом сразу делать и с типом не париться...
|
(Offline)
|
|
13.12.2009, 22:26
|
#9
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: id клетки
Ага, и создавать НЕСКОЛЬКО массивов чтобы загнать все необходимые свойства ОДНОГО объекта. Это конечно же во много раз легче, чем создать ОДИН тип. Спасибо Капитан Легкий Путь, вы нам помогли
|
(Offline)
|
|
13.12.2009, 23:24
|
#10
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: id клетки
Нафига тут несколько массивов? Тут как раз одним все обходится..
У него же не присваивается каждой клеточке уникальное имя.. Карту (или поверхность) как раз удобнее описывать через массив! А в другом случае, с разными типами данных уже лучше использовать тип.. Я не прав?)))
|
(Offline)
|
|
14.12.2009, 03:20
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
Массив, может хранить хэндлы на элементы из класса. Для этого, изучите функции Handle и Object.
Инфа по этим функциям, на этом форуме обсуждалась многократно.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
|
|
23.01.2010, 15:58
|
#12
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
Спасибо!
У меня есть массив
massiv:int=[1,0,0,1,..
1,0,0,1,..
0,1,1,0]
file:TStream = WriteFile("map.n")
For b:Int = EachIn massiv
file.WriteString(b)
EndIf
как мне записать содержимое в файл?
притом не в одну строку?
а примерно так
1,0,0,1
1,0,0,1
0,1,1,0
|
(Offline)
|
|
23.01.2010, 16:16
|
#13
|
Разработчик
Регистрация: 06.08.2007
Сообщений: 473
Написано 131 полезных сообщений (для 257 пользователей)
|
Ответ: id клетки
как в блицу можно, командами
Writeline Readline
|
(Offline)
|
|
23.01.2010, 16:26
|
#14
|
Разработчик
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений (для 96 пользователей)
|
Ответ: id клетки
Я наверное не так сформулировал задачу
надо чтоб в каждой строчке было по 4 символа как в массиве)
затем следующая строка по 4 символа
т.е
1,1,1,1,
0,1,1,0
1,1,1,1
а не 1,1,1,1,0,1,1,0,1,1,1,1
|
(Offline)
|
|
23.01.2010, 16:37
|
#15
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: id клетки
А зачем? Храни всё в битах, первым, запиши размер массива:
WriteInt(file,mwidth)
Затем высоту:
WriteInt(file,mheight)
Замет циклом:
For y=0 to mwidth-1
For x=0 to mheight-1
WriteByte(file,massive[x,y])
Next
Next
Читать также, сперва читаешь размер, потом вычитываешь данные.
При этом, хранить всё в бинарном виде, а не в строках, намного лучше, и защищённей.. (да и со строками медленно работать)
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:55.
|