Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

У меня тут есть проблема. У меня в игре есть инвентарь. Это двумерный массив. Когда я его изменяю, то я его сохраняю в файл чтобы потом прочитать с загрузкой игры. Пустая ячейка - 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
Влюбленный в С++
ПрофессионалФорумчанин
 
Аватар для Levsha100
 
Регистрация: 20.07.2008
Адрес: город, которого нет.
Сообщений: 4,032
Репутация: 1376

icq: 590368735
Радость

Код:

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;

__________________
Смотри в корень!
use linux - be happy
Levsha100 вне форума   Ответить с цитированием
Старый 18.07.2009, 18:24   #3
Shadow_1329
Форумчанин
 
Аватар для Shadow_1329
 
Регистрация: 23.02.2009
Сообщений: 237
Репутация: 40
По умолчанию

Уже лучше! А что это за 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
Адрес: /www[.](.*)[.]ru/
Сообщений: 779
Репутация: 290

icq: 9804336
По умолчанию

Код:

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
Репутация: 40
По умолчанию

А для чего нужна label тут?
Shadow_1329 вне форума   Ответить с цитированием
Старый 18.07.2009, 18:46   #6
Dj_smart
Капсула от спама
Участник клуба
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Адрес: /www[.](.*)[.]ru/
Сообщений: 779
Репутация: 290

icq: 9804336
По умолчанию

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

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

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Железо 6 05.01.2009 00:37


00:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru