AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Memory-Spiel: Ideen

Ein Thema von XardasLP · begonnen am 14. Jan 2016 · letzter Beitrag vom 6. Apr 2016
Antwort Antwort
Seite 6 von 13   « Erste     456 78     Letzte » 
XardasLP
(Gast)

n/a Beiträge
 
#51

AW: Memory-Spiel: Ideen

  Alt 27. Jan 2016, 21:26
Zitat:
Schieb doch erstmal alle Gedanken an Klassen, Panels , Images etc. zur Seite und überlege Dir, was so ein Spiel ausmacht, was man dazu braucht und wie man das generell umsetzen könnte. Z.B. muss man ja 2 Karten irgendwie als zusammengehörig kennzeichnen. Erst nach dieser Grobskizzierung kann man dann ins Detail gehen.
Man kann es auch mit festen Positionen machen und den Zufall weglassen. Dann kann man das auch alles mit if then Anweisungen lösen. Was natürlich viel Quelltext ist, aber das beherrsche ich wenigstens

Zitat:
öHm. Was ist jetzt an deiner Unit2 prinzipielle anders als bei meinen Units/Klassen?
Mit Klassen arbeiten war noch nie so meins, vor allem weil unsere Beispiele halt so sind das man sie locker auch ohne eine einzige Klasse lösen kann.
Klar ist die Klasse von Vorteil wenn es dann um bei dem Beispiel evtl. 10 vorhandene Darlehen geht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Memory-Spiel: Ideen

  Alt 27. Jan 2016, 21:35
Was ich eigentlich meinte: unterteile Dein Projekt erst einmal in kleine Teilprobleme. Diese Teilprobleme unterteilst Du wieder in noch kleinere Teilprobleme. Das Ganze wiederholst Du so lange, bis eine weitere Unterteilung keinen Sinn mehr macht. Das alles aber nicht am Computer, sondern ganz antiquiert mit einem Blatt Papier und einem Stift. Diese zig Teilprobleme sollten nun so übersichtlich sein, dass sie sich relativ leicht in Code formulieren lassen. Ob Du das nun mit Klassen löst oder lieber vorwiegend prozedural, bleibt Dir überlassen.
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
XardasLP
(Gast)

n/a Beiträge
 
#53

AW: Memory-Spiel: Ideen

  Alt 27. Jan 2016, 21:42
Ja das ist schon mal eine gute Idee ^^

Wir sollen alles machen was wir können. Also einfach da ich ja YT mache ist es kein Problem ein Intro zu gestalten. Oder das man bei der Form die Hintergrundfarben ändern kann. Schriftgrößen, Positionen, Hilfen usw.
solche Mini Verbesserungen machen dann höhere Punktzahlen aus.

Es gab einen der hat 3D Snake gemacht, also in Delphi eine 3D Engine eingebunden und so
Naja jedenfalls wusste der Lehrer auch nicht wie sowas geht und hat nur dumm in den Projekten rumgeklickt. Und dann erlaubt der sich am Ende noch Noten zu vergeben. Frechheit.!

Geändert von XardasLP (27. Jan 2016 um 21:47 Uhr)
  Mit Zitat antworten Zitat
XardasLP
(Gast)

n/a Beiträge
 
#54

AW: Memory-Spiel: Ideen

  Alt 30. Jan 2016, 22:00
Hi, also ich will das ja ohne Klassen machen...

Zwei gleiche Karten aufgedeckt geht schon mal.

Delphi-Quellcode:
procedure TFormSpiel.Image1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1.jpg');
  B1_Gefunden := 1;
  showmessage('B1_Gefunden ist ' + inttostr(b1_Gefunden));
    if (B1_Gefunden = 1) and (B1_1_Gefunden = 1) then
      begin
      Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg');
      Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg');
      end;
end;
Delphi-Quellcode:
procedure TFormSpiel.Image1_1Click(Sender: TObject);
begin
  Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1.jpg');
  B1_1_Gefunden := 1;
    if (B1_1_Gefunden = 1) and (B1_Gefunden = 1) then
    begin
    Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg');
    Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg');
    end
end;
Sieht dann so aus:
https://gyazo.com/d537210bc75f975bf06e68f0d8d9c79a

_________________

Wenn zwei Karten nicht gleich sind erkennt er das auch.
Nun will ich aber, dass er dann trz. 2 Sekunden die Karten offen hält, damit man sich diese merken kann.

Delphi-Quellcode:
procedure TFormSpiel.Image2Click(Sender: TObject);
begin
  Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2.jpg');
  showmessage('B1_Gefunden ist ' + inttostr(B1_Gefunden));
showmessage('B1_1_Gefunden ist ' + inttostr(B1_1_Gefunden));
  showmessage(inttostr(b2_1_Gefunden));
    if (B1_Gefunden = 0) and (B1_1_Gefunden = 0) or (B2_1_Gefunden = 0) then
      begin
         Timer1.Enabled := True;
    {    showmessage('NEW B1_Gefunden ist ' + inttostr(B1_Gefunden));
        showmessage('NEW B1_1_Gefunden ist ' + inttostr(B1_1_Gefunden));
        B1_NichtGefunden := 1;
          showmessage('2x NEW B1_NichtGefunden ist ' + inttostr(B1_NichtGefunden));
        B1_1_NichtGefunden := 1;
        showmessage('2x NEW B1_NichtGefunden ist ' + inttostr(B1_1_NichtGefunden));
        if (B1_NichtGefunden = 1) and (B1_1_NichtGefunden = 1) then
         begin }

                Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
                Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
                Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
               end
               else
             begin
      // showmessage(inttostr(B2_1_Gefunden));
             B2_Gefunden := 2;
     // showmessage(inttostr(B2_Gefunden));
           if (B2_Gefunden = 2) and (B2_1_Gefunden = 2) then begin
            Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2A.jpg');
            Image2_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2A.jpg');
            end
{  Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2.jpg');
  B2 := 2;
  B1 := 0;
showmessage(inttostr(b1));
    if (B1 = 0) then
    begin Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
    Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
    end
    else
    begin
      showmessage('B2_1 ist ' + inttostr(b2_1));
      end }

   end;
   end;
Was stimmt am Timer nicht?
Delphi-Quellcode:
procedure TFormSpiel.Timer1Timer(Sender: TObject);
var i, a: integer;
begin
  if (Timer1.Enabled = True) then
    begin
      i := 0;
        for i := 1000 to 5000 do begin
          a := i + 1000;
        end;
          showmessage(inttostr(a));
          if (a = 5000) then
            begin
            Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
            end
            else
              Timer1.Enabled := False;
              if (Timer1.Enabled = False) then showmessage('Zu');
    end;
end;

Ich frage euch, weil ich sonst meist lange vor dem Quelltext hocke und mehr ausprobiere bis es geht. Versuche Fehler mit (showmessage)'s einzuschränken, aber denke mal das ihr ihn schnell findet.

Und das (https://gyazo.com/ad61c7687ad9dca6f631ea95eec56bda) muss dann auch noch mit einer Sache vermieden werden, entweder es ist auch eine Zeitspanne dazwischen oder die Img. Dateien zerstören sich nach 2 Sekunden. Mal sehen

Geändert von XardasLP (30. Jan 2016 um 22:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#55

AW: Memory-Spiel: Ideen

  Alt 31. Jan 2016, 09:24
hallo,

ich hab mal versucht deinen Timer-Code zu verstehen:

Delphi-Quellcode:
procedure TFormSpiel.Timer1Timer(Sender: TObject);
var i, a: integer;
begin
  if (Timer1.Enabled = True) then //Muss du abfragen ob der Timer.enabled ist? Wenn er nicht enabled wäre, würde das programm hier doch gar nicht hinkommen; Die Diskussion ob es besser wäre, zu schreiben : 'If Timer1.enabled then begin', spar ich mir hier
    begin
      i := 0; //Die Schleifenvariabel vorher auf null zu setzen, macht keinen Sinn!!!
        for i := 1000 to 5000 do begin //Du setzt i hier doch sowieso auf 1000
          a := i + 1000; // Ich zähle für i von 1000 bis 5000 und a ist gleich i+ 1000????Sinnvoll?
        end;
          showmessage(inttostr(a));//Der Wert wird hier wohl immer gleich 6000 sein
          if (a = 5000) then //Wenn a=5000 (also i=4000) dann wird die Rückseite geladen, da a aber nach der Schleife immer 6000 ist, wird die Rückseite wohl nicht geladen
            begin
            Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg');
            end
            else //Ansonsten wird der Timer disabled; da nur der Else-Block erreicht wird, wird der Timer disabled aber die Rückseite wurde nicht geladen
              Timer1.Enabled := False;
              if (Timer1.Enabled = False) then showmessage('Zu');
    end;
end;
Wenn du mich jetzt fragst, wie man's besser machen sollte:

Ich würde es komplett anders programmieren.

mfg
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#56

AW: Memory-Spiel: Ideen

  Alt 31. Jan 2016, 10:14
Was stimmt am Timer nicht?
Da ich nicht weiß, sondern nur vermute, was Du erreichen willst: das weiß ich nicht!

Ein Timer "feuert" wenn die voreingestellte Zeit abgelaufen ist. Für Dich könnte das heißen, das Dein Programm eine Karte aufdeckt, den Timer einstellt und dann nichts mehr tut. Wenn der Timer "feuert" wird die Karte wieder verdeckt und das Programm läuft weiter.

Übrigens solltest Du Dich vllt. einmal mit dem Programmablaufplan auseinander setzen. Der könnte recht hilfreich sein, zunächst einmal ein wenig Struktur in Dein Programm zu bringen.

Gruß
K-H

P.S.
Wenn der Timer "enabled" ist  if Timer1.Enabled then , dann feuert er nach der eingestellten Zeitspanne. Nach  Timer1.Enabled:=false; , tut sich da nichts mehr!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (31. Jan 2016 um 10:19 Uhr)
  Mit Zitat antworten Zitat
XardasLP
(Gast)

n/a Beiträge
 
#57

AW: Memory-Spiel: Ideen

  Alt 31. Jan 2016, 16:18
Zitat:
Wenn du mich jetzt fragst, wie man's besser machen sollte:

Ich würde es komplett anders programmieren.

mfg
Naja der Timer soll egal ob die Karten zueinander passen oder nicht.
Also Ob Karte 1 und Karte 1 oder Karte 1 und Karte 2 die Image-Datei, in der es aufgedeckt ist 2 Sekunden offen halten.
  Mit Zitat antworten Zitat
XardasLP
(Gast)

n/a Beiträge
 
#58

AW: Memory-Spiel: Ideen

  Alt 31. Jan 2016, 16:19
Zitat:
Übrigens solltest Du Dich vllt. einmal mit dem Programmablaufplan auseinander setzen. Der könnte recht hilfreich sein, zunächst einmal ein wenig Struktur in Dein Programm zu bringen.
Struktogramme, ne danke
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#59

AW: Memory-Spiel: Ideen

  Alt 4. Feb 2016, 11:52
Struktogramme, ne danke
Genau besser nix lernen und einfach mal mit Copy&Paste für jedes Image per Doppelklick eine Procedure erzeugen.

Und natürlich immer den coolen langen Pfad mit übernehmen.

Selbstverständlich den Dateinamen Fix vorgeben... Will man ja sowieso nicht ändern.

Arrays sind sowieso schlecht... Genau wie Klassen.

Wenn Du hier Fragen stellst, warum liest Du den nicht die Antworten und befolgst die Empfehlungen?
  Mit Zitat antworten Zitat
XardasLP
(Gast)

n/a Beiträge
 
#60

AW: Memory-Spiel: Ideen

  Alt 4. Feb 2016, 23:09
Zitat:
Genau besser nix lernen und einfach mal mit Copy&Paste für jedes Image per Doppelklick eine Procedure erzeugen.

Und natürlich immer den coolen langen Pfad mit übernehmen.

Selbstverständlich den Dateinamen Fix vorgeben... Will man ja sowieso nicht ändern.

Arrays sind sowieso schlecht... Genau wie Klassen.

Wenn Du hier Fragen stellst, warum liest Du den nicht die Antworten und befolgst die Empfehlungen?


Haben bisher nur einmal mit Arrays gearbeitet.
Für eine Person reicht es aus, wenn das Spielfeld sich nicht zufällig gestaltet sondern ich 10 Formen vorgebe von der eine zufällig aufgerufen wird.

Klassen sind nicht schlecht, nur ist es bei mir so das ich nur schlechte Punktzahlen durch diese Klassen bekommen habe, weil ich diese nicht verstehe umzusetzen

Meinen Timer habe ich z.B. überarbeitet. Ich passe mich auch nur an alle anderen im Jahrgang an, da zeichnet auch keiner ein Struktogramm.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:11 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