Siemka!! Pisze ostatnio sobie malutką gre w XNA i robie do niej narzędzie do budowania plansz. Jednak gdy zapisuje nazwy tekstur i recangle do listy a potem chcę je wpisać w plik wyskakuje mi błąd "Indeks był spoza zakresu. Musi mieć wartość nieujemną i mniejszą niż rozmiar kolekcji.". Nie wiem o czym w tym chodzi, ponieważ wszystko powinno działać poprawnie, kawałek kodu:
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (Keyboard.GetState().IsKeyDown(Keys.A))
{
if (lwieza <= 6)
{
lwieza++;
}
else
{
lwieza = 1;
}
}
switch(lwieza)
{
case(1):
tekstura = Content.Load<Texture2D>("wieza 1");
break;
case(2):
tekstura = Content.Load<Texture2D>("wieza 2");
break;
case(3):
tekstura = Content.Load<Texture2D>("wieza 3");
break;
case(4):
tekstura = Content.Load<Texture2D>("wieza 4");
break;
case(5):
tekstura = Content.Load<Texture2D>("droga");
break;
}
if (Keyboard.GetState().IsKeyDown(Keys.Left))
{
rec.X -= 2;
}
else if (Keyboard.GetState().IsKeyDown(Keys.Right))
{
rec.X += 2;
}
else if (Keyboard.GetState().IsKeyDown(Keys.Down))
{
rec.Y += 2;
}
else if (Keyboard.GetState().IsKeyDown(Keys.Up))
{
rec.Y -= 2;
}
if (Keyboard.GetState().IsKeyDown(Keys.Enter))
{
if (!File.Exists(@"C:\\WB-TD\zapismapy.txt"))
{
File.Create(@"C:\\WB-TD\zapismapy.txt");
}
lista_rec.Add(rec);
if (lwieza != 5)
{
nazwy_wiez.Add("wieza " + lwieza);
}
else
{
nazwy_wiez.Add("droga");
}
}
if (Keyboard.GetState().IsKeyDown(Keys.S))
{
FileStream zapis = new FileStream(@"C:\\WB-TD\zapismapy.txt", FileMode.Open);
StreamWriter pisz = new StreamWriter(zapis);
for (int i = 0; i <= nazwy_wiez.Count;)
{
pisz.WriteLine(Convert.ToString(nazwy_wiez.ElementAt<string>(i)) + " " + Convert.ToString(lista_rec.ElementAt<Rectangle>(i)));
i++;
}
pisz.Close();
zapis.Close();
}
base.Update(gameTime);
}