AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Memory für "Anfänger"
Thema durchsuchen
Ansicht
Themen-Optionen

Memory für "Anfänger"

Ein Thema von Saul · begonnen am 27. Dez 2007 · letzter Beitrag vom 30. Dez 2007
Antwort Antwort
Seite 1 von 3  1 23      
Saul
(Gast)

n/a Beiträge
 
#1

Memory für "Anfänger"

  Alt 27. Dez 2007, 15:52
Hallo,
ich soll demnächst ein Memory-Spiel mit sechs Karten programmieren. Die Karten sollen als Image dargestellt werden. Dazu habe ich ein paar Hilfestellungen bekommen (Im Anhang). Aber irgenwie verwirrt mich das alles. So eine Aufgabenstellung für Anfänger finde ich persönlich ziemlich übertrieben...

Hier erstmal mein bisheriger Quellcode:
1. Bei dem Spiel muss ich zuerst die Karten festlegen
Code:
var
  Form1: TForm1;
  Bild0, Bild1, Bild2, Anzahl, zufall, Nummer, i, k: Integer;
  Bild: Array[0..2] of String;                                 //Bildernamen
  Platz: Array[0..5] of Integer;                               //Bildnummer
  Name0, Name1, Name2: String;                                 //Imagename für Deckblatt

procedure TForm1.FormCreate(Sender: TObject);
  begin
    // verdeckt
    Image1.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image2.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image3.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image4.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image5.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image6.Picture.LoadFromFile('Bilder/Deckblatt.bmp');

    // offen
    Bild[0]:= 'Bilder/Bild1.BMP';
    Bild[1]:= 'Bilder/Bild2.BMP';
    Bild[2]:= 'Bilder/Bild3.BMP';
...
2. Die Karten kontrollieren
Code:
...
    Platz[0]:= 0;
    Platz[1]:= 1;
    Platz[2]:= 2;
    Platz[3]:= 0;
    Platz[4]:= 1;
    Platz[5]:= 2;
end;
3. Die Karten mischen > "auslegen"
Code:
randomize;                                            // Zufallszahlengenerator aktivieren
  while Anzahl > 0 do               { Die Karten mischen }
  begin
    zufall := random(Anzahl)+1;        // eine Karte aus dem Stapel ziehen
    Nummer[Anzahl] := Platz[zufall]; // und auf letzten freien Platz auslegen
   for k := zufall to Anzahl-1 do        // restliche Karten einen Platz nach vorn
    begin
      Platz[k] := Platz[k+1];
    end;
    Anzahl := Anzahl - 1;        // Der Stapel ist nun kleiner geworden
  end;
4. Spielen (Gewünschte Karten umdrehen und danach auswerten [OK/Karten wieder umdrehen])



Komme ich nun zur Hilfestellungen:
  • Wie verwende ich z.B. den Image.Tag wie auf Seite 4 gefordert?
  • Was bedeutet das "i:= StrToInt(TImage(sender).Name[6]);"?
    "Name" ist doch überhaupt nicht definiert, sondern nur "Name1, Name2: String;" auf Seite 2

Gibt es auch eine einfachere verständlichere Variante oder könnt ihr es mir besser erklären, was die Hilfestellung mir sagen soll?
Gruß Saul
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 15:58
Guck dir mal mein Container-Klassen Tutorial an: http://www.michael-puff.de/Developer/Delphi/Tutorials/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 16:02
Zitat von Saul:
Was bedeutet das "i:= StrToInt(TImage(sender).Name[6]);"?
Deine Images werden so benannt sein: Image1,Image2,Image3,...
Name[6] liest also den sechsten Buchstaben des Namen aus, in diesem Falle die Ziffern. TImage(sender) verweist auf das Image, auf welches geklickt wird. StrToInt wandelt die Ziffer als Zeichen in eine gültige Zahl um. Letztendlich bekommt i also den Wert der Ziffer, welche das Image definiert.
Frank Dumont
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#4

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 16:18
Zitat von Luckie:
Guck dir mal mein Container-Klassen Tutorial an: http://www.michael-puff.de/Developer/Delphi/Tutorials/
Mit Listen sollen wir das denke ich nicht lösen. Aber trotzdem danke. Es sieht mir auch viel komplexer aus oder irre ich mich?

Zitat von rawsoul:
Zitat von Saul:
Was bedeutet das "i:= StrToInt(TImage(sender).Name[6]);"?
Deine Images werden so benannt sein: Image1,Image2,Image3,...
Name[6] liest also den sechsten Buchstaben des Namen aus, in diesem Falle die Ziffern. TImage(sender) verweist auf das Image, auf welches geklickt wird. StrToInt wandelt die Ziffer als Zeichen in eine gültige Zahl um. Letztendlich bekommt i also den Wert der Ziffer, welche das Image definiert.
Wie dumm von mir Da hätte ich ja nur mal in die Hilfe schauen müssen. Danke dir rawsoul
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#5

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 16:24
Wo ist eigentlich der Anhang mit der Aufgabe?
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
Benutzerbild von Luckie
Luckie

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

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 16:27
Zitat von Saul:
Zitat von Luckie:
Guck dir mal mein Container-Klassen Tutorial an: http://www.michael-puff.de/Developer/Delphi/Tutorials/
Mit Listen sollen wir das denke ich nicht lösen. Aber trotzdem danke. Es sieht mir auch viel komplexer aus oder irre ich mich?
Wie ihr das lösen sollt, weiß ich nicht. Aber es ist einfachher, wenn man es mal verstanden hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#7

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 16:53
Zitat von DeddyH:
Wo ist eigentlich der Anhang mit der Aufgabe?
oh sorry den hab ich vergessen
Angehängte Dateien
Dateityp: pdf memoryspiel_d_151.pdf (237,3 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 17:12
[OT]Wenn unsere Infolehrer nur mal solche Hinweise geben würden, läge der Durschnitt mit Sicherheit unter 3,4...[/OT]
Frank Dumont
  Mit Zitat antworten Zitat
Benutzerbild von PaddyL
PaddyL

Registriert seit: 23. Nov 2007
Ort: Lautertal
34 Beiträge
 
#9

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 17:25
Ich finde die Aufgabenstellung (=Lösung) eures Lehrers nicht besonders elegant. Das was er da nutzt sieht aus wie urlater Turbo-Pascal Code, der nach Delphi übertragen wurde. Ich meine, sicher könnte man sich bei so einem Mini-Projekt Klassen sparen, aber zumindest records (zur halbwegs komfortablen Handhabung der Daten) und etwas mehr flexibilität (zum Beispiel um mehr Karten einzubinden) sollte schon drin sein.

edit:
randomize; // Zufallszahlengenerator [b]aktivieren[/b] ist übrigens Schwachsinn. Er wird nicht aktiviert sondern nur initialisiert um sicher zu sein, dass neue Zufallszahlen gebildet werden und keine Wiederholung zum vorherigen Durchlauf vorkommt. Du kannst Random auch ohne Randomize; verwenden, ist aber Meist nicht zu empfehlen.
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Memory für "Anfänger"

  Alt 27. Dez 2007, 17:27
Zitat von rawsoul:
[OT]Wenn unsere Infolehrer nur mal solche Hinweise geben würden, läge der Durschnitt mit Sicherheit unter 3,4...[/OT]
Wenn mir ein Informatiklehrer solche hinweise geben würde, würde ich ihn fragen, wo er programmieren gelernt hat. Warum globale Variablen? Warum sind es keine privaten Felder der Klasse TForm? Um nur mal einen Punkt zu nennen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05:31 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