Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 11.12.2009, 21:05   #1
G.A.D
Разработчик
 
Регистрация: 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
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: id клетки

например (не точно но суть ясна)
v.id$=int(str(i)+str(j))
(Offline)
 
Ответить с цитированием
Старый 11.12.2009, 21:24   #3
G.A.D
Разработчик
 
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений
(для 96 пользователей)
Ответ: id клетки

не понимаю(
зачем тут str?
(Offline)
 
Ответить с цитированием
Старый 11.12.2009, 21:47   #4
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: id клетки

Вот попробуй так
V.id=j+(i-1)*size
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
G.A.D (11.12.2009)
Старый 11.12.2009, 21:53   #5
G.A.D
Разработчик
 
Регистрация: 28.02.2009
Сообщений: 434
Написано 44 полезных сообщений
(для 96 пользователей)
Ответ: id клетки

в таком случае обратный вопрос!
Какой формулой(законом) вы руководствуетесь?
(Offline)
 
Ответить с цитированием
Старый 11.12.2009, 21:57   #6
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: id клетки

Я ведь программист, я всё придумываю сам, ТАРАМ-ПАМ-ПАМ. Так что мыслим и думаем товарищи
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Hurrit за это полезное сообщение:
cheaters-hater (22.02.2010), Reizel (23.01.2010)
Старый 11.12.2009, 22:10   #7
jimon
 
Сообщений: n/a
Ответ: id клетки

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

как вариант использовать перевод двух индексов 2д массива в 1 индекс 1д массива, те Z = Y * array_width_size + X (по-сути это и происходит с двумя индексами когда ты обращаешься к 2д массиву, потому что 2д массив в памяти это 1д массив и компилятор просто переводит 2 индекса в 1 индекс)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
G.A.D (11.12.2009)
Старый 13.12.2009, 21:56   #8
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: id клетки

G.A.D: Такие вещи лучше массивом сразу делать и с типом не париться...
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 22:26   #9
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: id клетки

Ага, и создавать НЕСКОЛЬКО массивов чтобы загнать все необходимые свойства ОДНОГО объекта. Это конечно же во много раз легче, чем создать ОДИН тип. Спасибо Капитан Легкий Путь, вы нам помогли
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 23:24   #10
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: id клетки

Нафига тут несколько массивов? Тут как раз одним все обходится..
У него же не присваивается каждой клеточке уникальное имя.. Карту (или поверхность) как раз удобнее описывать через массив! А в другом случае, с разными типами данных уже лучше использовать тип.. Я не прав?)))
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 03:20   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: id клетки

Массив, может хранить хэндлы на элементы из класса. Для этого, изучите функции Handle и Object.
Инфа по этим функциям, на этом форуме обсуждалась многократно.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
ABTOMAT (23.01.2010), G.A.D (24.12.2009)
Старый 23.01.2010, 15:58   #12
G.A.D
Разработчик
 
Регистрация: 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
Illidan
Разработчик
 
Регистрация: 06.08.2007
Сообщений: 473
Написано 131 полезных сообщений
(для 257 пользователей)
Ответ: id клетки

как в блицу можно, командами
Writeline Readline
(Offline)
 
Ответить с цитированием
Старый 23.01.2010, 16:26   #14
G.A.D
Разработчик
 
Регистрация: 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
moka
.
 
Регистрация: 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 за это полезное сообщение:
G.A.D (23.01.2010), Nex (29.01.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клетки! Черный Лорд Основной форум 10 01.08.2007 10:42
столкновение со стенкой на уровне в виде клетки aureli0 Основной форум 1 19.04.2007 16:09


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com