Vom Prinzip her möglicherweise so ungefähr:
Code:
#include <acknex.h>

#define ITEM_ID_RED   0
#define ITEM_ID_GREEN 1
#define ITEM_ID_BLUE  2

BMAP *item_bmaps[3];
int   items[3];
int   items_count = 0;

void displayItems() {
    int i;
    for (i = 0; i < items_count; i++) {
        if (items[i] >= 0) {
            draw_quad(item_bmaps[items[i]], vector(10 + i*40, 10, 0),
                      NULL, NULL, NULL, NULL, 100, 0);
        }
    }
}

void addItem(int item_id) {
    if ((item_id >= 0) && (item_id < 3) && (items_count < 3)) {
        items[items_count] = item_id;
        items_count++;
    }
}

void removeItemAt(int index) {
    if ((index >= 0) && (index < 3) && (index < items_count)) {	
        for (; index < 2; index++) {
            items[index] = items[index+1];
        }
        items_count--;
    }
}

void main() {
    wait(1);
	
    item_bmaps[ITEM_ID_RED]   = bmap_createblack(32, 32, 24);
    item_bmaps[ITEM_ID_GREEN] = bmap_createblack(32, 32, 24);
    item_bmaps[ITEM_ID_BLUE]  = bmap_createblack(32, 32, 24);
    bmap_fill(item_bmaps[ITEM_ID_RED],   COLOR_RED,   100);
    bmap_fill(item_bmaps[ITEM_ID_GREEN], COLOR_GREEN, 100);
    bmap_fill(item_bmaps[ITEM_ID_BLUE],  COLOR_BLUE,  100);
	
    addItem(ITEM_ID_GREEN);
    addItem(ITEM_ID_GREEN);
    addItem(ITEM_ID_RED);
    removeItemAt(1);
    addItem(ITEM_ID_BLUE);
	
    while (1) {
        displayItems();
        wait(1);
    }
}