AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Schulprojekt -> Memory Spiel ... wie 'aufgedeckt lassen'?
Thema durchsuchen
Ansicht
Themen-Optionen

Schulprojekt -> Memory Spiel ... wie 'aufgedeckt lassen'?

Offene Frage von "Katho"
Ein Thema von Katho · begonnen am 29. Jun 2009 · letzter Beitrag vom 29. Jun 2009
Antwort Antwort
Seite 2 von 2     12   
Katho

Registriert seit: 29. Jun 2009
Ort: Oberösterreich
7 Beiträge
 
Delphi 5 Standard
 
#11

Re: Schulprojekt -> Memory Spiel

  Alt 29. Jun 2009, 18:25
ja, das war schon klar

habs jetzt so drinstehn:


Delphi-Quellcode:
randomize;

for lauf := 1 to 16 do
  begin
  zufall := random(15)+1;
    while karte[zufall] > 0 do
    zufall := random(15)+1;
  karte[zufall] := lauf;
end;
das problem das jetzt da ist, ist das er sich immer aufhängt wenn ich es starten will.
ich muss dann das programm immer zurücksetzen...
weis einer woran das liegen könnte? es sieht irgendwie so aus als ob er in ner endlosschleife wäre, aber das kann doch eigtl nicht sein, oder?
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Schulprojekt -> Memory Spiel

  Alt 29. Jun 2009, 18:38
Das Problem ist jetzt wohl, das er bei Random nicht so schnell an jede der 16 Zahlen rankommt. Und so entsteht eine sehr lange Schleife
  Mit Zitat antworten Zitat
Katho

Registriert seit: 29. Jun 2009
Ort: Oberösterreich
7 Beiträge
 
Delphi 5 Standard
 
#13

Re: Schulprojekt -> Memory Spiel

  Alt 29. Jun 2009, 18:42
hab es gerade nochmal probiert, jetzt funktioniert es *lol*
es lag einfach daran, weil ich vorhin random(15)+1 hatte^^ das sind ja nur 15 zahlen, er brauchte aber 16 verschiedene xD

jaja...es sind immer die banalsten fehler^^



edit:

bis jetzt funktioniert schon alles
nur hab ich noch eine eher allgemeinere Frage:

Gibt es eine Anweisung, mit der man einen Button in den Hintergrund verschieben kann?
(bzw. ein Panel in den Vordergrund )
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Schulprojekt -> Memory Spiel ... Button in Hintergrun

  Alt 29. Jun 2009, 20:00
Schau mal in der Hilfe nach BringToFront bzw. SendToBack (oder ggf. einfach Visible umstellen).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Katho

Registriert seit: 29. Jun 2009
Ort: Oberösterreich
7 Beiträge
 
Delphi 5 Standard
 
#15

Re: Schulprojekt -> Memory Spiel ... Button in Hintergrun

  Alt 29. Jun 2009, 20:15
Danke =) sowas wie sendtoback hab ich gesucht =) weil google hat mit 'in den hintergrund' nicht wirklich was richtiges gefunden xD

(visible hab ich schon anders verplant )


edit - fehler gelöst (man sollte halt auch das label dann aktualisieren xD)


Neue frage

das ist jetzt der vollständige Code.
Hat irgendwer einen Vorschlag, wie es ginge, das bei den gefundenen Pärchen die buttons dann im Hintergrund sind?
Den 2. button der aufgedeckt ist kann ich leicht in den Hintergrund machen, aber wie finde ich den 1. heraus? wieder alle durchgehen?

Delphi-Quellcode:
var
  Form1: TForm1;
  Karte: Array[1..16] of byte;
  versuche, richtig: integer;
  buttonklick, zahl1, zahl2, summe: byte;

implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
var
lauf: byte;
zufall: byte;
begin

Label5.caption := '';
Label6.caption := '';
versuche := 0;
richtig := 0;
buttonklick := 0;

Button1.Visible := true;
Button2.Visible := true;
Button3.Visible := true;
Button4.Visible := true;
Button5.Visible := true;
Button6.Visible := true;
Button7.Visible := true;
Button8.Visible := true;
Button9.Visible := true;
Button10.Visible := true;
Button11.Visible := true;
Button12.Visible := true;
Button13.Visible := true;
Button14.Visible := true;
Button15.Visible := true;
Button16.Visible := true;

karte[1] := 0;
karte[2] := 0;
karte[3] := 0;
karte[4] := 0;
karte[5] := 0;
karte[6] := 0;
karte[7] := 0;
karte[8] := 0;
karte[9] := 0;
karte[10] := 0;
karte[11] := 0;
karte[12] := 0;
karte[13] := 0;
karte[14] := 0;
karte[15] := 0;
karte[16] := 0;

randomize;

for lauf := 1 to 16 do
  begin
  zufall := random(16)+1;
    while karte[zufall] > 0 do
    zufall := random(16)+1;
  karte[zufall] := lauf;
end;

panel1.caption := inttostr(karte[1]);
panel2.caption := inttostr(karte[2]);
panel3.caption := inttostr(karte[3]);
panel4.caption := inttostr(karte[4]);
panel5.caption := inttostr(karte[5]);
panel6.caption := inttostr(karte[6]);
panel7.caption := inttostr(karte[7]);
panel8.caption := inttostr(karte[8]);
panel9.caption := inttostr(karte[9]);
panel10.caption := inttostr(karte[10]);
panel11.caption := inttostr(karte[11]);
panel12.caption := inttostr(karte[12]);
panel13.caption := inttostr(karte[13]);
panel14.caption := inttostr(karte[14]);
panel15.caption := inttostr(karte[15]);
panel16.caption := inttostr(karte[16]);


end;

procedure TForm1.Button17Click(Sender: TObject);
begin

Form1.FormCreate(Sender);

end;



procedure TForm1.Button18Click(Sender: TObject);
begin

Button1.Visible := true;
Button2.Visible := true;
Button3.Visible := true;
Button4.Visible := true;
Button5.Visible := true;
Button6.Visible := true;
Button7.Visible := true;
Button8.Visible := true;
Button9.Visible := true;
Button10.Visible := true;
Button11.Visible := true;
Button12.Visible := true;
Button13.Visible := true;
Button14.Visible := true;
Button15.Visible := true;
Button16.Visible := true;

inc(versuche);
Label5.Caption := inttostr(versuche);

buttonklick := 0;
label9.visible := false;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button1.visible := false;
  inc(buttonklick);
  zahl1 := karte[1];
  end
  else
    if buttonklick = 1 then
      begin
      button1.visible := false;
      inc(buttonklick);
      zahl2 := karte[1];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
        label9.visible := true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button2.visible := false;
  inc(buttonklick);
  zahl1 := karte[2];
  end
  else
    if buttonklick = 1 then
      begin
      button2.visible := false;
      inc(buttonklick);
      zahl2 := karte[2];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button3.visible := false;
  inc(buttonklick);
  zahl1 := karte[3];
  end
  else
    if buttonklick = 1 then
      begin
      button3.visible := false;
      inc(buttonklick);
      zahl2 := karte[3];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button4.visible := false;
  inc(buttonklick);
  zahl1 := karte[4];
  end
  else
    if buttonklick = 1 then
      begin
      button4.visible := false;
      inc(buttonklick);
      zahl2 := karte[4];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button5.visible := false;
  inc(buttonklick);
  zahl1 := karte[5];
  end
  else
    if buttonklick = 1 then
      begin
      button5.visible := false;
      inc(buttonklick);
      zahl2 := karte[5];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button6.visible := false;
  inc(buttonklick);
  zahl1 := karte[6];
  end
  else
    if buttonklick = 1 then
      begin
      button6.visible := false;
      inc(buttonklick);
      zahl2 := karte[6];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button7.visible := false;
  inc(buttonklick);
  zahl1 := karte[7];
  end
  else
    if buttonklick = 1 then
      begin
      button7.visible := false;
      inc(buttonklick);
      zahl2 := karte[7];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button8.visible := false;
  inc(buttonklick);
  zahl1 := karte[8];
  end
  else
    if buttonklick = 1 then
      begin
      button8.visible := false;
      inc(buttonklick);
      zahl2 := karte[8];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button9.visible := false;
  inc(buttonklick);
  zahl1 := karte[9];
  end
  else
    if buttonklick = 1 then
      begin
      button9.visible := false;
      inc(buttonklick);
      zahl2 := karte[9];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button10.visible := false;
  inc(buttonklick);
  zahl1 := karte[10];
  end
  else
    if buttonklick = 1 then
      begin
      button10.visible := false;
      inc(buttonklick);
      zahl2 := karte[10];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button11.visible := false;
  inc(buttonklick);
  zahl1 := karte[11];
  end
  else
    if buttonklick = 1 then
      begin
      button11.visible := false;
      inc(buttonklick);
      zahl2 := karte[11];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button12.visible := false;
  inc(buttonklick);
  zahl1 := karte[12];
  end
  else
    if buttonklick = 1 then
      begin
      button12.visible := false;
      inc(buttonklick);
      zahl2 := karte[12];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button13.visible := false;
  inc(buttonklick);
  zahl1 := karte[13];
  end
  else
    if buttonklick = 1 then
      begin
      button13.visible := false;
      inc(buttonklick);
      zahl2 := karte[13];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button14.visible := false;
  inc(buttonklick);
  zahl1 := karte[14];
  end
  else
    if buttonklick = 1 then
      begin
      button14.visible := false;
      inc(buttonklick);
      zahl2 := karte[14];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button15.visible := false;
  inc(buttonklick);
  zahl1 := karte[15];
  end
  else
    if buttonklick = 1 then
      begin
      button15.visible := false;
      inc(buttonklick);
      zahl2 := karte[15];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
label9.visible := false;
if buttonklick = 0 then
  begin
  button16.visible := false;
  inc(buttonklick);
  zahl1 := karte[16];
  end
  else
    if buttonklick = 1 then
      begin
      button16.visible := false;
      inc(buttonklick);
      zahl2 := karte[16];
      summe := zahl1 + zahl2;
      if summe = 17 then
        inc(richtig);
        label6.caption := inttostr(richtig);
      end
      else
       label9.visible := true;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Schulprojekt -> Memory Spiel ... wie 'aufgedeckt lass

  Alt 29. Jun 2009, 22:41
Ich würde sagen du packst das ganze falsch an. Ich habe auch mal so ein einfaches Memory-Spiel gemacht. Anzahl der Codezeilen: 286 Zeilen reine Programmlogik. Du bist jetzt schon bei über 500.

Desweiteren hast du da ziemlichen Spaghetticode, nutze die Möglichkeiten der OOP um das ganze etwas zu strukturieren. Es bietet sich hier an eine Klasse für das Spielfeld und eine Klasse für eine Karte zu entwerfen. UndWobei die Klasse für das Spielfeld als Container für die Karten dient und die Formularklasse als Schiedsrichter fungiert.

Ich habe das ganze mal angehangen. Das ganze ist Bestandteil meines Container-Klassen Tutorials: http://delphitutorials.michael-puff.de
Angehängte Dateien
Dateityp: zip luckiememory_480.zip (240,5 KB, 16x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz