Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2009, 17:57   #1
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию Проблема...

У меня тут есть проблема. У меня в игре есть инвентарь. Это двумерный массив. Когда я его изменяю, то я его сохраняю в файл чтобы потом прочитать с загрузкой игры. Пустая ячейка - 0. Когда я подбираю какойлибо предмет то мне нужно чтобы ближайшая свободная ячейка стала заполненой например единицей. Но когда я делаю так у меня присваивается всем свободным ячейкам единицы. Вот код:
Код:
procedure AddItem(ID:integer;Num:integer);//процедуру получения предмета
begin
Items[ID].Number:=Items[ID].Number+Num;//присваивается нужное кол-во все делается по нужному ID
ShowHints('Предмет добавлен.');
for InvenH:=1 to 6 do//размер инвентаря по верт
for InvenW:=1 to 8 do//Размер инв. по горизон.
begin
if Inventar[InvenW,InvenH] = 0 then Inventar[InvenW,InvenH]:= ID;//если ячейка пустая то присваиваем ячейке нужный номер
end;
SaveInvenetory;
end;
Я конечно понямаю что процедура делается 48 раз нокак сделать по другому не знаю.
Shadow_1329 вне форума Ответить с цитированием
Старый 18.07.2009, 18:19   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,033
Радость

Код:
procedure AddItem(ID:integer;Num:integer);//процедуру получения предмета
begin
Items[ID].Number:=Items[ID].Number+Num;//присваивается нужное кол-во все делается по нужному ID
ShowHints('Предмет добавлен.');
for InvenH:=1 to 6 do//размер инвентаря по верт
for InvenW:=1 to 8 do//Размер инв. по горизон.
begin
if Inventar[InvenW,InvenH] = 0 then Inventar[InvenW,InvenH]:= ID;//если ячейка пустая то присваиваем ячейке нужный номер
end;
SaveInvenetory;
end;
Может так?
Код:
procedure AddItem(ID:integer;Num:integer);//процедуру получения предмета
begin
Items[ID].Number:=Items[ID].Number+Num;//присваивается нужное кол-во все делается по нужному ID
ShowHints('Предмет добавлен.');
for InvenH:=1 to 6 do//размер инвентаря по верт
for InvenW:=1 to 8 do//Размер инв. по горизон.
begin
  if Inventar[InvenW,InvenH] = 0 then
  begin 
     Inventar[InvenW,InvenH]:= ID;
     Break;
  end;
end;
SaveInvenetory;
end;
Levsha100 вне форума Ответить с цитированием
Старый 18.07.2009, 18:24   #3
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Уже лучше! А что это за Break? Вот что получилось теперь
Код:
3 1 2 0 0 0 0 0
3 1 2 0 0 0 0 0
3 1 2 0 0 0 0 0
3 1 2 0 0 0 0 0
3 1 2 0 0 0 0 0
3 1 2 0 0 0 0 0
Shadow_1329 вне форума Ответить с цитированием
Старый 18.07.2009, 18:36   #4
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Код:
procedure AddItem(ID:integer;Num:integer);//процедуру получения предмета
label l_1;
begin
Items[ID].Number:=Items[ID].Number+Num;//присваивается нужное кол-во все делается по нужному ID
ShowHints('Предмет добавлен.');
for InvenH:=1 to 6 do//размер инвентаря по верт
for InvenW:=1 to 8 do//Размер инв. по горизон.
begin
  if Inventar[InvenW,InvenH] = 0 then
  begin 
     Inventar[InvenW,InvenH]:= ID;
     goto l_1;
  end;
end;
l_1:
SaveInvenetory;
end;
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 18.07.2009, 18:45   #5
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

А для чего нужна label тут?
Shadow_1329 вне форума Ответить с цитированием
Старый 18.07.2009, 18:46   #6
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

хм.. ну нужно ж както покинуть 2 цикла?)
или не работает?
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 18.07.2009, 18:50   #7
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
По умолчанию

Да все работает! Спасибо!
Shadow_1329 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37