Autor Beitrag
king0180
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 14.02.12 20:59 
[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.

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: 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.

_________________
Die Lösung ist nicht siebzehn.

Für diesen Beitrag haben gedankt: king0180
king0180 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 15.02.12 11:14 
Danke, ich habe es dann doch mit Else If gemacht schuat dann so aus: ;-)


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 15.02.12 11:25 
Und genau dafür wurden Arrays erfunden...

Für diesen Beitrag haben gedankt: king0180
king0180 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 15.02.12 22:00 
Das wichtige dabei ist sie zu beherrschen, aber das muss ich noch lernen. ;-)