AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Minesweeper

Ein Thema von saii · begonnen am 21. Mär 2015 · letzter Beitrag vom 29. Mär 2015
Antwort Antwort
Seite 6 von 14   « Erste     456 78     Letzte »    
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#51

AW: Minesweeper

  Alt 25. Mär 2015, 11:30
Ich finde das mit den Panels gar nicht schlecht... Besser als Buttons...
Das mit den Panels finde ich persönlich auch praktisch, denn mann kann sie einerseits als "Schalfläche" darstellen und ohne großen Aufwand nach dem Linksklick als reine Anzeige für Freifläche oder Zahlendarstellung benutzen.

Einzig das Darstellen von Bildchen als Symbole (z.B Fähnchen) auf dem Panel ist umständlicher als bei der Verwendung von TSpeedButton oder TBitBtn.


Das ist auch der Grund wieso er den für den Profi aufwendigen Weg mit Panels geht, statt es anders (besser) zu machen.
Was wäre denn besser geeignet?
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#52

AW: Minesweeper

  Alt 25. Mär 2015, 11:32
Was wäre denn besser geeignet?
Ein fettes Image wo ich kleine Bildchen draufposte...

Da habe ich alle Freiheiten...

Mavarik
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#53

AW: Minesweeper

  Alt 25. Mär 2015, 11:48
Ein fettes Image wo ich kleine Bildchen draufposte...
Auch für jede Zahl und das Freifeld ein Image?

Gut, wären dann 13 Bildchen.
Zahlen 1-8, Leerfeld, Markierung, Bombe eplodiert, Bombe, Fragezeichen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#54

AW: Minesweeper

  Alt 25. Mär 2015, 11:49
Was wäre denn besser geeignet?
Eine Bitmap, bzw. eine Image oder Paint oder Formular. Einfach ein normales Feld in das man zeichnen kann.

Mal auf die Schnelle. Du benötigst eine Image Komponente. In OnMouseDown fragst du ab welches Feld geklickt wurde.

Delphi-Quellcode:
const
  MaxX = 20;
  MaxY = 20;
  CellWidth = 15;
  CellHeigth = 15;
  LineWidth = 1;

procedure TForm1.FormCreate(Sender: TObject);
var
  x, y: Integer;
begin
  with Image1.Picture do
  begin
    Bitmap.Width := (MaxX * (CellWidth + LineWidth)) + LineWidth;
    Bitmap.Height := (MaxY * (CellHeigth + LineWidth)) + LineWidth;

    for x := 0 to MaxX do
    begin
      Bitmap.Canvas.MoveTo(x * (CellWidth + LineWidth ), 0);
      Bitmap.Canvas.LineTo(x * (CellWidth + LineWidth ), Bitmap.Height);
    end;
    for y := 0 to MaxY do
    begin
      Bitmap.Canvas.MoveTo(0, y * (CellHeigth + LineWidth ));
      Bitmap.Canvas.LineTo(Bitmap.Width , y * (CellHeigth + LineWidth ));
    end;
  end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  c, r: Integer;
begin
  c := X div (CellWidth + LineWidth );
  r := Y div (CellHeigth + LineWidth );

  //Falls über das MaxX oder MaxY geklickt: -1
  if c > (MaxX - 1) then
    c := -1;
  if r > (MaxY - 1) then
    r := -1;

  Caption := Format('Feld geklickt: x = %d; y = %d', [c, r]);
end;
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#55

AW: Minesweeper

  Alt 25. Mär 2015, 12:04
Eine Bitmap, bzw. eine Image oder Paint oder Formular. Einfach ein normales Feld in das man zeichnen kann.
Schön, jetzt hast Du ein schönes Karofeld, welches Du anklicken kannst und Dir die gewünschten Werte gibt.

Aber es ist nun keine Funktionalität sichtbar. Schaltflächendesign / Anzeigedesign usw.
Das müsstest Du nun ja wiederum selbst implementieren um den Minesweeper-Look herzustellen.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#56

AW: Minesweeper

  Alt 25. Mär 2015, 12:41
@BadenPower

Und wo ist das Problem?

Ich wollte dir mit dem Beispiel nur zeigen, dass man innerhalb von fünf bis zehn Minuten ein Feld generieren kann und auch die Koordinaten abfragen kann. Du willst eine 3D-Zelle?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  BtnBmp: TBitmap;
begin
  BtnBmp := TBitmap.Create;
  with BtnBmp do
  try
    Canvas.Brush.Color := clBtnFace;
    Width := 20;
    Height := 20;

    Canvas.MoveTo(0, Height-1);
    Canvas.Pen.Color := clWhite;
    Canvas.LineTo(0, 0);
    Canvas.LineTo(Width-1, 0);
    Canvas.Pen.Color := clGray;
    Canvas.LineTo(Width-1, Height-1);
    Canvas.LineTo(0, Height-1);

    Self.Canvas.Draw(10, 10, BtnBmp);
  finally
    BtnBmp.Free;
  end;
end;
Auch fünf Minuten.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#57

AW: Minesweeper

  Alt 25. Mär 2015, 13:01
Es gibt doch mehrere Möglichkeiten, so etwas umzusetzen: entweder man schreibt etwas "Großes", das sich um die Darstellung sowie die komplette Logik kümmert oder man verwaltet mehrere "kleine" Komponenten, die jede für sich autark mindestens die Darstellung übernehmen. Was nun "besser" oder "schlechter" ist, muss jeder für sich selbst entscheiden.
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

Geändert von DeddyH (25. Mär 2015 um 13:55 Uhr)
  Mit Zitat antworten Zitat
puderle
(Gast)

n/a Beiträge
 
#58

AW: Minesweeper

  Alt 25. Mär 2015, 13:11
FILL-Algorithmus

"FLOODFILL" z.b. - so habe ich mein Minesweeper gemacht.

genau das passiert wenn du auf ein Feld klickst das keine Mine ist und andere umliegende Felder auch aufgedeckt werden müssen.

lass dich von den spaghetticode noobs hier nicht verwirren.. habe mir mal erlaubt deine frage zu beantworten xD

http://de.wikipedia.org/wiki/Floodfill

rekursiv(kürzer):
http://www.tutego.de/blog/javainsel/...llalgorithmen/

Geändert von puderle (25. Mär 2015 um 13:18 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#59

AW: Minesweeper

  Alt 25. Mär 2015, 13:39
habe mir mal erlaubt deine frage zu beantworten xD
Nein. Du hast lediglich die Anwesenden beleidigt:

lass dich von den spaghetticode noobs hier nicht verwirren
Herzlichen Dank auch.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#60

AW: Minesweeper

  Alt 25. Mär 2015, 16:28
@BadenPower
Ich wollte dir mit dem Beispiel nur zeigen, dass man innerhalb von fünf bis zehn Minuten ein Feld generieren kann und auch die Koordinaten abfragen kann.
Ja klar, man kann auch die Symbole, welche man anzeigen lassen will immer selbst zeichnen anstatt ein Bild davon in eine ImageList zu laden um es wieder zu verwenden.

Es ist doch wohl eher eine subjektive Frage ob man etwas bestehendes mit Funktionalität wie zum Beipiel ein Panel verwendet und nur Properties ändern braucht, als alles selbst zu Zeichnen und die gesamte Funktionalität und das optische Erscheinungsbild für alle ausführbaren Aktionen auch noch zusätzlich hinzufügen muss.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 14   « Erste     456 78     Letzte »    


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 15:51 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