AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Hilfe mit Canvas für Schiffe versenken.
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe mit Canvas für Schiffe versenken.

Ein Thema von Lasbr · begonnen am 26. Jun 2015 · letzter Beitrag vom 27. Jun 2015
Antwort Antwort
Seite 1 von 2  1 2      
Lasbr

Registriert seit: 26. Jun 2015
3 Beiträge
 
#1

Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 19:33
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:
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;
Ich hoffe ihr könnt mir helfen,
MfG Lasbr

#Achja vor lauter lauter vergessen: Was ich suche sind zum Beispiel Onclick Befehle mit bestimmter Koordinate einer Zelle
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 20:26
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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:00
Ich habe mir vorgestellt das Ganze mit Canvas zu erstellen und habe ein Gitter in eine PaintBox gezeichnet, ... Was ich suche sind zum Beispiel Onclick Befehle mit bestimmter Koordinate einer Zelle
Du kannst beim Klick in eine Paintbox lediglich ermitteln, auf welcher X-Y-Koordinate der Klick erfolgt ist. Je nach Größe deiner Rechtecke, die du da in die Paintbox zeichnest, errechnest du davon ausgehend das Kästchen, das angepeilt wurde. Eine Paintbox ist nicht in Spalten und Zeilen aufgeteilt, auch wenn du solche dort hineinzeichnest.
  Mit Zitat antworten Zitat
Lasbr

Registriert seit: 26. Jun 2015
3 Beiträge
 
#4

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:01
Welche Grid kannst du mir da empfehlen? Stringgrid? Ich finde die Lösung mit dem Canvas halt einfach schön !
Wie würde ich denn ermitteln wo der Klick war und welches Kästchen welchen Pixeln entspricht?
Danke für die schnelle Antwort
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:05
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:05
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.
Angehängte Dateien
Dateityp: zip Wild Jag.zip (162,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:10
Nein. Eine Paintbox ist schon das richtige Kontrollelemnet zum selber Zeichnen. Heißt auch nicht umsonst Paintbox.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:11
Eben, und wenn man deren OnPaint-Ereignis zum Zeichnen verwendet, muss man da auch nichts händisch nachzeichnen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:14
Nein. Eine Paintbox ist schon das richtige Kontrollelemnet zum selber Zeichnen. Heißt auch nicht umsonst Paintbox.
Ob PaintBox oder Image ist doch völlig egal. Bei beiden wird gezeichnet und wenn man sich geschickt anstellt sind die Zeichenroutinen sogar absolut gleich.

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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#10

AW: Hilfe mit Canvas für Schiffe versenken.

  Alt 26. Jun 2015, 21:25
Welche Grid kannst du mir da empfehlen? Stringgrid? Ich finde die Lösung mit dem Canvas halt einfach schön !
Wie würde ich denn ermitteln wo der Klick war und welches Kästchen welchen Pixeln entspricht?
Danke für die schnelle Antwort
Mit OnSelectCell bekommst du die Zeile und Spalte übergeben, aber du kannst natürlich auch die Rechnerei machen, wie die anderen beschrieben haben.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz