Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit "Programm" für die Schule (https://www.delphipraxis.net/133249-problem-mit-programm-fuer-die-schule.html)

just.cause 28. Apr 2009 16:15


Problem mit "Programm" für die Schule
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo an alle, die sich die Zeit nehmen, sich das hier mal durchzulesen :)
Also, wir haben in der Schule seit kurzem Informatik (11. Klasse) und beschäftigen uns (un)glücklicherweise mit Delphi bzw. mit Pascal. Nun, nachdem unser eher weniger kompetenter Lehrer uns ein paar Grundlagen "erklärt" hat, sollten wir in kleineren Gruppen eigene Spielideen entwickeln und diese dann auch so gut es geht umsetzen. Ich habe mir mit einem Freund überlegt, eine Art Tickspiel zu basteln, nur kennen wir uns beide nur seeehr wenig mit der ganzen Materie aus und kommen nur langsam voran. In der schule kriegten wir bisher nur wenig Hilfe, deshalb wende ich mich jetzt an euch^^. Soviel erstmal zu der Situation, jetzt zum eigentlichen Programm.
Wir sind so weit: Zwei Objekte (in unserem Falle Kugeln, später Images) kann man mit bestimmten Tasten in verschiedene Richtungen bewegen. Wenn diese beiden Objekte sich nun berühren, bleiben sie ineinander hängen, können also nicht mehr bewegt werden. Die nächste Idee wäre dann gewesen, eine Message zu zeigen, wenn dies passiert. Gedacht, getan...die Message, durch "showmessage" hervorgerufen und in eine if-Bedingung eingebunden kommt leider schon, wenn man das Spiel nur startet. Da liegt nun das erste Problem. Weiterhin hatten wir vor, einen Punktezähler mit einzubauen, wobei wir allerdings auch keine Vorstellung haben, wie. Dann wollten wir neben der Message noch einen Sound haben, der kommt, wenn man "getickt" wird bzw. jem. tickt, hier auch wieder die frage: Wie?
Letztendlich wollte ich hier einfach mal fragen, ob nicht jemand bereit wäre, sich das ganze mal anzuschauen und ggf. weiterzuführen, evtl. auch weitere Ideen vorzuschlagen/einzubringen.
Die Dateien hänge ich einfach mal als *.rar hier mit dran. Wenn also jemand Lust und Zeit hat, zwei richtig blöden Jungs zu helfen, dann kann er oder sie sich ja einfach ma an den Quelltext machen, oder aber, wenn auch nicht ganz sooo toll wegen fehlender Kenntnis über die Befehle usw., einfach irgendwie die Fragen beantworten.
Ich bedanke mich bei jedem, der es überhaupt bis hierher geschafft bzw. durchgezogen hat und natürlich noch viel mehr bei jedem, der helfen kann/will :-D
In diesem Sinne, einen schönen Tag euch allen und bye :hi:


PS: Das ganze wurde mit Delphi 7 gemacht.
PSII: Zu Hause hab ich nur delphi 2005, welches ich nicht so toll finde, Lazarus funktioniert macnhmal nicht so wie ich will. Gibt es da noch irgendwelche anderen nennenswerten (kostenlosen) Alternativen?

seim 28. Apr 2009 16:20

Re: Problem mit "Programm" für die Schule
 
Wenn du das mit dem Sound rausgefunden hast schreib mir ne Mail ^.^

Also zu deinem Prob. das die Message nur erscheint wenn das Ding ausgeführt wird.. Also die steht auch nur in "FormCreate" und dieses Event wird nunmal nur einmal beim starten aktiviert also von daher kann es eh nicht nochmal erscheinen.

khh 28. Apr 2009 17:36

Re: Problem mit "Programm" für die Schule
 
Zitat:

Zitat von just.cause
PSII: Zu Hause hab ich nur delphi 2005, welches ich nicht so toll finde, Lazarus funktioniert macnhmal nicht so wie ich will. Gibt es da noch irgendwelche anderen nennenswerten (kostenlosen) Alternativen?

zu Lazarus gibts keine nennenswerten kostenlosen Alternativen ;-)


Das funktioniert schon richtig


Gruss Kh

seim 28. Apr 2009 17:39

Re: Problem mit "Programm" für die Schule
 
FreePascal = Delphi ?

DeddyH 28. Apr 2009 17:40

Re: Problem mit "Programm" für die Schule
 
Na na, TDE ist ja auch nicht schlecht.

khh 28. Apr 2009 17:41

Re: Problem mit "Programm" für die Schule
 
Zitat:

Zitat von DeddyH
Na na, TDE ist ja auch nicht schlecht.


;-)

just.cause 28. Apr 2009 17:48

Re: Problem mit "Programm" für die Schule
 
Danke schonmal.

Zitat:

Zitat von seim
Also zu deinem Prob. das die Message nur erscheint wenn das Ding ausgeführt wird.. Also die steht auch nur in "FormCreate" und dieses Event wird nunmal nur einmal beim starten aktiviert also von daher kann es eh nicht nochmal erscheinen.

Und wie kann ich das stattdessen lösen?
Zitat:

Zitat von khh
Zitat:

Zitat von just.cause
PSII: Zu Hause hab ich nur delphi 2005, welches ich nicht so toll finde, Lazarus funktioniert macnhmal nicht so wie ich will. Gibt es da noch irgendwelche anderen nennenswerten (kostenlosen) Alternativen?

zu Lazarus gibts keine nennenswerten kostenlosen Alternativen ;-)
Das funktioniert schon richtig

Nicht ganz, wenn ich z.B. die beiden Shapes mit den Tasten bewegen will, funktioniert das anscheinend nicht mit den gleichen Befehlen wie in Delphi, jedenfalls kann ich sie bei Lazarus nur nach oben und unten steuern, wenn ich die tasten für links bzw rechts drücke springen die Shapes immer auf eine bestimmte Position.


Gibt es hier nicht jemanden, der sich mal ans Spiel ransetzen und es fertigmachen will?
Klingt jetzt wahrscheinlich ziemlich faul, aber wir sind echt blutige Anfänger und sind die letzten paar Unterrichtsstunden verzweifelt an dem ganzen Krams und wir wissen einfach nicht mehr so wirklich weiter :-/

quendolineDD 28. Apr 2009 17:55

Re: Problem mit "Programm" für die Schule
 
Zitat:

Gibt es hier nicht jemanden, der sich mal ans Spiel ransetzen und es fertigmachen will?
Das wird hier wohl auf taube Ohren stossen.
Zitat:

Gibt es da noch irgendwelche anderen nennenswerten (kostenlosen) Alternativen?
Zitat:

Zitat von DeddyH
Na na, TDE ist ja auch nicht schlecht.

:thumb:

Wenn du dir deine Programmlogik überdenkst, wirst du wohl deine schlimmsten Fehler selber finden.
Edit:
Das sich beide Shapes ineinander "verhaken" und dann nicht mehr bewegt werden kann, liegt an euer Berechnung von d.
Dann muss nach jedem Schnritt geprüft werden, ob beide Shapes ineinander "hängen" und dann das tagged ausgegeben werden.

just.cause 2. Mai 2009 19:56

Re: Problem mit "Programm" für die Schule
 
Kann denn wirklich niemand Abhilfe schaffen? Ich bin noch kein Stück weitergekommen, das ganze muss aber bis Dienstag fertig sein :?

schöne Grüße!

DeddyH 2. Mai 2009 20:12

Re: Problem mit "Programm" für die Schule
 
Was erwartest Du von uns? Dass wir uns das Programm herunterladen, Deine Gedanken lesen, die Fehler beseitigen und das Ganze dann wieder als Deine Arbeit uploaden?

isilive 2. Mai 2009 20:16

Re: Problem mit "Programm" für die Schule
 
Hab auf diesem Rechner hier kein Rar und kein Delphi. Kannst du den Quelltext direkt hier reinposten bitte?!

lbccaleb 2. Mai 2009 20:16

Re: Problem mit "Programm" für die Schule
 
Bei deiner Anmedlung hast dus das Bestätigt:

Zitat:

2.3.2.3 - Null Bock? Nicht hier.

Mit Fragen, die sich lesen wie "...ich habe weder Ahnung noch Lust, kann mir mal einer mein Programm schreiben..." wirst Du hier nicht auf Gegenliebe stoßen. Wir sind gerne bereit, jedem zu helfen, der selber Engagement zeigt - aber wir machen nicht die Hausaufgaben Anderer.
Zudem ist es unerläßlich, daß Du Dich selber mit dem Problem befasst hast, bevor Du in der Lage bist, dazu eine präzise Frage zu stellen.
Etwas völlig Anderes ist es natürlich, wenn Du (noch) nicht weißt, wonach Du suchen sollst, bzw. wo Du anfangen sollst. Dann frage gerne nach geeigneten Stichworten.

Keiner wird hier für DICH!! ein Programm OHNE Gegenleistung schreiben? Wieso auch?
Aber sicherlich werden dir hier viele Helfen, wenn du die nötige eigeninitiative ergreifst, und z.B.: einfach mal in der DP nach Hier im Forum suchenSound, Hier im Forum suchenTastatur eingaben oder anderen Dingen suchst!

Hast du dazu was gefunden, und kommst damit nicht klar, wird dir hier geholfen! :)

Und sonnst würde ich dir (euch) raten vllt erstmal nach "Bei Google suchenDelphi Grundlagen" zu suchen, und euch mit den Standarts vertraut zu machen!

mfg Caleb

Luckie 2. Mai 2009 20:36

Re: Problem mit "Programm" für die Schule
 
Desweiteren sagt der Titel nichts über das Problem aus.

Cyf 2. Mai 2009 21:27

Re: Problem mit "Programm" für die Schule
 
Eigentlich wollte ich mir das verkneifen, aber da der Thread ja immer wieder hochgepushed wird, kommt es auf das eine mal auch nicht mehr an. :roll:

Zitat:

Zitat von just.cause
nachdem unser eher weniger kompetenter Lehrer

Zitat:

Zitat von just.cause
Klingt jetzt wahrscheinlich ziemlich faul, aber wir sind echt blutige Anfänger und sind die letzten paar Unterrichtsstunden verzweifelt an dem ganzen Krams und wir wissen einfach nicht mehr so wirklich weiter :-/

Ohne hier behaupten zu wollen, dass Info-Unterricht immer absolut sinnvoll ist. Wie genau stellst du dir vor Kompetenz beurteilen zu können, wenn dir dazu das nötige Wissen fehlt und aus den bisherigen Antworten auch hervorgeht, dass du offensichtlich keine Eigeninitiative zeigst, es dir anzueignen. Weiterhin sollte man mit derartigen Aussagen vorsichtig sein und sie sind zu begründen, ansonsten wirken sie nur wie ein Diffamierungsversuch, um Verantwortung von sich selbst abzuschieben. Wenn du der Meinug bist dein Lehrer kann Wissen nicht vermitteln, dann geh zu ihm, sag ihm das und verhandel wie der Unterricht sinnvoller gestaltet werden könnte.


Zitat:

Zitat von DeddyH
Na na, TDE ist ja auch nicht schlecht.


just.cause 3. Mai 2009 13:47

Re: Problem mit "Programm" für die Schule
 
...
Erstens: eine Meinung/Behauptung MUSS man NICHT belegen oder widerlegen, man KANN. Desweiteren muss ich das schon gar nicht in einem Forum tun, wo dies völlig irrelevant zur Klärung eines bestimmten Sachverhaltes ist, wo es keinen Nutzer interessieren sollte, wie, was und wer meine Lehrer sind.
Meine Behauptung, dass der Lehrer inkompetent ist, hat schon so seine Gründe. Und um diese erkennen zu können, muss man kein Fachmann sein. Die Art des Unterrichts und der (vorhandenen?) Vermittlung des Stoffes von Lehrer an Schüler hat meiner Meinung nach in erster Linie nichts mit dem Stoff selbst zu tun. Na klar, wenn er jetzt falsche Fakten, Daten etc. vermitteln würde, würde ich das nicht mitkriegen. Genausowenig kann ich beurteilen, ob seine Herangehensweise an das ganze Thema bzw. die Abfolge seiner Unterthemen sinnvoll ist. Aber ich kann mich zu der Art äußern, wie er versucht, uns das ganze mit seinem durchdachten und guten oder auch schlechten Schema verständlich rüberzubringen. Das verlangt keine Fachkenntnisse.
Und jetzt zu unserer/meiner "nicht vorhandenen" Eigeninitiative:
Wir saßen mindestens schon 10 Unterrichtsstunden an dem "Spiel", haben immer wieder aus eigener Kraft Dinge versucht, bei denen wir am Ende feststellen durften, dass sie unsinnig sind bzw. nicht so funktionieren, wie wir wollen. Natürlich haben wir dann auch andere Leute gefragt, Mitschüler und Lehrer, welche uns dann mehr oder weniger bei kleineren Fehlern helfen konnten. Nur mal ein Beispiel:
Wir haben unseren Lehrer zur Hilfe geholt, um zu schaffen, dass sich die beiden Shapes "berühren" können, also nich einfach durch sich durch flitzen. Er hat es auf uns so erklärt, wie es auch im Programm steht. Später durften wir dann von einem Mitschüler, der sich ganz gut mit Porammierung usw. auskennt, erfahren, dass man das schlauererweise mit dem Radius des Kreises und nach jedem Schritt hätte prüfen müssen. Schon blöd, finde ich. Und Leute, ich habe meine Probleme ausfürhlich geschildert, aber hab ich dazu schon Lösungsansätze gehört? Ich glaube nur einen. Und ohne menschliche Hilfe geht das alles leider nicht so gut, nur Theorie bringt einem Einzelnen dann doch nichts. Soll heißen, dass ich mich schon ausführlicher damit beschäftigt habe (Tuts...)!
Ja ich weiß, muss blöd rüberkommen, wenn ich einfach so frage ob das nicht jemand machen kann, aber erstens ist die Jugend heutzutage faul^^ und zweitens komm ich alleine einfach nicht mehr weiter (mein "Freund" kümmert sich überhaupt nicht um die ganze Sache). Und außerdem, fragen schadet doch nichts, oder? Aber war ja irgendwie klar, dass man dann erstmal solche beiträge um die Ohren gepfeffert bekommt. Was bringts denn? Nichts! Es ist nich produktiv. Anstatt einfach auf die Fragen, Probleme einzugehen und meine Frage "macht das jemand?" zu ignorieren oder kurz und bündig zu sagen "Nein, mach ich nicht"....

MfG


PS: Codekrams folgt gleich!

just.cause 3. Mai 2009 13:51

Re: Problem mit "Programm" für die Schule
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Image1: TImage;
    procedure keypress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.keypress(Sender: TObject; var Key: Char);
var d:real;
begin
d:=sqrt((shape1.Left - shape2.Left)*(shape1.Left - shape2.Left)+(shape1.Top - shape2.top)*(shape1.Top - shape2.top));
if (key ='s') and (d>=shape1.width) then shape1.top:=shape1.top +10;
if (key ='w') and (d>=shape1.Width) then shape1.top:=shape1.top -10;
if (key ='d') and (d>=shape1.Height) then shape1.Left:=shape1.Left +10;
if (key ='a') and (d>=shape1.Height) then shape1.left:=shape1.left -10;

label1.Caption:=inttostr(shape1.top);
label2.Caption:=inttostr(shape1.Left);

if (key ='k') and (d>=shape1.width)then shape2.top:=shape2.top +10;
if (key ='i') and (d>=shape1.width)then shape2.top:=shape2.top -10;
if (key ='l') and (d>=shape1.Height)then shape2.Left:=shape2.Left +10;
if (key ='j') and (d>=shape1.Height)then shape2.left:=shape2.left -10;

label3.Caption:=inttostr(shape2.top);
label4.Caption:=inttostr(shape2.Left);

end;



procedure TForm1.FormCreate(Sender: TObject);
var d:real;
begin
d:=sqrt((shape1.Left - shape2.Left)*(shape1.Left - shape2.Left)+(shape1.Top - shape2.top)*(shape1.Top - shape2.top));
if (d>=shape1.width) or (d>=shape1.height) then showmessage ('tagged!');
end;

end.
[edit=mkinzler]Delphi-Tag ergänzt. das nächste Mal bitte selber machen. Mfg, mkinzler[/edit]

Luckie 3. Mai 2009 13:53

Re: Problem mit "Programm" für die Schule
 
Zitat:

Zitat von just.cause
PS: Codekrams folgt gleich!

Aber bitte in einem neuen Thread mit einer konkreten Frage und einem aussagekräftigen Titel. Damit hier die Diskussion nicht unnötig weitergeht, mache ich hier dicht.

Mist zu spät.

thkerkmann 3. Mai 2009 17:05

Re: Problem mit "Programm" für die Schule
 
Wir sollten mal die Schärfe rausnehmen, und uns um das Problem kümmern.

Zitat:

Zitat von just.cause
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var d:real;
begin
  d:=sqrt((shape1.Left - shape2.Left)*(shape1.Left - shape2.Left)+(shape1.Top - shape2.top)*(shape1.Top - shape2.top));
  if (d>=shape1.width) or (d>=shape1.height) then showmessage ('tagged!');
end;

end.

Ist so ziemlich unsinnig. Warum solltest Du beim Programmstart auf Kollision prüfen.
Das gehört woanders hin.

Delphi-Quellcode:
procedure TForm1.keypress(Sender: TObject; var Key: Char);
var d:real;
begin
  d:=sqrt((shape1.Left - shape2.Left)*(shape1.Left - shape2.Left)+(shape1.Top - shape2.top)*(shape1.Top - shape2.top));
  if (key ='s') and (d>=shape1.width) then shape1.top:=shape1.top +10;
  if (key ='w') and (d>=shape1.Width) then shape1.top:=shape1.top -10;
  if (key ='d') and (d>=shape1.Height) then shape1.Left:=shape1.Left +10;
  if (key ='a') and (d>=shape1.Height) then shape1.left:=shape1.left -10;

  label1.Caption:=inttostr(shape1.top);
  label2.Caption:=inttostr(shape1.Left);

  if (key ='k') and (d>=shape1.width)then shape2.top:=shape2.top +10;
  if (key ='i') and (d>=shape1.width)then shape2.top:=shape2.top -10;
  if (key ='l') and (d>=shape1.Height)then shape2.Left:=shape2.Left +10;
  if (key ='j') and (d>=shape1.Height)then shape2.left:=shape2.left -10;

  label3.Caption:=inttostr(shape2.top);
  label4.Caption:=inttostr(shape2.Left);

end;
Ist schon sehr schön, aber ich würde das mit einer case Anweisung machen. Ist aber Geschmackssache.

Den Code zur Berechnung des Abstandes würde ich aber in eine Funktion auslagern, da du ihn für die Kollisionsprüfung nochmal brauchst.

also: im private Abschnitt die Funktion deklarieren, und dann im Code Bereich erstellen.

Delphi-Quellcode:
  ...
  private
    function CalcAbstand: real;
  ...

Implementation
  ....

  function TForm1.CalcAbstand: real;
  begin
    result := sqrt((shape1.Left - shape2.Left)*(shape1.Left - shape2.Left)
                 + (shape1.Top - shape2.top)*(shape1.Top - shape2.top));
  end;
jetzt kannst Du die in deiner keypressed prozedur verwenden:

Delphi-Quellcode:
procedure TForm1.keypress(Sender: TObject; var Key: Char);
var d:real;
begin
  d := CalcAbstand;
  ...
end;
und die Kollisionsprüfung gehört an's Ende der keypressed Prozedur erneut hin.
Allerdings ist deine Prüfung genau verkehrt herum.

Delphi-Quellcode:
  ...
  d := CalcAbstand;
  if (d < shape1.width) or (d < shape1.height) then // hier die Bedingung richtig schreiben
    showmessage('tagged!');
end;
Dann sollte es klappen.

BAMatze 3. Mai 2009 19:55

Re: Problem mit "Programm" für die Schule
 
Also keine Ahnung was ich da mit irgendwelchen Kugeln machen wollt oder was auch immer. Also wenn ich mich zurück in meine Schulzeit erinnere (auch wenn wir da noch TP 7 hatten) hatten wir auch ne Aufgabe 1 Spiel zu programmieren, dabei geht es eigentlich nicht darum eine neues Spiel zu erfinden, sondern eigentlich die Tätigkeiten auszuüben, die zum Programmieren gehören. Also mein Tip für euch, weil es ja anscheinend schon eng wird, tritt deinem "Kumpel" in den A... und schnappt euch das gute alte Packman. Schafft euch ein zufällig erstelltes Spielfeld (bestehend aus Gold und Minen ( hier solltet ihr ein wenig Gehirnschmalz mal reinstecken für den Punkt: was wenn nur noch Minen da sind) und wann ist ein Level zu Ende).
Die Grundlagen für die Bewegung habt ihr schon, so wie ich das sehe, Punktezählsystem und Lebenssystem und schon seit ihr fertig. Damals habe ich so eins im Textmodus in 10h geschrieben, wir hatten aber auch einen guten Lehrer also plant mal etwas mehr Zeit ein.

Ich denke das sind schon ziemlich gute Tips für dich wie man es machen kann. Ob du es machst k.A. ist auch nicht meine Note und wie es rüber kommt, suchst du noch eine Methode, "wo kann ich abschreiben, ohne dass es auffällt" mit deiner Frage, ob es jemand mal "schnell" machen, anstatt auf die einfachst zu kommen, es selber machen.

MfG
BAMatze

just.cause 3. Mai 2009 21:17

Re: Problem mit "Programm" für die Schule
 
Zitat:

Schafft euch ein zufällig erstelltes Spielfeld (bestehend aus Gold und Minen...
Wir sollen eigentlich "Gelerntes" in dieser Aufgabe anwenden. Wie man aber ein Spielfeld erstellt mit irgendwelchen Minen oder Gold, welches man einsammeln kann, kann ich als Anfänger schlecht wissen, außer ich frage nach genau dem Sachverhalt wieder irgendwo nach...
Ich glaube, das Beste wäre, wenn ich jetzt erstmal an meinem "Spiel" dranbleibe. Sich jetzt an etwas komplett Neues ranzusetzen, um das nur halb fertig bzw. halb richtig zu haben am Ende, wäre eher unproduktiv meiner Meinung nach. Da habe ich lieber ein eher simples Programm, welches dafür anständig läuft und fertig ist. Aber trotzdem danke für den Tipp/Denkanstoß :wink:

Und jetzt noch einmal zum eigentlichen Thema:
Wollte es eben mal so wie von thkerkmann geschrieben ausprobieren, allerdings gibt Lazarus die Fehlermeldung "Die Datei "" konnte nicht gefunden werden. Überprüfen sie den Suchpfad in Projekt->Compilereinstellungen...->Andere Unitdateien." raus, wenn ich auf das grüne Pfeilchen klicke...
Naa gut, abgesehen davon, hat jemand vielleicht eine sinnvolle Idee, die man auch ohne großen Aufwand und ohne viel Fachwissen, vielleicht mit ein wenig Hilfe von jemandem, mit in das Tickspiel einbauen kann?

MfG :)

Patrick L. 3. Mai 2009 22:21

Re: Problem mit "Programm" für die Schule
 
Was du noch gebrauchen könntest, ist eine Procedure setFaenger, die nach bestimmten Intervall den Gegner wechselt. Wer soll denn den Punkt bekommen, wenn kein Spieler als Fänger ausgewählt ist. :wink:
Wenn der Spieler gefangen wurde gibt es für den Fänger ein Punkt und dann muss die Sperre wieder gelöst werden, das müsstest du auch noch einbinden.
Die Bewegung der Kreise musst du auch noch ändern, derzeit ist es nur möglich eine Kugel zu steuern.
Wie man die Steuerung trennen könnte, weiß ich nicht. Vielleicht könnte man für jede Kreissteuerung eine Procedure schreiben und die in verschiedene Threads einordnen. Aber wie man nun ein Onkeypress Ereigniss für mehrere Tasten macht ist die Frage, denn es wird ja immer nur ein Key übergeben.

just.cause 4. Mai 2009 14:16

Re: Problem mit "Programm" für die Schule
 
Erst einmal DANKE für die jetzt doch noch ankommende Hilfe :)

Soo...Also, ich bin jetzt erst einmal so weit, dass ich die Shapes mit den Tasten steuern kann und sobald sie sich berühren, kommt die Message.
Wie aber kann ich denn den Fänger "setten"?? Und wie weise ich dann diesem genau eine Punktzahl zu? Also, dass es für denjenigen immer einen Punkt dazugibt, kriege ich glaube ich auch noch hin...aber wem oder was genau müsste ich das zuordnen?
Und zweitens, wie kann ich die beiden Shapes wieder auf ihre ursprüngliche Position springen lassen, sobald sie sich berührt haben und man die Message weggeklickt hat?

Erst einmal so viel, wenn das dann klappt, kann man immer noch weitersehen^^
Hoffe mal, es ist einigermaßen verständlich ausgedrückt :P

MfG

Patrick L. 4. Mai 2009 16:35

Re: Problem mit "Programm" für die Schule
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal was geschrieben.

Delphi-Quellcode:
...
var
  akSp: integer=1;
  pkSp: array [1..2] of integer;
  run: boolean=true;

implementation

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
VAR Select:integer;
begin
if Run=true then
begin
  case Key of
  's': shape1.top:=shape1.top+10;
  'w': shape1.top:=shape1.top-10;
  'd': shape1.Left:=shape1.Left+10;
  'a': shape1.left:=shape1.left-10;
  'k': shape2.top:=shape2.top+10;
  'i': shape2.top:=shape2.top-10;
  'l': shape2.Left:=shape2.Left+10;
  'j': shape2.left:=shape2.left-10;
  end;

rungame;
end
Else
begin
Select:=MessageDlg('Sie wurden gefangen! Möchten Sie weiter spielen?',mtConfirmation,[mbYes,mbNo],0);
  case Select of
  mrYes: begin
          Shape1.Top:=128;
          Shape1.Left:=144;
          Shape2.Top:=128;
          Shape2.Left:=416;
          Run:=true;
          end;
  mrNo: close;
  end;
end;
end;

procedure TForm1.RunGame;
var abstand:real;
x1,y1,x2,y2:real;
begin
x1:=Shape1.Left+Shape1.Width/2;
x2:=Shape2.Left+Shape2.Width/2;
y1:=Shape1.Top+Shape1.Height/2;
y2:=Shape2.Top+Shape2.Height/2;
abstand:=sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))-105;
 if abstand<0 then
  begin
  pkSp[akSp]:=pkSp[akSp]+1;
  Label4.Caption:=inttostr(pkSp[1])+':'+inttostr(PkSp[2]);
  run:=false;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
akSP:=setGegner(akSp);
end;

function TForm1.setGegner(aksp:integer):integer;
begin
if aksp=1 then result:=2
else result:=1;
Label3.Caption:='Spieler '+inttostr(result)+' du bist dran!';
end;
Leider weiß ich noch nicht, wie man die Kreise zur gleichen Zeit steuern kann. Vielleicht mit GetAsyncKeystate() und einer Procedure die immer wieder aufgerufen wird.

just.cause 4. Mai 2009 21:36

Re: Problem mit "Programm" für die Schule
 
Also mein Programm habe ich soweit jetzt erst einmal fertig.
Könntest du deinen Ansatz vielleicht noch einmal uppen, also auch Unit.pas usw? Dann könnte ich mich da, wenn ich Zeit habe, mal reingucken und evtl. was dazulernen.
Wenn du das nicht möchtest, ist auch nicht so schlimm^^
Aber vielleicht könntest du dann dennoch versuchen, zu erklären, was die Zeilen ungefähr aussagen bzw. tun? Wäre echt nett :)

MfG

Patrick L. 4. Mai 2009 22:28

Re: Problem mit "Programm" für die Schule
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich stell dir mal das komplette Project rein, dann kannst du das mal durcharbeiten. Aber erklären kann ich dir nichts, da sind keine besonderen Befehle dabei, das müsstest du alles können schließlich ist das Grundwissen. :roll: Ich weiß zwar nicht wie viel ihr im Unterricht schon durchgenommen habt, aber meinem Infolehrer wäre das für 10 Stunden zu wenig.

Teekeks 5. Mai 2009 05:38

Re: Problem mit "Programm" für die Schule
 
Zitat:

Zitat von Patrick L.
aber meinem Infolehrer wäre das für 10 Stunden zu wenig.

Unser hat uns die Grundlagen(die ich zu der Zeit schon alle konnte) in einer Doppelstunde erklärt. :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 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