Hector
Board-Paladin
- Registriert
- 16 Juli 2013
- Beiträge
- 4.383
Moin.. auch mal ne blöde Frage, die wahrscheinlich mit einem "Meine Fresse, bin ich blöd!" endet....
Das, was ich will geht wahrscheinlich vieeel einfacher, aber dennoch wüsste ich gerne, wieso mein Ansatz nicht funktioniert.
Ich habe ein Fenster mit 5 Images, die Gegner darstellen sollen. Per Knopfdruck sollen diese nun zufällig neu über dem Formular verteilt werden.
Die Möglichen Positionen verwalte ich jeweils für die X und Y- Koordinate in einem Array, daraus wird zufällig je ein X und Y Wert gewählt und in einem mehrdimensionalen Array gespeichert, um diese Werte später zuzuweisen (Das ist der Punkt, der vermutlich um Welten einfacher geht, aber seis drum..^^)
Das ganze mache ich mit einer Schleife 5x, damit ich für jeden "Gegner" am Ende einen Wert ala "250,600" erhalte, womit dieser auf dem Fenster platziert werden kann.
Wenn ich mit dem Debugger wirklich bis zum Ende durchgehe, kann ich wunderbar erkennen, wie das mehrdimensionale Array mit den Werten gefüllt wird. Das passt also alles
Wenn dann jedoch die Gegner platziert werden, kommt es zu 2 Problemen:
1. Sie stehen alle auf der gleichen Position (obwohl jeder einen anderen Wert aus dem Array zugewiesen bekommt, die unterschiedlich sind!)
2. Das Muster wiederholt sich sehr auffällig, es scheint, als würde die Platzierung nur in einem bestimmten Bereich des Fensters stattfinden, obwohl die Werte eigentlich jeden möglichen Punkt ansprechen...
Naja hier mal der Code:
[src=csharp]
public void setEnemies()
{
//Mögliche Koordinaten und mehrdimensionales Array
int[] enemyPosX = new int[] { 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750 };
int[] enemyPosY = new int[] { 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500 };
int[,] savedPos = new int[5, 2];
//Schleifen zur Auswahl von 5 zufälligen X und Y Werten und befüllen des mehrdim. Arrays
int n = 1;
int posx = 0;
while (n < 6)
{
Random enemyRndX = new Random();
int ix = enemyRndX.Next(0, 15);
savedPos[posx, 0] = enemyPosX[ix];
posx++;
n++;
}
posx = 0;
n = 1;
while (n < 6)
{
Random enemyRndY = new Random();
int iy = enemyRndY.Next(0, 10);
savedPos[posx, 1] = enemyPosY[iy];
posx++;
n++;
}
//Gegner anhand der ermittelten Positionen verteilen:
sprEnemy1.Location = new Point(savedPos[0, 0], savedPos[0, 1]);
sprEnemy2.Location = new Point(savedPos[1, 0], savedPos[1, 1]);
sprEnemy3.Location = new Point(savedPos[2, 0], savedPos[2, 1]);
sprEnemy4.Location = new Point(savedPos[3, 0], savedPos[3, 1]);
sprEnemy5.Location = new Point(savedPos[4, 0], savedPos[4, 1]);
}
[/src]
Bis zum Punkt "Gegner anhand der ermittelten Positionen verteilen:" stimmt anhand des Debuggers wirklich jeder Wert....Wenn ich mir hier den Inhalt des mehrdim. Arrays ausgeben lasse, passt alles. Wieso die Dinger dann alle auf dem gleichen Platz, und dann noch so eingeschränkt sitzen....keine Ahnung...
Weiß jemand Bescheid?
Das, was ich will geht wahrscheinlich vieeel einfacher, aber dennoch wüsste ich gerne, wieso mein Ansatz nicht funktioniert.
Ich habe ein Fenster mit 5 Images, die Gegner darstellen sollen. Per Knopfdruck sollen diese nun zufällig neu über dem Formular verteilt werden.
Die Möglichen Positionen verwalte ich jeweils für die X und Y- Koordinate in einem Array, daraus wird zufällig je ein X und Y Wert gewählt und in einem mehrdimensionalen Array gespeichert, um diese Werte später zuzuweisen (Das ist der Punkt, der vermutlich um Welten einfacher geht, aber seis drum..^^)
Das ganze mache ich mit einer Schleife 5x, damit ich für jeden "Gegner" am Ende einen Wert ala "250,600" erhalte, womit dieser auf dem Fenster platziert werden kann.
Wenn ich mit dem Debugger wirklich bis zum Ende durchgehe, kann ich wunderbar erkennen, wie das mehrdimensionale Array mit den Werten gefüllt wird. Das passt also alles
Wenn dann jedoch die Gegner platziert werden, kommt es zu 2 Problemen:
1. Sie stehen alle auf der gleichen Position (obwohl jeder einen anderen Wert aus dem Array zugewiesen bekommt, die unterschiedlich sind!)
2. Das Muster wiederholt sich sehr auffällig, es scheint, als würde die Platzierung nur in einem bestimmten Bereich des Fensters stattfinden, obwohl die Werte eigentlich jeden möglichen Punkt ansprechen...
Naja hier mal der Code:
[src=csharp]
public void setEnemies()
{
//Mögliche Koordinaten und mehrdimensionales Array
int[] enemyPosX = new int[] { 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750 };
int[] enemyPosY = new int[] { 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500 };
int[,] savedPos = new int[5, 2];
//Schleifen zur Auswahl von 5 zufälligen X und Y Werten und befüllen des mehrdim. Arrays
int n = 1;
int posx = 0;
while (n < 6)
{
Random enemyRndX = new Random();
int ix = enemyRndX.Next(0, 15);
savedPos[posx, 0] = enemyPosX[ix];
posx++;
n++;
}
posx = 0;
n = 1;
while (n < 6)
{
Random enemyRndY = new Random();
int iy = enemyRndY.Next(0, 10);
savedPos[posx, 1] = enemyPosY[iy];
posx++;
n++;
}
//Gegner anhand der ermittelten Positionen verteilen:
sprEnemy1.Location = new Point(savedPos[0, 0], savedPos[0, 1]);
sprEnemy2.Location = new Point(savedPos[1, 0], savedPos[1, 1]);
sprEnemy3.Location = new Point(savedPos[2, 0], savedPos[2, 1]);
sprEnemy4.Location = new Point(savedPos[3, 0], savedPos[3, 1]);
sprEnemy5.Location = new Point(savedPos[4, 0], savedPos[4, 1]);
}
[/src]
Bis zum Punkt "Gegner anhand der ermittelten Positionen verteilen:" stimmt anhand des Debuggers wirklich jeder Wert....Wenn ich mir hier den Inhalt des mehrdim. Arrays ausgeben lasse, passt alles. Wieso die Dinger dann alle auf dem gleichen Platz, und dann noch so eingeschränkt sitzen....keine Ahnung...
Weiß jemand Bescheid?