Bonjour j'essaie de modifier la valeur dans le dictionnaire, mais le compilateur lance KeyNotFoundException
. Je suis sûr, j'ai déclaré cette clé dans le dictionnaire, parce que j'appelle la méthode GenerateEmptyChunks()
, qui remplit le dictionnaire avec des morceaux avec la clé de leur position et les valeurs sont vides pour le générateur de niveau. J'ai vérifié debuger et l'objet dictionnaire Chunks
est correctement rempli avec des clés et des valeurs. Est-ce causé par ma méthode CompareTo
non fonctionnelle? Si oui, comment j'ai modifié la méthode CompareTo
pour retourner les bonnes valeurs?KeyNotFoundException dans le dicton rempli
public Dictionary<WPoint, WChunk> Chunks = new Dictionary<WPoint, WChunk>();
GenerateEmptyChunks() Méthode:
public void GenerateEmptyChunks(int Xcount, int Ycount)
{
for(int x = 0; x <= Xcount; x++)
{
for (int y = 0; y <= Ycount; y++)
{
this.Chunks.Add(new WPoint(x, y), new WChunk(x, y));
}
}
}
AddBlock() de la méthode qui est appelée par le générateur de niveau pour chaque tuile:
public void AddBlock(WPoint location, int data)
{
this.Chunks[location.GetChunk()].AddTile(new WTile(location, data));
}
WChunk objet:
public class WChunk
{
public int ChunkX;
public int ChunkY;
public SortedDictionary<WPoint, WTile> Tiles = new SortedDictionary<WPoint, WTile>();
public WChunk(int posX, int posY)
{
ChunkX = posX;
ChunkY = posY;
}
public void AddTile(WTile tile)
{
Tiles.Add(tile.GetLocation(), tile);
}
}
WPoint objet:
public class WPoint : IComparable
{
public float X;
public float Y;
public WPoint(float x, float y)
{
X = x;
Y = y;
}
public WPoint GetChunk()
{
//Oprava pre bloky mensie ako (1,1)
if (X <= 16 && Y <= 16)
{
return new WPoint(0, 0);
}
else
{
double pX = (double)(X/16);
double pY = (double)(Y/16);
return new WPoint((int)Math.Floor(pX), (int)Math.Floor(pY));
}
}
public int CompareTo(object obj)
{
WPoint point2 = (WPoint)obj;
if (point2.X == this.X && point2.Y == this.Y)
{
return 0;
}
else if (point2.X >= this.X && point2.Y >= this.Y)
{
return -1;
}
else
{
return 1;
}
}
}
Toutes les idées pourquoi clés Rejetant compilateur, quand ils sont dans le dictionnaire?
Merci, cela fonctionne. –