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!