Tag: 数据集

适用于C中具有一般和特定属性的项列表的数据结构

我正在制作多人文字游戏,并为游戏中的每个玩家分配了一个库存。 库存是一个简单的线性链接列表,其中包含项目的ID和游戏中项目的状态。 例如,player1可能有一辆含有50%燃料的红色汽车,它将在列表中表示为(5,50),其中5是游戏中红色汽车的ID,50是该特定燃料的燃料量汽车。 但这意味着游戏中每个项目的信息都应保存在某些数据结构中。 我想过使用类似的东西 enum itemtype {car, gun, bullet, etc}; struct itemlist { itemtype type; char* name; int volume, weight; } itemlist[]; 并且红色汽车的所有信息(car, “Red car”, 15m^3, 2000kg)将被存储在项目itemlist[5] ,因为红色汽车的ID是5。 但是这个游戏中有不同类型的项目,因此每个项目都有自己的属性。 汽车将具有(max_speed, acceleration)和子弹(mass, velocity, kinetic_energy) 。 并且代码的某些部分需要访问这些特定属性才能在游戏中执行操作。 所以这意味着 从库存中获取ID 检查数组以查找此类项目的特定属性 用检索到的属性做事 但我不知道该怎么做,因为每个项目都有不同类别的特定属性。 向结构添加数组无济于事,因为属性可以是任何东西,如字符串或数字。 添加嵌套结构可能没问题,但可能有些东西试图使用item[5].properties.max_speed ,我不确定这是否安全,因为有人可能会试图从一个没有’的项目中获取属性max_speed有它。 那么,为这样的项目列表存储一般和特定属性的最佳方法是什么?

C-在1D字节数组中索引x,y,z坐标

我想评估曲面的值来实现行进四面体算法,但我不明白如何使用.raw无格式数据。 将带有卷数据集的.raw文件加载到1D字节数组后,应该应用什么算术转换来获取与X,Y,Z相关的值? 这是我知道加载.raw文件的唯一方法,我可以创建一个3D字节数组而不是这个吗? 怎么样? int XDIM=256, YDIM=256, ZDIM=256; const int size = XDIM*YDIM*ZDIM; bool LoadVolumeFromFile(const char* fileName) { FILE *pFile = fopen(fileName,”rb”); if(NULL == pFile) { return false; } GLubyte* pVolume=new GLubyte[size]; //<- here pVolume is a 1D byte array fread(pVolume,sizeof(GLubyte),size,pFile); fclose(pFile);