dies ist mein erster Beitrag hier im Forum, deshalb stelle ich mich kurz vor:
Ich bin 26 Jahre alt und programmiere seit meinem 12 Lebensjahr mal mehr und mal weniger.
Angefangen habe ich mit BlitzBasic. Irgendwann habe ich dann recht viel mit PHP und HTML gemacht. Nun bin ich vor wenigen Wochen auf C# gestoßen.
Dies ist nun auch meine erste Berührung mit der OOP, was mir einige Probleme bereitet.
Ich habe zwar schon viel gelesen, allerdings bleiben doch viele Fragen, weshalb ich mich nun hier angemeldet habe.
Momentan stehe ich vor folgendem Problem bei meinem "Spiel" mit C# und dem MonoGame Framework.
Ich zeichne einen "Menschen". Dann zeichne ich noch einen Menschen.
Beide kann ich instanzieren und dann auch mittels Methode in der Klasse Mensch auch bewegen.
Nun sollen irgendwann mehr Menschen hinzukommen, so dass ich nicht mehr für jeden möglichen Menschen die Methode Bewegen() aufrufen will.
Nun habe ich an eine statische Methode gedacht. Allerdings kann ich in dieser nicht die Positionswerte der zuvor erstellten Menschen nutzen.
Gibt es eine Möglichkeit eine Methode für alle Objekte aufzurufen?
Hier mal mein Quellcode der Methode:
public void Bewegen()
{
// TODO: Add your update logic here
MouseState newState = Mouse.GetState();
//Ball mit links klicken
if (newState.LeftButton == ButtonState.Pressed && oldState.LeftButton == ButtonState.Released && isclicked == false)
{
mausx = newState.X;
mausy = newState.Y;
if (mausx ≥ mposx && mausy ≥ mposy && mausx ≤ mposx + 64 && mausy ≤ mposy + 64)
{
/*
Random rnd = new Random();
randx = rnd.Next(1, _graphics.PreferredBackBufferWidth - 56);
randy = rnd.Next(1, _graphics.PreferredBackBufferHeight - 56);
*/
isclicked = true;
}
}
if (newState.RightButton == ButtonState.Pressed && oldState.RightButton == ButtonState.Released && isclicked == true && ziel == false)
{
mausx = newState.X;
mausy = newState.Y;
int posx = mposx;
int posy = mposy;
ziel = true;
}
if (isclicked == true && mposx != mausx && ziel == true)
{
if (mposx > mausx) { mposx--; }
if (mposx < mausx) { mposx++; }
}
if (isclicked == true && mposy != mausy && ziel == true)
{
if (mposy > mausy) { mposy--; }
if (mposy < mausy) { mposy++; }
}
if (mposy == mausy && mposx == mausx) { ziel = false; isclicked = false; }
//rechts klick
oldState = newState; //
}
Ich danke euch schon Mal für eure Mühen!