by Anonymous » 28 Feb 2025, 04:56
Folgendes ist ein Spielzeugbeispiel:
Ein Bild speichert eine Breite, Höhe und Filepath, dargestellt durch die Struktur Bild :
Code: Select all
#include
#include
struct IMAGE {
int WIDTH;
int HIGHT;
const char* FILEPATH;
};
static_assert(std::is_pod::value);
Es gibt ein 100 eindeutiges Bild s in einem Spiel wie einen Dirt -Block, ein Schwert und ein Hauptmenü usw.
Ein Ansatz (1) zum Speichern all dieser 100 Bilder in einem Programm besteht darin, separate Variablen zu verwenden für jedes eindeutige Bild:
Code: Select all
int main(){
IMAGE DIRTBLOCK = IMAGE(25, 25, "RESOURCE\\DIRTBLOCKIMAGE");
IMAGE SWORD = IMAGE(100, 25, "RESOURCE\\SWORDIMAGE");
IMAGE MAINMENU = IMAGE(500, 500, "RESOURCE\\MAINMENUIMAGE);
}
Ein anderer Ansatz (2) könnte darin bestehen, einen Enum von Bildnamen und ein Array von Bild s:
zu verwendenenum IMAGENAME : unsigned char {
DIRTBLOCK,
SWORD,
MAINMENU,
NUMIMAGES
};
IMAGE* IMAGES;
int main(){
IMAGES = (IMAGE*)std::malloc(sizeof(IMAGE) * NUMIMAGES);
IMAGES[DIRTBLOCK] = IMAGE {25, 25, "RESOURCE\\DIRTBLOCKIMAGE"};
IMAGES[SWORD] = IMAGE {100, 25, "RESOURCE\\SWORDIMAGE"};
IMAGES[MAINMENU] = IMAGE {500, 500, "RESOURCE\\MAINMENUIMAGE"};
std::free(IMAGES);
}
< /code>
Was sind im Allgemeinen die Vor- und Nachteile von Ansätzen (1), (2). Alternativ gibt es einen besseren Ansatz (3), ich habe nicht berücksichtigt.>
Folgendes ist ein Spielzeugbeispiel:
Ein Bild speichert eine Breite, Höhe und Filepath, dargestellt durch die Struktur Bild :
[code]#include
#include
struct IMAGE {
int WIDTH;
int HIGHT;
const char* FILEPATH;
};
static_assert(std::is_pod::value);
[/code]
Es gibt ein 100 eindeutiges Bild s in einem Spiel wie einen Dirt -Block, ein Schwert und ein Hauptmenü usw.
Ein Ansatz (1) zum Speichern all dieser 100 Bilder in einem Programm besteht darin, separate Variablen zu verwenden für jedes eindeutige Bild:
[code]int main(){
IMAGE DIRTBLOCK = IMAGE(25, 25, "RESOURCE\\DIRTBLOCKIMAGE");
IMAGE SWORD = IMAGE(100, 25, "RESOURCE\\SWORDIMAGE");
IMAGE MAINMENU = IMAGE(500, 500, "RESOURCE\\MAINMENUIMAGE);
}
[/code]
Ein anderer Ansatz (2) könnte darin bestehen, einen Enum von Bildnamen und ein Array von Bild s:
zu verwendenenum IMAGENAME : unsigned char {
DIRTBLOCK,
SWORD,
MAINMENU,
NUMIMAGES
};
IMAGE* IMAGES;
int main(){
IMAGES = (IMAGE*)std::malloc(sizeof(IMAGE) * NUMIMAGES);
IMAGES[DIRTBLOCK] = IMAGE {25, 25, "RESOURCE\\DIRTBLOCKIMAGE"};
IMAGES[SWORD] = IMAGE {100, 25, "RESOURCE\\SWORDIMAGE"};
IMAGES[MAINMENU] = IMAGE {500, 500, "RESOURCE\\MAINMENUIMAGE"};
std::free(IMAGES);
}
< /code>
Was sind im Allgemeinen die Vor- und Nachteile von Ansätzen (1), (2). Alternativ gibt es einen besseren Ansatz (3), ich habe nicht berücksichtigt.>