Autor Beitrag
mr.eddy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 06.01.08 19:11 
hallo leute

ich habe in der schule die aufgabe gekriegt das spiel vier gewinnt zu
programmieren bin aber noch nicht so gut in diesem fach und frage hier
ob mir vllt jemand helfen kann^^


Zuletzt bearbeitet von mr.eddy am So 06.01.08 19:30, insgesamt 2-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 06.01.08 19:16 
Hallo und :welcome:!

Vorweg: Ändere bitte den Titel Deines Threads, sodass er ein bisschen mehr über den Inhalt aussagt. Danke! :)

Nun zu Deinem Problem: Komplette Hausaufgaben machen wir Dir hier nicht, aber wir helfen Dir sehr gerne dabei, wenn Du irgendwo nicht weiterkommst. Wenn Du also mal schaust, wie weit Du kommst und Dich meldest, wenn es hakt, wirst Du hier sicherlich Hilfe finden. :-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 06.01.08 19:28 
joa mit dem anfang tue ich es mir noch schwerhabe daran gedacht das spielfeld mit 2 arrays zu erstellen weiß aber noch nicht so genau wie ich auf der oberflächer darstelle und wie ich beide verbinde ^^"
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 06.01.08 20:02 
Für das Spielfeld nimmst du am besten ein zwei-dimensionales Array. Für die Felder auf dem Spielfeld würde ich einen Aufzählungstypen deklarieren, der dafür geeignet ist. Z.B:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public enum Feld
{
    Free,    // Feld ist noch frei
    Player1, // Feld ist besetzt von Spieler 1
    Player2  // Feld ist besetzt von Spieler 2
}

Dann kannst du das Spielfeld als Feld[,] spielfeld deklarieren.
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 06.01.08 20:18 
sieht gut und doch nen wenig kompleziert aus ^^
ich probiers mal
danke
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 06.01.08 22:47 
hmm ich hab mir eine oberfläche aus labels für die spielfläche erstellt und das array dafür in einer eigenen klasse
doch wie kann ich es bewerkstelligen das wenn ich ein label anklicke diese stelle im array auch den wert kriegt besonders ohne
das bei allen 42 labels einzeln zu machen???
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 09.01.08 18:34 
Hallo!

Du kannst allen Labels das gleiche Klick-Ereignis zuweisen. Der Sender-Parameter des Ereignisses verrät Dir, welches Label geklickt wurde. Danach kannst Du dann die entsprechende Stelle im Array setzen. Du kannst über die Tag-Eigenschaft eines jeden Labels (die Du frei belegen kannst, dafür ist sie da) den entsprechenden Index im Array speichern, dann ist das recht kurz und bündig zu lösen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: Sa 12.01.08 16:06 
oO ich blick da ehrlich gesagt nicht so durch wie geht das genau allen labels den selben code anzufügen
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 12.01.08 16:31 
Also:
  1. Du kannst für das Click-Ereignis aller Labels ein und dieselbe Methode verwenden. Kannst Du dann so benutzen:
    ausblenden C#-Quelltext
    1:
    2:
    3:
    4:
    5:
    public void labels_Click(object sender, EventArgs e)
    {
      Label clickedLabel = (Label) sender;
      MessageBox.Show(clickedLabel.Text);
    }

  2. Du kannst bei jedem Label in der Tag-Eigenschaft eine beliebige Information hinterlegen, so zum Beispiel den Index im Array, zu dem das Label gehört:
    ausblenden C#-Quelltext
    1:
    2:
    int einIndex = 42;
    someLabel.Tag = einIndex;

    Die Tag-Eigenschaft kannst Du natürlich auch im Click-Ereignis auslesen, wie ich es oben mit der Text-Eigenschaft gemacht habe. Nur ein bisschen casten musst Du dann noch.
  3. Schonmal dran gedacht, die Labels auch in einem Array zu erstellen und nicht mit dem Form-Designer:
    ausblenden C#-Quelltext
    1:
    2:
    3:
    4:
    5:
    6:
    7:
    8:
    Label[] labels = new Label[42];
    for (int i = 0; i < labels.Length-1; i++)
    {
      labels[i] = new Label();
      labels[i].Parent = this;
      labels[i].Left = i*20;
      labels[i].Tag = i;
    }

    Hier habe ich schon den Index im Array in der Tag-Eigenschaft gespeichert, sodass Du im Click-Ereignis genau weißt, an welcher Stelle im Array das Label steht.


So, anhand dieser Code-Beispiele (die Du natürlich noch für Dich anpassen musst, es sind nur Beispiele) solltest Du weiter kommen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 14:59 
hmm ich häng noch einen schritt zurück
ich hab erstmal das spielfeld mit labels erstellen lassen
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:
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 1;
            int y = 1;

            for (int i1 = 0; i1 < 7; i1++)
            {
                for (int i2 = i2; i2 < 6; o++)
                {

                    Label mylabel = new Label();
                    mylabel.BackColor = Color.Black;
                    mylabel.Size = new Size(2020);
                    mylabel.Location = new Point(x, y);
                    this.Controls.Add(mylabel);
                    y = y + 30;
                }
                y = 1;
                x = x + 30;  
            }
          
        }

doch weiß ich derzeit nicht wie ich das event click hinzufügen kann?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.01.08 15:48 
Mit dem "+="-Operator und einer passenden Methode:
ausblenden C#-Quelltext
1:
myLabel.Click += deineKlickMethode;					

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 17:10 
geht es genauer?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.01.08 17:13 
Du musst doch nur noch eine Click-Methode für das Label anlegen. :nixweiss:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 17:17 
xD ja aber wie? kannst du mir nicht den quellcode davon zeigen ?^^
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.01.08 17:20 
Nö, musst schon noch selber was machen.

Du weißt, wie man Methoden anlegt und wie die Click-Methode aussehen muss, ist entweder aus der Doku zu erfahren oder Du lässt Dir von der IDE einfach mal eine anlegen. "Eigeninitiative" heißt hier das Stichwort :mahn:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 17:26 
:eyes: ich habs ja versucht ...

hab zwar einiges gefunden wie z.B. msdn2.microsoft.com/...on.click(VS.80).aspx
aber wurd ich daraus nicht schlau xD deswegen frag ich hier ja nach :gruebel:
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.01.08 17:34 
Guck Dir doch bitte nur mal den Link an. Da steht was von Office und Word drin, das kann wohl kaum das sein, was Du suchst :roll:

Du könntest aber einfach nochmal ganz in Ruhe meine Beiträge hier durchlesen, da versteckt sich auch eine Click-Methode für Labels drin. :les:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 17:52 
ich muss ja einmal innerhalb der for-schleife ein click-ereigniss eintragen und dann zusätzlich eine methode erstellen
nachdem ich mir anguckte wie der formdesigner dieses ereigniss einfügt :
ausblenden C#-Quelltext
1:
this.label1.Click += new System.EventHandler(this.label1_Click);					

hab ich es mal so probiert mylabel.Click += new EventHandler(...);
doch hab ich kleinen plan was in die klammer kommt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 13.01.08 17:56 
Die von mir mehrmals erwähnt Methode fürs Click-Ereignis ...

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mr.eddy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23



BeitragVerfasst: So 13.01.08 18:09 
ahhh xD ich habs

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
mylabel.Click += new EventHandler(labels_Click);
...
        public void labels_Click(object sender, EventArgs e)
        {
            Label clickedLabel = (Label)sender;
                if (status == 1) { clickedLabel.BackColor = Color.Red; }
                   else clickedLabel.BackColor = Color.Blue; ;
                   if (status == 1) { status = 2; }
                   else status = 1;


vielen dank
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.