forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   id клетки (http://forum.boolean.name/showthread.php?t=11411)

G.A.D 11.12.2009 21:05

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

NitE 11.12.2009 21:15

Ответ: id клетки
 
например (не точно но суть ясна)
v.id$=int(str(i)+str(j))

G.A.D 11.12.2009 21:24

Ответ: id клетки
 
не понимаю(
зачем тут str?

Hurrit 11.12.2009 21:47

Ответ: id клетки
 
Вот попробуй так
V.id=j+(i-1)*size

G.A.D 11.12.2009 21:53

Ответ: id клетки
 
в таком случае обратный вопрос!
Какой формулой(законом) вы руководствуетесь?

Hurrit 11.12.2009 21:57

Ответ: id клетки
 
Я ведь программист, я всё придумываю сам, ТАРАМ-ПАМ-ПАМ. Так что мыслим и думаем товарищи

jimon 11.12.2009 22:10

Ответ: id клетки
 
G.A.D
тут бесконечное количество вариантов, по-сути ты хочешь от нас некую функцию z = f(x,y), которых может сколько угодно много

как вариант использовать перевод двух индексов 2д массива в 1 индекс 1д массива, те Z = Y * array_width_size + X (по-сути это и происходит с двумя индексами когда ты обращаешься к 2д массиву, потому что 2д массив в памяти это 1д массив и компилятор просто переводит 2 индекса в 1 индекс)

DStalk 13.12.2009 21:56

Ответ: id клетки
 
G.A.D: Такие вещи лучше массивом сразу делать и с типом не париться...

Hurrit 13.12.2009 22:26

Ответ: id клетки
 
Ага, и создавать НЕСКОЛЬКО массивов чтобы загнать все необходимые свойства ОДНОГО объекта. Это конечно же во много раз легче, чем создать ОДИН тип. Спасибо Капитан Легкий Путь, вы нам помогли

DStalk 13.12.2009 23:24

Ответ: id клетки
 
Нафига тут несколько массивов? Тут как раз одним все обходится..
У него же не присваивается каждой клеточке уникальное имя.. Карту (или поверхность) как раз удобнее описывать через массив! А в другом случае, с разными типами данных уже лучше использовать тип.. Я не прав?)))

moka 14.12.2009 03:20

Ответ: id клетки
 
Массив, может хранить хэндлы на элементы из класса. Для этого, изучите функции Handle и Object.
Инфа по этим функциям, на этом форуме обсуждалась многократно.

G.A.D 23.01.2010 15:58

Ответ: 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

Illidan 23.01.2010 16:16

Ответ: id клетки
 
как в блицу можно, командами
Writeline Readline

G.A.D 23.01.2010 16:26

Ответ: 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

moka 23.01.2010 16:37

Ответ: 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
Читать также, сперва читаешь размер, потом вычитываешь данные.
При этом, хранить всё в бинарном виде, а не в строках, намного лучше, и защищённей.. (да и со строками медленно работать)


Часовой пояс GMT +4, время: 04:34.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot