Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anfängerin muss (ähnliches wie) Frogger programmieren (https://www.delphipraxis.net/36407-anfaengerin-muss-aehnliches-wie-frogger-programmieren.html)

Sophia_X 19. Dez 2004 16:24


Anfängerin muss (ähnliches wie) Frogger programmieren
 
Hi Prgrammier-Freaks!

Habe ein großes Problem. Ich bin in der 11. Klasse und da ich in Info ziemlich schlecht stehe, hat mir der Info-Lehrer eine Chance gegeben, um meine Note zu verbessern. Ich soll in Delphi so etwas programmieren wie Frogger. Nur einfacherer! Da ich da überfragt bin, brauch ich unbedingt eure Hilfe!

Also es soll von der "Draufsicht" sein. Die "Figur" startet von unten, soll dann durch eine befahrene Strasse nach vorne gehen können und wenn es über die Straße ist, muss hat man gewonnen. Die Autos sollten nach Zufallsprinzip kommen.

Wie fang ich am besten an? Was brauche ich alles? Also 2 Button brauch ich schon einmal (für vor und zurück gehen), aber was brauche ich z.B. für die Landschaft (hier die Straße mit evtl. Wiese). So ein Image? Möchte den Hintergrund nämlich am besten mit Paint zeichnen.

Wäre euch total dankbar!

Gruß
Sophia

P.S. Hoffe, es ist die richtige Kategorie. Hier hat man ja so viel auswahl.

Phoenix 19. Dez 2004 16:26

Re: Brauche unbedingt hilfe!
 
Hi Sophia,

ändere bitte erstmal den Titel deines Beitrages auf etwas Aussagekräftiges (edit - und dann oben ändern). Hilfe braucht hier nämlich jeder.

Neutral General 19. Dez 2004 16:36

Re: Brauche unbedingt hilfe!
 
Also ein Image als Hintergrund ist schonmal ne gute Idee :mrgreen:
Aber wieso 2 Buttons zum vor und zurückgehen ? :gruebel:

PierreB 19. Dez 2004 16:38

Re: Brauche unbedingt hilfe!
 
mach das mit dem vor- und zurückgehen doch einfach mit den pfeiltasten !

Birzenbae 19. Dez 2004 16:39

Re: Brauche unbedingt hilfe!
 
Zitat:

Zitat von Neutral General
Aber wieso 2 Buttons zum vor und zurückgehen ? :gruebel:

weils für neulinge einfacher ist, vorallem wenn man es jmd. vorlegen soll der genau weiss, dass man sowas net gut drauf hat.

vollmer-net 19. Dez 2004 16:39

Re: Brauche unbedingt hilfe!
 
wieso nicht?

Neutral General 19. Dez 2004 16:43

Re: Brauche unbedingt hilfe!
 
Zitat:

Zitat von Birzenbae
Zitat:

Zitat von Neutral General
Aber wieso 2 Buttons zum vor und zurückgehen ? :gruebel:

weils für neulinge einfacher ist, vorallem wenn man es jmd. vorlegen soll der genau weiss, dass man sowas net gut drauf hat.

Also ich meine es ist nicht gerade besonders schwer die Steuerung mit den Pfeiltasten einzubauen...
Ich denke schwieriger wird wohl eher die zufälligen Autos und die Kollisionsabfrage...
Wobei das mit den Pfeiltasten gegen die Kollisionsabfrage wohl Kinderkram sein dürfte :roll:

Tubos 19. Dez 2004 16:43

Re: Brauche unbedingt hilfe!
 
Zitat:

weils für neulinge einfacher ist, vorallem wenn man es jmd. vorlegen soll der genau weiss, dass man sowas net gut drauf hat.
Aber warum denn? Wenn man ein Spiel programmieren kann, dann sollte das doch kein Problem sein.

Birzenbae 19. Dez 2004 16:45

Re: Brauche unbedingt hilfe!
 
Zitat:

Wenn man ein Spiel programmieren kann
sie hat aber oben gesagt, dass sie da überfragt sei.

StanY 19. Dez 2004 16:50

Re: Brauche unbedingt hilfe!
 
Mir fällt spontan ein, dass du die Fahrbahn z.b. vierspurig machst.

Das ganze Spiel läuft über einen Timer und jeden Intervall wird eine Zufallszahl generiert, die entscheidet, ob ein neues Autokommt. Wenn ja, eine Zufallszahl auf welcher Bahn es kommt.

Danach werden die Auto-Images jeden Intervall um X nach vorne bewegt. Alle in der gleichen Geschwindigkeit, damit es zu keinen Zusammenstößen kommt.

Die Autos befinden sich in einem DynArr vom Typ Image, die du püer Schleife durchgehen kannst.
Und ich würde mal sagen, für dieses Spiel reicht eine Kollisionsabfrage wie:

Delphi-Quellcode:
if (Auto.Top + Auto.Height >= Frosch.Top) then
  ShowMessage('UuUARgAHhAHR, ZuSammeNSTOOß!ß!ß!?!');

Oxmyx 19. Dez 2004 16:55

Re: Brauche unbedingt hilfe!
 
Na und? Es ist doch nichts schlimmes, sich Hilfe zu holen, wenn man etwas nicht alleine kann. Besonders beim Programmieren wird sich wohl so ziemlich jeder regelmäßig neues Wissen aneignen müssen, da niemand alles auf Anhieb wissen kann.

Zum Thema: Am einfachsten machst du wohl alles mit Images. Den Hintergrund, die Autos und deinen Frosch. Mit einem Timer bewegst du nun die Autos vorwärts (vielleicht auch mit unterschiedlicher Geschwindigkeit), und überprüfst, ob sich die Images von dem Frosch mit einem beliebigen Auto schneiden (anhand der Left-, Top-, Width-, und Height-Eigenschaften). Wenn das zutrifft, wurde der Frosch überfahren. Wenn die Top-Eigenschaft des Frosch-Images einen bestimmten Wert unterschreitet (dieser Wert sollte oberhalb der Straße liegen), dann hat der Spieler gewonnen.

Nikolas 19. Dez 2004 17:04

Re: Brauche unbedingt hilfe!
 
Eine Idee für die Kollisionsabfrage wäre diese:
Du definierst dir ein paar records
Delphi-Quellcode:
TFrosch = record
     Min,breite,Fahrbahn: integer;
     end;

TAuto = record
     min,breite, Fahrbahn, Geschw : integer;
     Bild: TImage;
     end;
Jetzt kannst du ein dynamisches array of TAuto erstellen und beim Programmstart die Autos mit Werten fühlen. Min ist der X-Pixelwert der linken oberen Ecke und in Breite kommt die Länge deines Auto-Images. Fahrbahn gibt an, auf welcher Fahrbahn dein Auto gerade ist und in Geschw. kannst du Speichern, um wie viel Px sich dieses Auto nach jedem Zeitschritt befindet. Das Min beim Frosch kannst du beim Programmstart etwa in die Mitte deines Forms setzen.

Jetzt brauchst du einen Timer. Über dessen Intervall kannst du auch die Schwierigkeit steuern.
In Ontimer-Event kommt dann so was:
Delphi-Quellcode:
for i:=0 to length(Autoarray)-1 do // schleife über alle Autos
begin
if Autoarray[i].Fahrbahn = Frosch.Fahrbahn then // Auto und Frosch auf gleicher Fahrbahn
   begin
   if (Sich das Auto mit dem Frosch überlappt) then
       Showmessage('autsch');
end;

// Ausserdem werden alle Autos verschoben:
for i:=0 to length(autoarray)-1 do
begin
Autoarray[i].min:=Autoarray[i].min+Autoarray[i].geschw
Autoarray[i].bild.left:= Autoarray[i].min; // Das Bild wird verschoben
Damit müsstest du erstmal hinkommen. Bei weiteren Fragen weisst du ja, wo du fragen kannst. Den Text oben habe ich nicht kompiliert, d.h. es kann gut sein, dass du ihn überarbeiten musst.

Sophia_X 19. Dez 2004 18:51

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Also erstmal möchte ich mich für die vielen Antworten bedanken! Ihr glaubt gar nicht, wie sehr ihr mir damit eine Freude bereitet! Mit euch kann ich es schaffen.

Ok, ihr habt natürlich Recht! Mit den Pfeiltasten ist es viel besser als mit den Button! Nur würde ich es vielleicht noch mit einem Button hinkriegen. Wie lautet der Quelltext, wenn ich ein Image (Frosch), um ein Feld (hoffe es ist der richtige Ausdruck) nach vorne und nach hinten bewewege. Also um den Y-Wert.

Zu den Records. Es ist mir klar, dass es ein Typ ist. Doch habe ich von Records (sorry) nicht wirklich viel gehört. Deklariert man so ein Image (hier also unser auto und frosch)?

Ok, von Array habe ich schonmal gehört :angel: Wusste gar nicht, dass die dynamisch sind. :wink: Meinst du so ein Array: var variable:array [1..10] of integer; ?

Für was steht die Abkürzung "min"? Die Position des Frosches am Anfang?


Danke, Stany! Ja, am besten ist es, wenn ich die Fahrbahn mit 8 Spuren mache. Damit der Lehrer es nicht gleich schafft. :wink:

Also dieses Left, Top, Width und Height stehen doch für die Position, ne? Height für höhe und tiefe? Width für breite? Oder wie war das? :wall:

Zur Kollision: Also, der Frosch müsste matsch sein, wenn das Auto genau auf die Koordinate des Frosches ist. Toxman, warum werden alle Autos verschoben? Wozu brauche ich diesen Abschnitt?
Deine Idee ist für mich super, wenn es um die Frage der Kollision geht! Und zeigt mir, wie wenig ich über Delphi noch weiß.

Wie kriege ich den Zufall hin, dass ein Auto kommt oder nicht?

Nikolas 19. Dez 2004 19:01

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Imho kannst du das ganze mit Height ignorieren, da das ja durch die Abfrage, ob das Auto auf der selben Bahn ist wie der Frosch, geklärt ist.
Zitat:

Min ist der X-Pixelwert der linken oberen Ecke
Mit Records kannst du einfach ein paar Variablen zusammenfassen. Sonst müsstest du für jede Eigenschaft ein eigenes Array bauen.

Zu den Arrays: Du kannst Arrays statisch deklarieren [foo: array[0..5] of Integer] oder dynamisch: [foo1 := array of integer]. Wenn du schon zu Beginn des Programmes weisst, wie viele Elemente du brauchst, ist das statische natürlich das richtige für dich. Wenn du allerdings nicht weisst, wie viele Autos es geben wird, musst du mit einem dynamischen arbeiten. Die Länge kannst du per Delphi-Referenz durchsuchensetlength festlegen.

Ein Image nach oben verrutschen: Image1.top:=image1.top-1; Nach Links [rechts]: Image1.left:= Image1.left - [+] 1;

Zum Zermatschen: Da das Auto und der Frosch aber nicht nur Punkte sind, musst du dir überlegen, wie die Ecken liegen müssen, dass sich Frosch und Auto überschneiden. Wenn also z.B. die Linke ecke der Frosches links von der Rechten Ecke des Autos liegt und gleichzeitig die Rechte Ecke des Frosches rechts von der Rechten Ecke des Autos liegt, ist der Frosch Platt. Dementsprechend musst du dir noch überlegen, wie es aussieht, wenn der Frosch in das Auto reinspringt, also nicht mehr von der Spitze mitgenommen wird. Das gibt dann viele Hübsche If's :mrgreen:

supermuckl 19. Dez 2004 19:56

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
soll es eine pixelgenaue kollision geben ?
dann wirds ein wenig schwerer.. bisschen scanline und dann geht das ;)

Sophia_X 19. Dez 2004 20:30

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Toxman
Wenn also z.B. die Linke ecke der Frosches links von der Rechten Ecke des Autos liegt und gleichzeitig die Rechte Ecke des Frosches rechts von der Rechten Ecke des Autos liegt, ist der Frosch Platt. Dementsprechend musst du dir noch überlegen, wie es aussieht, wenn der Frosch in das Auto reinspringt, also nicht mehr von der Spitze mitgenommen wird. Das gibt dann viele Hübsche If's :mrgreen:

:cry: Bereite mir doch nicht schon gleich so eine Panik :wink:

Nein, du hast natürlich völlig Recht! Da muss ich mir wirklich ein Kopf machen!

Ich glaube, ich nehme die Variante, dass ich schon weiß, wie viel Autos da sind. Oder ist die schwerer? Nehmen wir an 4 Autotypen?

Wegen Pfeiltasten für den Frosch: Kann ich diesen Quelltext so übernehmen? Also forsch1.top:=frosch.top-1; ?? Geht der dann mit den Pfeiltasten hoch und runter?
Nach links und rechts brauch er nicht gehen. :)

Pixelgenau? Nö, dass einfachere müsste doch auch reichen, ne? :cyclops:

Warum brauche ich den Pixeltwert der linken oberen Ecke? :gruebel: Ist der nicht 0 ??

Tubos 19. Dez 2004 21:04

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Wegen Pfeiltasten für den Frosch: Kann ich diesen Quelltext so übernehmen? Also forsch1.top:=frosch.top-1; ?? Geht der dann mit den Pfeiltasten hoch und runter?
Wenn du das in die OnKey-Methode reinschreibst und überprüfst welche Pfeiltaste gedrückt worden ist, dann geht das.

Nikolas 19. Dez 2004 21:28

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Warum brauche ich den Pixeltwert der linken oberen Ecke? Ist der nicht 0 ??
Es geht immer um den PixelWert des jeweiligen Images.

Zu den Froschbewegungen: Wenn du es so reinschreibst, wird der Spieler ein paar Hundert mal klicken müssen um den Frosch ans Ziel zu bringen. Schreib lieber eine Funktion, die den Frosch je nach Fahrbahn bewegt. Also etwa so:
Delphi-Quellcode:
// Dahin, wo du die Pfeiltaste abfängst:
If (Pfeiltaste nach oben) then
begin
 Frosch.Fahrbahn := Frosch.Fahrbahn +1;
   Frosch.image.top:= (x-wert der untersten Fahrbahn) + Frosch.Fahrbahn * (Höhe einer Fahrbahn);
end;
So hüpft der Frosch eine Fahrbahn nach oben.

Sophia_X 20. Dez 2004 16:31

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Hi Jungs,

habe jetzt erstmal per TImage meine Spielfläche fertig. Guckst du hier:

http://people.freenet.de/bmw-forum-b...flaechejpg.jpg


Ok, da habe ich mir jetzt nicht wirklich viel Mühe gegeben :oops: Aber darauf kommt es ja nicht unbedingt an, ne?

Dieses Spielfeld ist 500x440 groß! Es gibt 11 Bahnen.

1. Wo der Frosch beginnt zu starten 2.-5. Ist die Straße, wo die Autos fahren. Auf Bahn Nummero 6 darf man sich erstmal erholen. :???: 7-10 ist dann wieder die Straße, wo die Autos fahren und bei Bahn 11 hat man dieses (für mich) aufwendige Spiel geschafft.

Daher besteht jede Bahn aus der Länge von 40 Pixel! 11*40=440 :wink: Die Breite 500 habe ich jetzt mal so nach Schnauze gewählt. Mein Frosch soll also 40 Pixel lang sein und Breit... joa... 20 Pixel?

Neben dem Image (Spielfeld) habe ich ein Button namens "Start". Wie es sich von selbst erklärt soll das Spiel beginnen, wenn man ihn drückt.

Für euch ist das bestimmt ein Kinderkram so was zu programmieren und ihr macht bestimmt so was im Schlaf. Aber hey, dass ist mein erstes Spiel :oops: Und dann noch mit dem Notendruck...

Also liebe Programmier-Freaks, soll ich erstmal nach dem Implementationbereich ein Array für meine 4 Autos deklarieren? Oder erstmal ein doppelklick auf den Button? Und dann eine Anweisung erteilen? :duck:

Oxmyx 20. Dez 2004 17:08

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Ich denke die einfachste Lösung ist diese:

Du setzt auf jede Fahrspur ein TImage mit dem Auto-Bild drin. Dann nimmst du einen Timer, und mit diesem bewegst du alle Autos pro Zeiteinheit einen gewissen Wert zum rechten Rand. Wenn die x-Koordinate eines Auto-TImages (also die Left-Eigenschaft des Images) einen bestimmten Wert überschreitet (in deinem Fall z.B. 500), dann setzt du es zurück an den Anfang der Straße (und lädst vielleicht ein anderes Auto-Bild). Auf diese Weise kann auf jeder Fahrspur immer nur ein einziges Auto fahren, aber wenn man etwas mit der Geschwindigkeit der Autos spielt, wird das schon nicht zu einfach.
Zusätzlich überprüfst du noch in jedem Timer-Aufruf, ob eines der Autos mit dem Frosch zusammengestoßen ist. Das geht über die Left- und Top-Eigenschaften (welche die x-, und y-Koordinate des linken oberen Eckpunkts der Bilder angeben) und der Width- und Height-Eigenschaften (welche die Breite und die Höhe der Bilder angeben).

Die Überprüfung, ob das Frosch-Image mit einem Auto-Image zusammengestoßen ist, funktioniert folgendermaßen:
Delphi-Quellcode:
if (Frosch.Left + Frosch.Width > Auto.Left) and
   (Frosch.Left < Auto.Left + Auto.Width) and
   (Frosch.Top + Frosch.Height > Auto.Top) and
   (Frosch.Top < Auto.Top + Auto.Height) then
begin
  // Zusammenstoß!
end;
In einer Schleife kannst du überprüfen, ob der Frosch mit einem beliebigen Auto zusammengestoßen ist. Wenn du die Auto-Images in aufsteigender Reihenfolge benennst (also z.B. Auto1, Auto2, Auto3, Auto4, etc.), dann könntest du das so machen:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Auto: TImage;
  AutoName: array[0..31] of Char;
  i: Integer;
begin
  for i := 1 to 10 do begin
    ZeroMemory(@AutoName, sizeof(AutoName));
    strlfmt(@AutoName, 32, 'Auto%d', [i]);

    Auto := TImage(FindComponent(AutoName));

    if (Frosch.Left + Frosch.Width > Auto.Left) and
       (Frosch.Left < Auto.Left + Auto.Width) and
       (Frosch.Top + Frosch.Height > Auto.Top) and
       (Frosch.Top < Auto.Top + Auto.Height) then
    begin
      // Zustammenstoß mit Auto i!
    end;
  end;
end;
In diese Timerprozedur kannst du dann noch eine Schleife schreiben, in der jedes Auto um einen gewissen Wert nach rechts bewegt wird, und dass ein Auto zurückgesetzt wird, wenn es den rechten Rand erreicht hat.

Die Bewegung des Frosches machst du in einer OnKeyDown-Prozedur.

edi-design 20. Dez 2004 18:53

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
weiß nich obs dir viel hilft, aber hab mal bissl source zusammengerüttelt, 2 autos fahren, kollision is drin, und du kannst den hamster (hab keinen guten frosch hinbekommen) in alle 4-richtungen bewegen ;)

viel spaß damit, ich bastl emorgen noch bissl wieter dran, mit zufallsgenerator für autos usw.

cu andré

Sophia_X 20. Dez 2004 19:23

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
@Oxmyx

Ich bewunder es, wie schnell ihr so was hinkriegt. Übung macht den Meister, ne? Mir persönlich macht programmieren ziemlich viel spaß, aber mir mangelt es noch zu sehr an Kenntnise. Durch so ein Spiel kann man echt viel lernen und man hat ein Erfolgserlebnis.

Dein Quelltext hilft mir sehr viel weiter. Darauf wäre ich nie gekommen. Was ich gar nicht so verstehe ist folgendes:
Delphi-Quellcode:
for i := 1 to 10 do begin
    ZeroMemory(@AutoName, sizeof(AutoName));
    strlfmt(@AutoName, 32, 'Auto%d', [i]);
Wusste gar nicht, dass es so ein @ gibt. Und das % :gruebel:

@andré

:shock: Das hast dir aber schnell zusammengebastelt! Allein deine Zeichnung des "Spielfeldes" ist dir ja wohl eindeutig besser gelungen :cyclops: Aber leider kann ich mir nur die einzelnen Grafiken angucken. Wenn ich dein Projekt mit Delphi 3 öffne zeigt er folgendes Problem an: "Fehler beim Erzeugen von Formular: Ungültiges Stream-Format". Ich sehe dein Quelltext aber kann nix starten. Das Formular ist leer...

Was habe ich falsch gemacht? Liegt es an Delphi 3? Habe ich die falsche Datei angeklickt?

Sophia_X 20. Dez 2004 19:32

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Delphi sagt mir was von Datei nicht gefunden, wenn ich das Prgramm starten möchte. Sie lautet 'Variants.dcu'

fkerber 20. Dez 2004 19:34

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Hi!

Lösch Variants mal oben aus der Uses-Liste. Sollte dann gehen.


Ciao Frederic

Sharky 20. Dez 2004 19:35

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Sophia_X
Delphi sagt mir was von Datei nicht gefunden, wenn ich das Prgramm starten möchte. Sie lautet 'Variants.dcu'

Das liegt wohl daran das der Code mit Delphi 7 geschrieben wurde. Lösche in der USES Klausel mal die Unit Variants. Dann solltest Du es kompilieren können.

Oxmyx 20. Dez 2004 19:44

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Sophia_X
@Oxmyx

Ich bewunder es, wie schnell ihr so was hinkriegt. Übung macht den Meister, ne? Mir persönlich macht programmieren ziemlich viel spaß, aber mir mangelt es noch zu sehr an Kenntnise. Durch so ein Spiel kann man echt viel lernen und man hat ein Erfolgserlebnis.

Dein Quelltext hilft mir sehr viel weiter. Darauf wäre ich nie gekommen. Was ich gar nicht so verstehe ist folgendes:
Delphi-Quellcode:
for i := 1 to 10 do begin
    ZeroMemory(@AutoName, sizeof(AutoName));
    strlfmt(@AutoName, 32, 'Auto%d', [i]);
Wusste gar nicht, dass es so ein @ gibt. Und das % :gruebel:

Das @ ist der Adress-Operator. Wenn man ein @ vor eine Variable schreibt, dann liefert dieser Operator die Speicheradresse dieser Variablen zurück.
AutoName ist ja ein "array[0..31] of Char", also ein Array mit 32 Char-Variablen drin. Da jede Char-Variable ein Zeichen enthalten kann, ist ein Array of Char also so etwas wie ein "string".
Mit der Funktion ZeroMemory lösche ich den Speicherbereich, an der dieser Zeichenstring steht. Weil es kann sein, dass dort noch irgendwas steht, und dass das Char-Array wirklich ganz leer (mit Nullen gefüllt) ist, überschreibe ich einfach den gesamten Speicherbereich, den das Array einnimmt, mit Nullen (nichts anderes macht die ZeroMemory-Funktion).
Die Funktion strlfmt formatiert einen String nach einem vorgegeben Format. Der erste Parameter ist der String, in den geschrieben werden soll. Der zweite Parameter ist die größe des Arrays (da ein "Char" ein Byte groß ist, und das Array 32 Chars enthält, ist die Größe des Arrays also 32 Byte). Der dritte Parameter ist das Format des Strings. Das %d ist ein Formatsymbol. Es besagt. dass an dieser Stelle etwas in den String eingefügt werden soll (das "d" hinter dem % besagt, dass ein Ganzzahl-Wert an dieser Stelle eingefügt werden soll). Der einzufügende Wert steht im vierten Parameter.
Nachdem die Funktion ausgeführt wurde, steht im ersten Schleifendurchlauf in AutoName "Auto1", im zweiten Schleifendurchlauf steht in AutoName "Auto2", etc., weil strlfmt immer die Zählvariable hinter "Auto" setzt. Dann sucht FindComponent im 1. Schleifendurchlauf nach "Auto1" (und das ist ja der Name eines TImage-Steuerelements!), im 2. Schleifendurchlauf nach "Auto2", etc.

Sophia_X 20. Dez 2004 20:24

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
@Oxmyx

Danke, für diese ausführliche Erklärung! Jetzt verstehe ich es eindeutig besser! Wir hatten vieles von dem, was du erzählst noch gar nicht im Unterricht.

@all

Nein, das klappt leider auch nicht :cry: Das Problem fängt ja schon an, das ich kein Spielfeld sehe und Image und so im Formula.

Wenn ich euren Vorschlag befolge mit variants einfach löschen dann meckert er mit:

Fehler(0):RLINK32:Unsupported 16bit resource in file C:\...\Unit1.dfm

:( Hat denn keiner mehr Delphi 3? OK, es ist auch schon ziemlich alt von der Version... kriegt man Delphi 7 irgendwo her?? Oder gibt es doch noch eine Lösung mit Delphi 3?

Birzenbae 20. Dez 2004 20:35

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
der, der D7 sollte sich das hier mal durchlesen.

Nikolas 20. Dez 2004 21:15

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Ich glaube nicht, dass es sinnvoll ist, hier fertige Spiele zu posten [Kodex???]. Wie sie schon gesagt hat, versteht sie noch nicht so viel von Delphi und wenn sie dann ein Programm mit Adress-operatoren abgibt, müsste der Lehrer ihr eigentlich 0 Punkte geben, wenn er nicht wirklich dumm ist. Von da her fänd ich es besser, wenn du, Sophia weiter an deinem Ansatz arbeitest und dann die auftauchenden Fragen hier stellst. [Nachdem du nichts in der Suche darüber gefunden hast]

Oxmyx 20. Dez 2004 21:25

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Toxman
Ich glaube nicht, dass es sinnvoll ist, hier fertige Spiele zu posten [Kodex???]. Wie sie schon gesagt hat, versteht sie noch nicht so viel von Delphi und wenn sie dann ein Programm mit Adress-operatoren abgibt, müsste der Lehrer ihr eigentlich 0 Punkte geben, wenn er nicht wirklich dumm ist. Von da her fänd ich es besser, wenn du, Sophia weiter an deinem Ansatz arbeitest und dann die auftauchenden Fragen hier stellst. [Nachdem du nichts in der Suche darüber gefunden hast]

Die Formatierung des Namens-Strings der Image-Komponenten ist keineswegs eine zentrale Stelle des Spielcodes. Das ist Nebensache. Und wie ich schon sagte: Es ist nicht falsch, sich Hilfe zu holen. Die Verwendung eines fertigen Codes halte ich zwar auch für falsch, aber eben bei der Formatierung eines Strings kann man sich durchaus bei anderen informieren, wie sowas geht.

Sophia_X 21. Dez 2004 17:58

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Toxman
Ich glaube nicht, dass es sinnvoll ist, hier fertige Spiele zu posten [Kodex???]. Wie sie schon gesagt hat, versteht sie noch nicht so viel von Delphi und wenn sie dann ein Programm mit Adress-operatoren abgibt, müsste der Lehrer ihr eigentlich 0 Punkte geben, wenn er nicht wirklich dumm ist. Von da her fänd ich es besser, wenn du, Sophia weiter an deinem Ansatz arbeitest und dann die auftauchenden Fragen hier stellst. [Nachdem du nichts in der Suche darüber gefunden hast]

Hä? Der Lehrer kann mit dem Adress-Operator sehen, ob ich es gemacht habe? Was ist denn ein Adress-Operator?

Ihr habt ja Recht, dass man bei so was weniger versteht und behählt, als wenn man es selber macht. Doch finde ich es ganz gut mal so etwas zu sehen, um mal eine Vorstellung vom Aufwand und evtl. Schwierigkeiten zu kriegen. So hat man auch mal die Möglichkeit zu sehen, wie man vieles besser schreiben kann und man kann hinter die Schulter eines Profis blicken und sehen, was alles möglich ist.

Kernel32.DLL 21. Dez 2004 19:35

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Toxman
Ich glaube nicht, dass es sinnvoll ist, hier fertige Spiele zu posten [Kodex???]. Wie sie schon gesagt hat, versteht sie noch nicht so viel von Delphi und wenn sie dann ein Programm mit Adress-operatoren abgibt, müsste der Lehrer ihr eigentlich 0 Punkte geben, wenn er nicht wirklich dumm ist. Von da her fänd ich es besser, wenn du, Sophia weiter an deinem Ansatz arbeitest und dann die auftauchenden Fragen hier stellst. [Nachdem du nichts in der Suche darüber gefunden hast]

Ich beobachte den Beitrag schon 'ne ganze Zeit und habe eigentlich nur darauf gewartet...

Zitat:

Zitat von Sophia_X
Hä? Der Lehrer kann mit dem Adress-Operator sehen, ob ich es gemacht habe? Was ist denn ein Adress-Operator?

Siehste, da ist das erste Problem: Würde er dich fragen, wüsstest du nicht mal, was das überhaupt ist...

Zitat:

Zitat von Sophia_X
Ihr habt ja Recht, dass man bei so was weniger versteht und behält, als wenn man es selber macht. Doch finde ich es ganz gut mal so etwas zu sehen, um mal eine Vorstellung vom Aufwand und evtl. Schwierigkeiten zu kriegen. So hat man auch mal die Möglichkeit zu sehen, wie man vieles besser schreiben kann und man kann hinter die Schulter eines Profis blicken und sehen, was alles möglich ist.

Jetzt haste aber einigen hier ziemlich geschmeichelt...
Na ja, dennoch ist es ein Unterschied, ob ich jemandem nur "über die Schulter" blicke, oder aber mir "außerordentlich" helfen lasse. So kann man sich nämlich relativ geschickt ein Programm zusammenstricken lassen.
Nichtsdestwenigertrotz, komm' jetzt bloß nicht auf die Idee, überhaupt nichts mehr zu fragen, dass wollte ich nicht erreichen. Lediglich Fragen, die man auch mit der OH beantworten kann (11. Klasse Informatik, da kann man die Delphi-Hilfe sicher verstehen :stupid: ), bräuchte man hier nicht zu stellen.
Und wenn nun jemand mit Adress-Operatoren ankommt (das ist das "@" - Zeichen), würden bei mir die Alarmglocken schrillen. Vllt. sollte man damit nicht in den ersten paar Monaten anfangen...
(Wenn du nämlich mit einem Mal mit Adress-Operatoren bei deinem Ifo-Lehrer ankämest, könnte er eventuell doch stutzig werden...)

So, war jetzt 'ne Menge Off-Topic.

Oxmyx 21. Dez 2004 20:12

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Es kann doch nicht Sinn eines Projektes sein, es völlig ohne fremde Hilfe realisieren zu wollen. Ein Projekt hat es doch gerade an sich, dass man selbständig sich auch die nötige Hilfestellung sucht, um ein Problem zu lösen. Und wenn sich das Problem stellt, wie man einen String in einer Schleife in aufsteigender Reihenfolge formatieren kann, dann kann es doch nicht falsch sein, sich die benötigte Information zu holen. Solange man sich merkt, wie diese Sache geht, hat das doch seinen Zweck erfüllt: man weiß mehr als vorher.
Wenn mein Vorschlag nun auch einen Adressoperator beinhaltet, und sie diesen Vorschlag anwendet, so kann das doch weiß Gott nicht zu einer Abwertung führen. Solange das Programm nicht ohne nachzudenken kopiert ist, sollte man sich -- auch bei einem Schulprojekt -- doch so viel Informationen und Hilfe holen dürfen, wie nötig ist.

Oxmyx 21. Dez 2004 20:14

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Sophia_X
Zitat:

Zitat von Toxman
Ich glaube nicht, dass es sinnvoll ist, hier fertige Spiele zu posten [Kodex???]. Wie sie schon gesagt hat, versteht sie noch nicht so viel von Delphi und wenn sie dann ein Programm mit Adress-operatoren abgibt, müsste der Lehrer ihr eigentlich 0 Punkte geben, wenn er nicht wirklich dumm ist. Von da her fänd ich es besser, wenn du, Sophia weiter an deinem Ansatz arbeitest und dann die auftauchenden Fragen hier stellst. [Nachdem du nichts in der Suche darüber gefunden hast]

Hä? Der Lehrer kann mit dem Adress-Operator sehen, ob ich es gemacht habe? Was ist denn ein Adress-Operator?

Siehe meine Erklärung auf der vorigen Seite...

Nikolas 21. Dez 2004 20:34

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Wenn mein Vorschlag nun auch einen Adressoperator beinhaltet, und sie diesen Vorschlag anwendet, so kann das doch weiß Gott nicht zu einer Abwertung führen. Solange das Programm nicht ohne nachzudenken kopiert ist, sollte man sich -- auch bei einem Schulprojekt -- doch so viel Informationen und Hilfe holen dürfen, wie nötig ist.
Wenn ich Lehrer wär und jemandem die Möglichkeit gegeben hätte mit so einem Projekt die Note zu verbessern, wäre ich richtig sauer, wenn jemand mit einem Adress-operator ankommen würde und dann keine Ahnung hat, was das Zeichen bedeutet. Es ist dann offensichtlich, dass das ein nach Skipt-Kiddie-Art zusammengeschnippseltes Werk ist.
Also lieber unnötig viel Code und komplizierte Lösungen, da freut sich der Lehrer, dass man sich soviel Mühe gemacht hat und sich nicht hat abschrecken lassen :mrgreen:

Sophia_X 21. Dez 2004 21:10

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
:) Stimmt ja, dass hattest du ja bereits erklärt. Das war der Abschnitt, den ich nicht wirklich verstanden habe.

@Kernel

Schön, dass du den Beitrag seit einiger Zeit beobachtest :thumb: Mit Adress-Operatoren war jetzt wirklich mein großer Fehler ohne nachzudenken, denn es wurde mir bereits erklärt.

Ich habe keinen geschmeichelt und es ist nicht als Umschreibung zu deuten. Ich finde es nicht als sinnloses abgucken, um dann nur das Programm zu haben und es dann für eine Note abzugeben. Mir ist klar und dem Lehrer auch, dass ich nach noch nicht mal ein halbes Jahr Delphi (3 Stunden die Woche) ein Spiel namens Frogger programmieren kann ohne jegliche Hilfe. Das kann glaube ich keiner in dem Kurs. Es ist eine Hausaufgabe, um meine nicht gerade tollen Noten zu verbessern. Ich könnte mich auch bei Fragen an ihm wenden, aber ich glaube, je mehr dämliche Fragen ich stelle, desto mehr wird er mir das von der Note abziehen und ausserdem habe ich mir gedacht, dass es hier in so einer großen Delphi Community genug Hilfe und Erkärungen kriege. Und der große Vorteil ist, dass ich euch immer und zur jeder Zeit habe. Ausserdem finde ich, dass man bei einem Spiel am besten lernen kann, als wenn man mit Delphi langweilige Rechnungen oder so was programmiert, da das Ergebnis lohnenswerter und interessanter für ein Schüler ist.

Ich weiß, dass meine Fragen ziemlich lächerlich sind. Und die meisten bestimmt in der Delphi-Hilfe stehen. Das ist mir aber zu allgemein und ausserdem oft viel zu kompliziert beschrieben. Ich zwinge ja keinen mir zu helfen. Sondern bitte höflich. :wink: Warum ist es so schlimm, wenn man Fragen im Forum stellt, die man nach einen größeren Zeitaufwand in Delphi findet und dann immer noch nicht wirklich versteht?

Kernel32.DLL 22. Dez 2004 12:06

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
Zitat:

Zitat von Sophia_X
Ich habe keinem geschmeichelt und es ist nicht als Umschreibung zu deuten

Das habe ich auch nie behauptet. Im Gegenteil! Ich fände es jedenfalls sehr schmeichelhaft, wenn mich jemand als Profi bezeichnen würde (auch wenn deine Aussage recht allgemein war). Das Wort "schmeicheln" ist ja nicht negativ behaftet, sondern im positiven Sinne zu verstehen :thumb:

Zitat:

Zitat von Sophia_X
Ich könnte mich auch bei Fragen an ihm wenden, aber ich glaube, je mehr dämliche Fragen ich stelle, desto mehr wird er mir das von der Note abziehen...

Könnte man auch umdrehen: Dadurch könnte er sehen, dass du dich intensiv mit der Materie auseinandersetzt. Glaub' mir, auch das kann Lehrer beeindrucken. Is' halt nur leider nicht bei jedem so, musst du im Endeffekt also selbst abwägen.

Zitat:

Zitat von Sophia_X
...als wenn man mit Delphi langweilige Rechnungen oder so was programmiert, da das Ergebnis lohnenswerter und interessanter für ein Schüler ist.

Ich wünschte ich hätte ein Programm für analytische Geometrie. Dann müsste ich den ganzen Kram nicht mehr von Hand machen. :mrgreen:

Zitat:

Zitat von Sophia_X
Ich weiß, dass meine Fragen ziemlich lächerlich sind.

Wieso sind deine Frage jetzt lächerlich? Es sind Anfängerfragen, na und? Das macht die Fragen nicht automatisch lächerlich

Zitat:

Zitat von Sophia_X
Warum ist es so schlimm, wenn man Fragen im Forum stellt, die man nach einen größeren Zeitaufwand in Delphi findet und dann immer noch nicht wirklich versteht?

Zitat:

Zitat von Kernel32.dll
Nichtsdestwenigertrotz, komm' jetzt bloß nicht auf die Idee, überhaupt nichts mehr zu fragen, dass wollte ich nicht erreichen.

Das gilt immer noch. Bei Verständnisproblemen kann auch die OH nicht immer behilflich sein, dass hängt davon ab, wie umfangreich und komplex das Problem ist. Dann benötigt man häufig "menschliche" Hilfe, gerade als Anfänger, und daran ist ja auch nichts verwerfliches

In diesem Sinne:
Keep on coding (and writing :zwinker: )

Daniel

Sophia_X 23. Dez 2004 15:22

Re: Anfängerin muss (ähnliches wie) Frogger programmieren
 
@Kernel

Ich finde es immer gut, wie du alles kommentierst. :o

Deinen vorletzter Beitrag habe ich anders aufgefasst und du hast ihn jetzt ziemlich abgemildert. Nach dem Motto: "Nein nein, so meinte ich das alles gar nicht". Du hast mich so ziemlich als jemanden dargestellt, der eine Hausaufgabe abgibt und deren Leistung aber andere vollbracht haben. Denn diese Botschaft ist ziemlich deutlich in deinem Beitrag so zu verstehen. Aber jetzt scheinst du es ja wieder mit anderen Augen zu sehen. :|

@all

Wünsche euch allen ein frohes Fest und hoffe, dass ihr nicht so viele Geschenke umtauschen müsst. :firejump: Ansonsten feiert fleißig :cheers: Werde mich nächste Woche wieder mit dem Programm beschäftigen und dann die eine oder andere Frage stellen :coder: Mit euch werde ich es schon schaffen. :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz