Autor Beitrag
navigator
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 26.03.09 20:25 
Hallo,

hab für die Schule ein Schere Strein Papier programmiert. Jetzt hab ich noch einen zweispielermodus hinzugefügt diese funktioniert allerdings nich einwandfrei! Spieler 1 soll mit y,x oder c Schere Stein oder Papier auswählen! Spieler 2 mit 1,2 oder 3 Schere, Stein oder Papier auswählen! Bei Spieler 1 ist y die Schere x der Stein und c das Papier jedoch nimmt er immer nur das y an egal was ich drücke! bei spieler 2 wird mit 1 die schere mit 2 der Stein und mir 3 das Paier ausgewählt , was auch einwandfrei funktioniert! Ich würde mich freuen wenn mir jemand helfen könnte oder einen neuen Lösungsansatz gegen? wäre sehr nett von euch!
ausblenden volle Höhe Delphi-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:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
procedure TForm4.Button2KeyPress(Sender: TObject; var Key: Char);
begin

if key = 'y' then begin
end;
    if key='1' then begin
    label12.caption:='unentschieden. Nochmal';
    image20.Visible:=true;  //Schere Spieler 1
    image21.Visible:=false; //Stein Spieler 1
    image22.Visible:=false; //Papier Spieler 1
    image23.Visible:=true;  //Schere Spieler 2
    image24.Visible:=false; //Stein Spieler 2
    image25.Visible:=false; //Papier Spieler 2
    end;

    if key='2' then begin
    label12.caption:='Spieler2 gewinnt. Stein schlägt Schere';
    image20.Visible:=true;  //Schere Spieler 1
    image21.Visible:=false; //Stein Spieler 1
    image22.Visible:=false; //Papier Spieler 1
    image23.Visible:=false; //Schere Spieler 2
    image24.Visible:=true;  //Stein Spieler 2
    image25.Visible:=false; //Papier Spieler 2
    end;

    if key='3' then begin
    label12.caption:='Spieler1 gewinnt. Schere schneidet Papier';
    image20.Visible:=true;  //Schere Spieler 1
    image21.Visible:=false; //Stein Spieler 1
    image22.Visible:=false; //Papier Spieler 1
    image23.Visible:=false; //Schere Spieler 2
    image24.Visible:=false; //Stein Spieler 2
    image25.Visible:=true;  //Papier Spieler 2
    end;

if key = 'x' then begin
end;
    if key='1' then begin
    label12.caption:='Spieler1 gewinnt. Stein schlägt Schere';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=true;   //Stein Spieler 1
    image22.Visible:=false;  //Papier Spieler 1
    image23.Visible:=true;   //Schere Spieler 2
    image24.Visible:=false;  //Stein Spieler 2
    image25.Visible:=true;   //Papier Spieler 2
    end;

    if key='2' then begin
    label12.caption:='unentschieden. Nochmal';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=true;   //Stein Spieler 1
    image22.Visible:=false;  //Papier Spieler 1
    image23.Visible:=false;  //Schere Spieler 2
    image24.Visible:=true;   //Stein Spieler 2
    image25.Visible:=false;  //Papier Spieler 2
    end;

    if key='3' then begin
    label12.caption:='Spieler2 gewinnt. Papier umwickelt Stein';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=true;   //Stein Spieler 1
    image22.Visible:=false;  //Papier Spieler 1
    image23.Visible:=false;  //Schere Spieler 2
    image24.Visible:=false;  //Stein Spieler 2
    image25.Visible:=true;   //Papier Spieler 2
    end;

if key = 'c' then begin
end;
    if key='1' then begin
    label12.caption:='Spieler2 gewinnt. Schere schneidet Papier';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=false;  //Stein Spieler 1
    image22.Visible:=true;   //Papier Spieler 1
    image23.Visible:=true;   //Schere Spieler 2
    image24.Visible:=false;  //Stein Spieler 2
    image25.Visible:=false;  //Papier Spieler 2
    end;

    if key='2' then begin
    label12.caption:='Spieler1 gewinnt. Papier umwicklelt Stein';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=false;  //Stein Spieler 1
    image22.Visible:=true;   //Papier Spieler 1
    image23.Visible:=false;  //Schere Spieler 2
    image24.Visible:=true;   //Stein Spieler 2
    image25.Visible:=false;  //Papier Spieler 2
    end;

    if key='3' then begin
    label12.caption:='unentschieden. Nochmal';
    image20.Visible:=False;  //Schere Spieler 1
    image21.Visible:=false;  //Stein Spieler 1
    image22.Visible:=true;   //Papier Spieler 1
    image23.Visible:=false;  //Schere Spieler 2
    image24.Visible:=false;  //Stein Spieler 2
    image25.Visible:=true;   //Papier Spieler 2
    end; 


    end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 26.03.09 20:38 
Delphitags, bitte. :roll:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if key = 'y' then 
begin

end;


Was soll bitte hier passieren?! :P

Hast du auch Meldungen drinne, wie: Dein Gegner hat Papier gewählt, was nimmst du? :mrgreen:

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
navigator Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 26.03.09 20:54 
Ja das Problem ist das das y nicht mehr erkannt wird sobald das x definiert wird. dann wird das x nicht mehr erkannt sobald das c definiert ist.
Und ich weiß nicht genau wie ich das schreiben muss das es funktioniert.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 26.03.09 21:30 
user profile iconnavigator hat folgendes geschrieben Zum zitierten Posting springen:
Ja das Problem ist das das y nicht mehr erkannt wird sobald das x definiert wird. dann wird das x nicht mehr erkannt sobald das c definiert ist.
Und ich weiß nicht genau wie ich das schreiben muss das es funktioniert.
Die Spieler sollen exakt gleichzeitig drücken, was? Das funktioniert so natürlich nicht, da für jeden Tastendruck ein eigenes onPress aufgerufen wird, das heißt key kann nicht gleichzeitig 1 und y sein, statt dessen musst du bei Tastendruck in eine globale Variable speichern, welche Taste gedrückt wurde, und diesen Tastendruck dann mit dem nächsten Tastendruck vergleichen. Beispiel für einen Ablauf wäre:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Pseudocode:
Tastenereigniss: 2 wurde gedrückt.
2 ist eine Taste von spieler 2, also speichere in variable2.
in variable1 steht nichts (=schreib einen ungültigen wert rein wie 'g' oder so) also hat der erste spieler noch nicht gewählt.

Tastenereigniss: y wurde gedrückt.
y ist eine Taste von spieler 1, also speichere in variable1.
in variable2 steht schon was (gültiges), nämlich 2, also haben beide Spieler gewählt!
vergleiche die beiden gewählten Handzeichen und entscheide wer gewonnen hat, dann setze die variablen 1 und 2 wieder auf was ungültiges für die nächste Runde.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
navigator Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 26.03.09 21:36 
alles klar ich probiere das mal aus.
Schonmal danke