forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Инвентарь (http://forum.boolean.name/showthread.php?t=8687)

Fatalix3d 18.07.2009 11:47

Инвентарь
 
Вложений: 1
Ну как в многих RPG сделал такую вещь, при нажатие на сундук,сумку,труп,котелок для приготовления и тому подобных вещей появляется такой мини инвентарь с их содержимым как на скрине. Так вот собственно в чем вопрос он состоит из ячеек и я проверяю каждую ячейку таким образом:
Цитата:

If cell_1=1 Then DrawImageEx food_hleb,280+32,270+32
If cell_2=2 Then DrawImageEx food_apple,362+32,270+32
If cell_3=1 Then DrawImageEx food_hleb,444+32,270+32
If cell_4=12 Then DrawImageEx food_moloko,526+32,270+32
То есть каждому предмету присвоен свой номер.
Получается громоздко ведь для каждой ячейки пишу проверку на один и тот же предмет, и уже с небольшим количеством предметов список проверок становиться слишком большим. Интересует как можно сделать рисование предметов более универсальным. Спасибо за внимание.

NitE 18.07.2009 13:21

Ответ: Инвентарь
 
дерьмо=1
отвертка=2
ещё_чтото=3

Select итем_ин_ячейка
case 1
дравимазж дерьмо,ячейка_х+чета,ячейка_у+чета
case 2
дравимазж отвертка,ячейка_х+чета,ячейка_у+чета

ну и что-то вроде... хотя возмжно всё это абсолютно неправильно и опасно для здоровья

cahekp 18.07.2009 14:03

Ответ: Инвентарь
 
Ну, во-первых, не называй каждую ячейку инвентаря каким-то уникальным именем.
Делай массив (в данном случае: dim object_inventory(2,2) ).

Затем, когда стоит вопрос вывода картинок, делай что-то похожее на это:
for y=0 to 2
for x=0 to 2
DrawImageEx(object_inventory(x,y),size_x*x+inv_lef t,size_y*y+inv_top)
next
next

Где size_x,size_y - размер ячейки на экране, а inv_left и inv_top - x,y координаты левого верхнего угла инвентаря, от которого надо рисовать ячейки.
Сами элементы массива object_inventory должны содержать "хэндлы" нужных тебе картинок. А по этим "хэндлам", в случае необходимости, нетрудно будет догадаться, какой именно предмет лежит в той или иной ячейке.

"Хэндлы", если не совсем понятно, создавай, например, вот таким образом: food_hleb=CreateImageEx( LoadTexture ("food_hleb.png",1+2) , 256, 256).

Как видишь, код очень простой и лаконичный. :)

ABTOMAT 18.07.2009 15:14

Ответ: Инвентарь
 
А я делаю так:
Есть Type Item, в ём в филдах записано название, картинка, характеристики и т.д.
А в инвентаре предметы заданы массивом Item'ов.
Field Items.Item[100]
Перебирая сей массив я читаю напрямую из итема, какую картинку рисовать и какую надпись писать:
DrewImageEx Inventory\Items[i]\Image,j*64, k*64
Ну ты понял.


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

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