phönix
Enthusiast
Thread Starter
- Mitglied seit
- 25.03.2007
- Beiträge
- 2.823
- Prozessor
- Core i7 3770
- Mainboard
- Intel DB67BL
- Speicher
- 4x 4GB DDR3 Kingston 1333Mhz
- Grafikprozessor
- MSI Geforce GTX 970
XNA C# Buttons OOP - Abgeschlossen
eine Klasse -> eine Variable, mehrere Instanzen -> verschiedene Werte - abgeschlossen
Standard XNA C# Listeneinträge auswählen - Abgeschlossen
Moin
ich programmiere derzeit ein kleines Spiel mit XNA und C# und bin auf ein Problem gestoßen, das ich einfach nicht lösen kann.
Es wird ein simples Strategiespiel und aktuell baue ich ein "Ingame" Menü auf, also womit man dann im Spiel das Spielgeschehen beeinflussen kann. Hierfür benötige ich natürlich einige Buttons .
Ich habe eine eigene Klasse für die Buttons, in der ich festlege, wann die "Hover" Textur angezeigt werden soll.
Das klappt auch wunderbar und ich kann mit dieser Klasse ohne große Schreibarbeit Buttons instanziieren lassen(die Buttons werden in einer Map-Klasse instanziiert, die die Spielumgebung aufbaut) . Allerdings besitzen sie so noch keine Funktion. Jetzt kann ich die Funktionen der einzelnden Buttons natürlich in der Map-Klasse festlegen.
Also z.B. wenn Mausposition = Button1 Position ist und geklickt wurde, dann führe das aus,
wenn Mausposition = Button2 Position ist und geklickt wurde, dann führe das und das aus.
Wenn ich das auf diese Weise für jeden Button in der Map-Klasse festlege, ist das aber ein ungeheurer Schreibaufwand.
Ich hoffe es ist bis hier hin verständlich, was mein Problem ist.
Jetzt kann ich ja der Button-Klasse einfach folgenden Befehl geben:
Und hier weiß ich nicht mehr weiter. Ich hatte mir gedacht, dass ich dann einen Boolean auf True setze. Allerdings weiß ich nicht, wie ich das dann zur Map-Klasse übertrage, damit die damit dann etwas anfangen kann.
Also z.B. wenn Button1 den Wert true hat, dann mache dies und das.
Vielleicht habt ihr sogar eine bessere Idee, wie man das Lösen kann.
Ich hoffe ich hab mich verständlich genug ausgedrückt und ich bedanke mich jetzt schonmal für eure Hilfe.
mfG
ich programmiere derzeit ein kleines Spiel mit XNA und C# und bin auf ein Problem gestoßen, das ich einfach nicht lösen kann.
Es wird ein simples Strategiespiel und aktuell baue ich ein "Ingame" Menü auf, also womit man dann im Spiel das Spielgeschehen beeinflussen kann. Hierfür benötige ich natürlich einige Buttons .
Ich habe eine eigene Klasse für die Buttons, in der ich festlege, wann die "Hover" Textur angezeigt werden soll.
Code:
public void C_Resolution()
{
int listitems = res.Count;
if(Keyboard.GetState().IsKeyDown(Keys.Up))
{
i = i + (-1);
if (i <= 0)
{
i = listitems;
}
}
else if (Keyboard.GetState().IsKeyDown(Keys.Down))
{
i = i + 1;
if (i >= listitems)
{
i = 0;
}
}
graphics.PreferredBackBufferWidth = res[i].rWidth;
graphics.PreferredBackBufferHeight = res[i].rHeight;
if (Keyboard.GetState().IsKeyDown(Keys.Enter))
{
LoadContent();
graphics.ApplyChanges();
}
}
Also z.B. wenn Mausposition = Button1 Position ist und geklickt wurde, dann führe das aus,
wenn Mausposition = Button2 Position ist und geklickt wurde, dann führe das und das aus.
Wenn ich das auf diese Weise für jeden Button in der Map-Klasse festlege, ist das aber ein ungeheurer Schreibaufwand.
Ich hoffe es ist bis hier hin verständlich, was mein Problem ist.
Jetzt kann ich ja der Button-Klasse einfach folgenden Befehl geben:
Code:
if (Mouse.GetState().LeftButton == ButtonState.Pressed && oldState.LeftButton != ButtonState.Pressed){
}
Und hier weiß ich nicht mehr weiter. Ich hatte mir gedacht, dass ich dann einen Boolean auf True setze. Allerdings weiß ich nicht, wie ich das dann zur Map-Klasse übertrage, damit die damit dann etwas anfangen kann.
Also z.B. wenn Button1 den Wert true hat, dann mache dies und das.
Vielleicht habt ihr sogar eine bessere Idee, wie man das Lösen kann.
Ich hoffe ich hab mich verständlich genug ausgedrückt und ich bedanke mich jetzt schonmal für eure Hilfe.
mfG
eine Klasse -> eine Variable, mehrere Instanzen -> verschiedene Werte - abgeschlossen
Ich bins mal wieder
Ich bin in C# auf ein neues Problem gestoßen.
Ich habe von einer Klasse mehrere Instanzen erstellt. Ich nenne die Klasse jetzt mal "Ball". Ball verfügt über eine Int-Variable mit einem Wert von 0.
Jetzt habe ich also z.B. 3 Bälle instanziiert und alle 3 Bälle haben den Wert 0. Ich möchte jedoch, dass die 3 Bälle jeweils einen anderen Wert haben, ohne 2 weitere Variablen erstellen zu müssen.
Also z.B.
Ball 1 hat den Wert 1,
Ball 2 hat den Wert 2 und
Ball 3 hat den Wert 3.
Hat hier jemand einen Tipp für mich, wie ich das lösen kann?
Ich bin in C# auf ein neues Problem gestoßen.
Ich habe von einer Klasse mehrere Instanzen erstellt. Ich nenne die Klasse jetzt mal "Ball". Ball verfügt über eine Int-Variable mit einem Wert von 0.
Jetzt habe ich also z.B. 3 Bälle instanziiert und alle 3 Bälle haben den Wert 0. Ich möchte jedoch, dass die 3 Bälle jeweils einen anderen Wert haben, ohne 2 weitere Variablen erstellen zu müssen.
Also z.B.
Ball 1 hat den Wert 1,
Ball 2 hat den Wert 2 und
Ball 3 hat den Wert 3.
Hat hier jemand einen Tipp für mich, wie ich das lösen kann?
Standard XNA C# Listeneinträge auswählen - Abgeschlossen
Ich arbeite aktuell an einer kleinen simplen 2D Engine und habe mehrere 16:9 Auflösungen in einer Liste abgelegt. Nun möchte ich mit den Pfeiltasten aus dieser Liste eine dieser Auflösungen auswählen und sie durch drücken der Enter Taste aktivieren. Ich habe es so gelöst, dass beim drücken der Pfeiltasten entweder ein Wert addiert oder subtrahiert wird. So bestimme ich, welcher Listeneintrag ausgewählt wurde. Dann musste ich noch ein Limit einfügen, da die Liste ja nur eine bestimmte Anzahl von Einträgen hat
Allerdings funktioniert das aktuell nur, wenn ich einen Wert dazu addiere und damit die Liste von oben nach unten abarbeite. Umgekehrt, also wenn ich einen Wert subtrahiere, schmiert mir die "Engine" ab.
Hat jemand eine Idee woran es liegen kann?
Falls ihr eine bessere Idee habt, wie man die Listeneinträge einzeln auswählen kann, dann könnt ihr sie mir gerne mitteilen
mit freundlichen Grüßen
Lösung:
Die Liste beginnt beim Index 0, wenn die Einträge gezählt werden, wird jedoch nicht bei der Zahl 0 angefangen
D.h ich habe 4 Elemente in der Liste, also i = 4. Der letzte Eintrag in der Liste hat jedoch den Index 3, damit greife ich auf ein nicht existenten Eintrag zu und die Engine schmiert ab.
Allerdings funktioniert das aktuell nur, wenn ich einen Wert dazu addiere und damit die Liste von oben nach unten abarbeite. Umgekehrt, also wenn ich einen Wert subtrahiere, schmiert mir die "Engine" ab.
Hat jemand eine Idee woran es liegen kann?
Falls ihr eine bessere Idee habt, wie man die Listeneinträge einzeln auswählen kann, dann könnt ihr sie mir gerne mitteilen
Code:
public void C_Resolution()
{
int listitems = res.Count;
if(Keyboard.GetState().IsKeyDown(Keys.Up))
{
i = i - 1;
if (i <= 0)
{
[B] i = listitems - 1;[/B]
}
}
else if (Keyboard.GetState().IsKeyDown(Keys.Down))
{
i = i + 1;
if (i >= listitems)
{
i = 0;
}
}
graphics.PreferredBackBufferWidth = res[i].rWidth;
graphics.PreferredBackBufferHeight = res[i].rHeight;
if (Keyboard.GetState().IsKeyDown(Keys.Enter))
{
LoadContent();
graphics.ApplyChanges();
}
}
mit freundlichen Grüßen
Lösung:
Die Liste beginnt beim Index 0, wenn die Einträge gezählt werden, wird jedoch nicht bei der Zahl 0 angefangen
D.h ich habe 4 Elemente in der Liste, also i = 4. Der letzte Eintrag in der Liste hat jedoch den Index 3, damit greife ich auf ein nicht existenten Eintrag zu und die Engine schmiert ab.
Zuletzt bearbeitet: