Thema: Delphi Schiffe versenken

Einzelnen Beitrag anzeigen

kindliche kaiserin

Registriert seit: 17. Feb 2010
16 Beiträge
 
#1

Schiffe versenken

  Alt 17. Feb 2010, 10:18
Hallo,
ich habe folgendes Problem. Wie der Thread-Titel schon sagt, möchte ich gerne das Spiel Schiffe versenken programmieren. Nur komme ich jetzt nicht weiter.
Ich habe auf meinem Formular zwei Image-Felder...einmal das Spielfeld des Computergegners und einmal eigene Feld. Außerdem noch fünf unterschiedlich große Imagefelder, die die Schiffe darstellen. Wenn man nun auf ein Schiff klickt, werden die Höhe und Breite der Felder in den Speicher geladen. Dann soll man auf das eigene (Image-)Spielfeld klicken, damit dort das Schiff an der jeweiligen Stelle eingesetzt wird.
Beim Klick auf das Spielfeld werden auch die Koordinaten des Mausklicks in den Speicher geladen, damit man dann den Startpunkt für das Rechteck hat, welches dann mithilfe der Variablen Höhe und Breite vom Schiff in das Spielfeld gezeichnet wird.
Nur funktioniert das nicht alles so, wie ich es mir vorstelle. Wenn ich in die linke obere Ecke des Feldes klicke, welche ja die Koords (0,0) haben müssten, werden aber die Koords (737,437) geladen.

Hier der Quellcode:

Delphi-Quellcode:
procedure TForm1.img_menschMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var x_hilf, xs, y_hilf, ys: integer;
begin
  if (hoehe=0) and (laenge=0) then
    showmessage('Bitte wählen Sie ein Schiff aus.')
  else
    begin


      x_hilf:=X div 25; y_hilf:=Y div 25;
      xs:=x_hilf*25; ys:=y_hilf*25;
      img_mensch.canvas.pen.color:=clblack;
      img_mensch.Canvas.Pen.Width:=0;
      img_mensch.canvas.brush.color:=clgreen;
      img_mensch.canvas.moveto(xs,ys);
      img_mensch.Canvas.Rectangle(xs, ys, xs+laenge, ys+hoehe);
      X:=0; Y:=0; hoehe:=0; laenge:=0;
    end;
end;
Die Variablen "laenge" und "hoehe" habe ich global deklariert.


Kann mir bitte jemand sagen, wo bei mir der Fehler liegt?


Danke!
  Mit Zitat antworten Zitat