Erst wird sound abgespielt, dann Ausgaben?
-
hi,
Eigentlich sollte mein Programmablauf wie folgt geschehen:
//Player 1
- Ausgabe "würfelt..."
- Sound
- Ausgabe der gewürfelten Zahl
- löschen von "würfelt..."//Player 2
- Ausgabe "würfelt..."
- Sound
- Ausgabe der gewürfelten Zahl
- löschen von "würfelt..."usw...
Doch ist der ablauif irgendwie anders
//Player 1
- Sound//Player 2
- SoundBis zum letzten Player.
und dann die ganzen Ausgeben.
Hier mein Quellcode:
if(Spieler.Anz_Player>1) { this.Ausgabe_Player1.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler1.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[0]+".bmp")) as Image; this.Ausgabe_Player1.Text = ""; this.Ausgabe_Player2.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler2.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[1]+".bmp")) as Image; this.Ausgabe_Player2.Text = ""; } if(Spieler.Anz_Player>2) { this.Ausgabe_Player3.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler3.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[2]+".bmp")) as Image; this.Ausgabe_Player3.Text = ""; } if(Spieler.Anz_Player>3) { this.Ausgabe_Player4.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler4.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[3]+".bmp")) as Image; this.Ausgabe_Player4.Text = ""; } if(Spieler.Anz_Player>4) { this.Ausgabe_Player5.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler5.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[4]+".bmp")) as Image; this.Ausgabe_Player5.Text = ""; } if(Spieler.Anz_Player>5) { this.Ausgabe_Player6.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler6.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[5]+".bmp")) as Image; this.Ausgabe_Player6.Text = ""; }
Doch wieso arbeitet er nich eines nach dem anderen ab??
Wie kann ich es anders machen, dass es so geschiet, wie ich es will?
-
Wiso er nicht eines nach dem anderen abarbeitet? Ich glaube wenn Du ein Anfänger bist, hast Du noch nicht verstanden wie Deine IF's hier wirken.
Wenn Du kein Anfänger bist, hast Du bestimmt nur mal kurz Tomaten auf Deine Augen oder einen kurzen Hänger. Bitte versteh mich nicht falsch. Ich will Dich nicht kränken, mir gehts ja manchmal selbst so!!!
Man hat eben manchmal eine kreativen Durchhänger.
Entweder Du machst aus Deine IF's, das hier
if(Spieler.Anz_Player<1) { this.Ausgabe_Player1.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler1.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[0]+".bmp")) as Image; this.Ausgabe_Player1.Text = ""; this.Ausgabe_Player2.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler2.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[1]+".bmp")) as Image; this.Ausgabe_Player2.Text = ""; } if(Spieler.Anz_Player<2) { this.Ausgabe_Player3.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler3.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[2]+".bmp")) as Image; this.Ausgabe_Player3.Text = ""; } if(Spieler.Anz_Player<3) { this.Ausgabe_Player4.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler4.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[3]+".bmp")) as Image; this.Ausgabe_Player4.Text = ""; } if(Spieler.Anz_Player<4) { this.Ausgabe_Player5.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler5.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[4]+".bmp")) as Image; this.Ausgabe_Player5.Text = ""; } if(Spieler.Anz_Player<5) { this.Ausgabe_Player6.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler6.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[5]+".bmp")) as Image; this.Ausgabe_Player6.Text = ""; }
na is nur ein kleiner Unterschied, der Dir aber auffallen sollte!
Nur das Relationsteichen drehen in der Bedingung!
Ich würde es aber anders lösen das macht die Sach eindeutiger
siehe... müsstest dabei aber ein bisschen Code anpassen.
Ich kene ja nicht den kompletten Programmhintergrund und welche Datentypen
Du bevorzugt verwenden willst!!!!
Ich denke aber Du weisst worauf ich hinauswill nur ein kleiner Denkanstoss.for(int i = 0; i < Spieler.Anz_Player;i++) { this.Ausgabe_Player[i].Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler[i].Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[i]+".bmp")) as Image; }
Ich hoffe das ich Dir helfen konnte?!
mfg sclearscreen
-
Ähm nein, du hast mich nicht verstanden glaube ich :).
Wenn die Spieleranzahl 6 ist, sollen schon alle bedingungen erfüllt werden ;).
Das Problem was ich habe ist, dass erst der komplette Sound von allen 6 Spielern abgespielt wird, und dann die Ausgaben von allen 6 Spielern. Sprich meine If - Bedingungen sind durchaus korrekt ;). Das Problem - was ich habe - ist, dass ich zeitweise noch nicht Objektorientiert denke ;).
Ich möchte aber, dass immer Sound - Ausgabe, jedes einzelnen Spielers, sich abwechseln.
Deinen untere Denkanstoss hatte ich vorher auch, bekam aber probleme, als ich
this.würfel
dynamisch abhandeln wollte.
MFG Lyrix
-
Wie machst du n deine Ausgaben? Per DirectX oder GDI bzw. mit WindowsControls? Bei letzteren beiden müsstest du noch die .Update()-Methoden einfügen und bei DX einfach zwischendurch n Frame rendern.
Aber lass dir bitte vorher noch eins durch n Kopf gehen: Wenn du die Spieler in einem Array verwaltest hast du VIIIIELL (!) weniger Arbeit
Greetz :xmas1:
-
naja die Spieler verwalte ich durch mehrere Klassen:
public class Spieler { // Wieviel Player (Computer, LAN-Inet-Player, Player insgesamt) nehmen teil? public static int Anz_Player=0; public static int Anz_Com_Player=0; public static int Ant_MehrSpiel_Player=1; }
Hier wird nur abgespeichert, wieviele Spieler es sind (Com, Multiplayer).
public class Player1 { public static string Name_Player_1=""; public static string Farbe_Player_1=""; public static string Volk_Player_1=""; public static int Punkte_Player_1=0; public static int Team_Player_1 = 0; public static int Anz_Züge_Player_1=10; }
Hier werden dann jeweils die Spieler - Eigenschaften verwaltet. Is mit statischen Variablen einfacher, weil ich die in so vielen Klassen brauche, dass es, wenn ichs immer übergeben müsste viel zu aufwändig wäre.
Die Ausgabe mache ich per GDI+(bzw Windows Forms halt). Nur was meinst du mit .update();? Ich abdate ja in dem sinn die Pictureboxes nich, sondern ich gebe ihnen ja nur ein .Image!
Kannst du mal schreiben wie ich das mit einer Update Funktion machen koennte?
MFG
Lyrix
-
Dennoch überleg dir das mit dem Array noch mal - du ersparst dir endlose Schreibarbeit und der Code wird nicht so im Kiddy-Style
Wenn du an der PictureBox bzw. irgendeinem anderen Control etwas veränderst und sofort den Effekt sehen möchtest musst du noch die Refresh()-Methode des Controls aufrufen. (Update sollte auch gehen, funktioniert aber net immer)
Greetz :xmas1:
-
Sprich ich muss es so machen:
this.Ausgabe_Player1.Text = "würfelt..."; PlaySound("Würfeln.wav", 0, 0); this.WürfelSpieler1.Image = new Bitmap(assembly.GetManifestResourceStream("Risiko.Grafiks.Würfel"+Zufall[0]+".bmp")) as Image; this.WürfelSpieler1.Refresh(); this.Ausgabe_Player1.Text = ""; this.Ausgabe_Player1.Refresh();
Oder?
-
Was hälst du von der Idee s einfach mal zu testen?
Kann sein, dass du das Refresh auch noch für die Statics aufrufen musst. Weiß nicht genau. In dem Fall geht Probieren über Studieren ^^
Greetz :xmas1:
-
Ok dennoch danke dir.
Sry hatte grad keine Chance es zu testen, hät ja sein koennen, das du es auswendig weisst
Aber nochmals danke dir. :xmas1: