![]() |
Hilfe mit Canvas für Schiffe versenken.
Hallo Delphi-Praxis-User :),
momentan bin ich dabei Delphi zu erlernen und ein Schiffe versenken zu programmieren. Ich habe mir vorgestellt das Ganze mit Canvas zu erstellen und habe ein Gitter in eine PaintBox gezeichnet, für was ich schon ewig gebraucht habe, da ich null Ahnung habe, wie die Befehle heißen und wie die Syntax aussieht. Nun habe ein 12x12 Gitter und würde gerne wissen, wie ich die Zellen einzeln ansprechen kann (OnClick, Wert zuweisen, ob Schiff gesetzt, nicht gesetzt). Ich denke man könne das am Besten mit Koordinaten erledigen. Mein Gitter habe ich mit folgender Prozedur gezeichnet, wobei MaxFelder=12 und Höhe,Breite,Position der Zelle im Vorraus festgelegt:
Code:
Ich hoffe ihr könnt mir helfen,
Canvas.Brush.Style := bsClear;
for x := 1 to MaxFelder do for y := 1 to MaxFelder do begin Pen.Color := clGray; Rectangle(CellRect(Canvas, x, y)); end; MfG Lasbr #Achja vor lauter lauter vergessen: Was ich suche sind zum Beispiel Onclick Befehle mit bestimmter Koordinate einer Zelle |
AW: Hilfe mit Canvas für Schiffe versenken.
Nimm doch ein Grid, dann kannst du bei einem Klick feststellen, welche Zeile/Spalte gedrückt wurde. Wenn du das in einer Paintbox machst, wird es ein wenig schwieriger.
|
AW: Hilfe mit Canvas für Schiffe versenken.
Zitat:
|
AW: Hilfe mit Canvas für Schiffe versenken.
Welche Grid kannst du mir da empfehlen? Stringgrid? Ich finde die Lösung mit dem Canvas halt einfach schön :D !
Wie würde ich denn ermitteln wo der Klick war und welches Kästchen welchen Pixeln entspricht? Danke für die schnelle Antwort |
AW: Hilfe mit Canvas für Schiffe versenken.
Wenn Du die Breite eines Rechtecks und die X-Koordinate der Maus weißt, kannst Du mit ganzzahliger Division den 0-basierten Index der Zelle errechnen, analog verhält es sich mit der Y-Achse.
|
AW: Hilfe mit Canvas für Schiffe versenken.
Liste der Anhänge anzeigen (Anzahl: 1)
Gegen TPaintBox spricht nichts, obwohl ich eher TImage empfehlen würde, da so der Inhalt erhalten bleibt. Bei TPaintBox muss man es eben nachzeichnen, falls sich ein Fenster drüber legt.
Ich hab hier schon mal jemandem geholfen und einen Beispiel-Code veröffentlicht, finde es aber nicht mehr. Deshalb veröffentliche ich es erneut. Es bleibt dir überlassen ob du es ganz nimmst oder nur Anregungen draus holst. Auf jeden Fall wird das über TImage angesteuert. Das Programm nennt sich Wild Jagt, ist aber das gleiche Prinzip wie Fische versenken. |
AW: Hilfe mit Canvas für Schiffe versenken.
Nein. Eine Paintbox ist schon das richtige Kontrollelemnet zum selber Zeichnen. Heißt auch nicht umsonst Paintbox.
|
AW: Hilfe mit Canvas für Schiffe versenken.
Eben, und wenn man deren OnPaint-Ereignis zum Zeichnen verwendet, muss man da auch nichts händisch nachzeichnen.
|
AW: Hilfe mit Canvas für Schiffe versenken.
Zitat:
Vorteil beim Image ist, dass bei einem Form-Refresh einfach das bereits gezeichnete Bild erneut angezeigt wird und nicht komplett neu gezeichnet werden muss. Der Unterschied sollte auf aktuellen Rechnern allerdings nicht bemerkbar sein. |
AW: Hilfe mit Canvas für Schiffe versenken.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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