Entwickler-Ecke
C# - Die Sprache - 2D Shooter
king0180 - Di 14.02.12 20:59
Titel: 2D Shooter
[highlight]Hi Leute, ich schon wieder.
DIesmal habe ich einen 2D Shooter im Gepäck, bei dem mir folgendes Problem zu Tage fiel.
Kurze Beschreibung:
Also, der Shooter ist ganz simpel aufgebaut, es sind drei PicBoxen die zufällig gleichzeitig irgendwo auf der Form auftauchen.
Jetzt ist es so das ich gerne Einschusslöcher hätte, eines habe ich das nach einer gewissen Zeit durch nen Timer verschwindet.
Jetzt das große ABER, wenn ich dann nochmal auf die Form klicke ist das Einschussloch auch wieder weg und taucht bei der neu Position wieder auf, ich möchte aber das es dort (beim ersten Klick) eine gewisse Zeit stehhen bleibt, dass ich ja mit einem Timer problemlos realisieren kann.
Meine Idee war mehre Einschusslöcher, also wie kann ich das am besten machen.
Ich dachte an eine If Abfrage.
Helft mir bitte.
Hier mal der Source code vielleiciht hilfts ja was und danke im vorraus.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| private void Form2_MouseDown(object sender, MouseEventArgs e) { myPlayer1.SoundLocation = @"C:\Users\Semi\Desktop\Bilder Schooter und sounds\44MAG.WAV"; myPlayer1.Play(); count2--; label4.Text = count2.ToString(); bool flag = true; this.einschussloch.Left = e.X; this.einschussloch.Top = e.Y; this.einschussloch1.Left = e.X; this.einschussloch1.Top = e.Y; this.einschussloch2.Left = e.X; this.einschussloch2.Top = e.Y;
for (int i = 0; i == count2; i++) { if (count2 == 0) { flag = true; myPlayer2.SoundLocation = @"C:\Users\Semi\Desktop\Bilder Schooter und sounds\fail-trombone-01.wav"; myPlayer2.Play(); MessageBox.Show("Keine Munition mehr."); this.Close(); break; }
else { flag = false; } } einschussloch1.Location = einschussloch.Location;
if (einschussloch.Location != einschussloch1.Location) { einschussloch2.Visible = true; } else { einschussloch.Visible = true; } } |
Mitmischer 1703 - Di 14.02.12 22:05
Du müsstest deine Einschusslöcher in einem Array speichern. Du könntest dir eine Klasse hole definieren, die eine Eigenschaft timeElapsed besitzt. timeElapsed zählst du im Timer entsprechend runter (Achtung, der Timer ist nicht genau, aber wenn du ein wenig mit System.Environment.TickCount rumspielst, fällt dir da sicherlich was ein), und am Ende jedes Timerlaufs entfernst du alle Löcher aus dem Array, die lang genug angezeigt wurden.
king0180 - Mi 15.02.12 11:14
Danke, ich habe es dann doch mit
Else If gemacht schuat dann so aus: ;-)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| if (einschussloch.Visible == false) { this.einschussloch.Left = MousePosition.X; this.einschussloch.Top = MousePosition.Y; einschussloch.Visible = true;
} else if (einschussloch1.Visible == false) { this.einschussloch1.Left = MousePosition.X; this.einschussloch1.Top = MousePosition.Y; einschussloch1.Visible = true; } else if (einschussloch2.Visible == false) { this.einschussloch2.Left = MousePosition.X; this.einschussloch2.Top = MousePosition.Y; einschussloch2.Visible = true; } else if (einschussloch3.Visible == false) { this.einschussloch3.Left = MousePosition.X; this.einschussloch3.Top = MousePosition.Y; einschussloch3.Visible = true; } |
Th69 - Mi 15.02.12 11:25
Und genau dafür wurden Arrays erfunden...
king0180 - Mi 15.02.12 22:00
Das wichtige dabei ist sie zu beherrschen, aber das muss ich noch lernen. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!