AGB  ·  Datenschutz  ·  Impressum  







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

Schiffe versenken programmieren

Ein Thema von leodinho · begonnen am 11. Jan 2014 · letzter Beitrag vom 4. Mär 2014
Antwort Antwort
Seite 3 von 19     123 4513     Letzte »    
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#21

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 15:54
Ich würde mir vielleicht erst mal dieses Tutorial hier anschauen, ist zwar kein Schiffe versenken, aber von der Grundart (Spielfeld usw.) sehr ähnlich. Dabei lernt man auch gleich die grundsätzliche Verwendung von Bitmaps und wie man darauf zeichnet. Das ist zwar deutlich umständlicher, aber dafür ist der Lerneffekt größer . Danach kannst Du ja versuchen das Konzept soweit auf dein Konzept zu übertragen.
  Mit Zitat antworten Zitat
leodinho

Registriert seit: 9. Dez 2013
58 Beiträge
 
#22

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 15:56
Ok habe ich jetzt gemacht..
12x12 Spielfeld aufgezeichnet ..
Ist bloß scheiße wenn die Schiff zufällig drauf sein sollen /:
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#23

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:01
@leodinho

Meine Frage zu diesem Zeitpunkt ist: welche Programmierkenntnisse habt ihr?

Die Frage ist wichtig, denn ein Problem kann man verschieden anpacken. Man kann z. B. eine TSchiffeVersenken Klasse erstellen. Nur stellt sich die Frage ob der Lehrer dir das dann auch abnimmt. Hat ihr das schon durchgekommen? Oder ohne Klasse. Soll alles einfach oder bunt sein, usw.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:08
So langsam bekomme ich lust Schiffe versenken zu programmieren...

1:1 über tcp/ip in Firemonkey 3d und so...

Sollen wir einfach mal?

Mavarik
  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
 
#25

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:09
Ok habe ich jetzt gemacht..
12x12 Spielfeld aufgezeichnet ..
Ist bloß scheiße wenn die Schiff zufällig drauf sein sollen /:
Und, wo ist das Problem?

Suche dir einen zufälligen Punkt und eine zufällige Richtung (links, oben, rechts, unten).
Jetzt versuchen das Schiff anhand der Vorgabe zu platzieren.
Wenn das nicht geht, dann neuer Punkt neue Richtung

Wenn das geht dann zum nächsten Schiff
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
leodinho

Registriert seit: 9. Dez 2013
58 Beiträge
 
#26

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:19
@ Mavarik
Kannst du gerne machen jedoch hilft mir das auch nicht weiter, wenn ich ein fertiges Programm oderso hätte..

@ Popov

Wir haben halt alle Grundlagen von Algorhtymenstrukturen zu Variablen bis hin zu Schleifen und Verkettunken und noch am Ende Sortier und Such - Algorythmen..
Das Problem: Viele aus meiner Klasse müssen halt nur eine Datenbank eines Sportvereins etc erstellen , was nicht so schwer ist.. Ich hab halt die Aufgabe bekommen ein Programm zu programmieren /:
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#27

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:19
Ich hab hier ein Ansatz, ein Spielfeld. Benötigt wird eine PaintBox. Das habe ich mal für Tic Tac Toe erstellt. Ich hab es nur auf 12 Felder erweitert. Das Feld ist simpel und die Ansteuerung ist simpel. Vielleicht bringt es dich auf eine Idee.
Delphi-Quellcode:
const
  MaxFelder = 12;

//Breite der Zelle
function CellWidth(Canvas: TCanvas): Integer;
begin
  with Canvas do
    Result := (ClipRect.Right - ClipRect.Left) div (MaxFelder + 1);
end;

//Höhe der Zelle
function CellHeight(Canvas: TCanvas): Integer;
begin
  with Canvas do
    Result := (ClipRect.Bottom - ClipRect.Top) div (MaxFelder + 1);
end;

//Rect-Bereich der Zelle
function CellRect(Canvas: TCanvas; x, y: Integer): TRect;
begin
  with Canvas do
    Result := Rect(x * CellWidth(Canvas), y * CellHeight(Canvas),
      (x + 1) * CellWidth(Canvas), (y + 1) * CellHeight(Canvas));
end;

//Text in Zelle mittig plazieren (horizontal und vertikal)
procedure CellRectText(Canvas: TCanvas; x, y: Integer; Text: String);
var
  a, b: Integer;
begin
  with Canvas do
  begin
    //Vermittelt Text in Höhe und Breite
    a := (CellWidth(Canvas) div 2) - (TextWidth(Text) div 2);
    b := (CellHeight(Canvas) div 2) - (TextHeight(Text) div 2);

    with Canvas do
      TextRect(CellRect(Canvas, x, y), (x * CellWidth(Canvas)) + a, (y * CellHeight(Canvas)) + b, Text);
  end;
end;

procedure DrawMatrix(Canvas: TCanvas);
var
  x, y: Integer;
  s: String;
begin
  with Canvas do
  begin
    Font.Color := clBlack;
    Font.Style := [] + [fsBold];

    //X-Koordinaten-Beschriftung zeichnen (1, 2, 3, ...)
    y := 0;
    for x := 1 to MaxFelder do
    begin
      s := IntToStr(x);
      CellRectText(Canvas, x, y, s);
    end;

    //Y-Koordinaten-Beschriftung zeichnen (A, B, C, ...)
    x := 0;
    for y := 1 to MaxFelder do
    begin
      s := Chr(y + 64); //64 ist das Ascii-Zeichen für @, ein Zeichen vor A
      CellRectText(Canvas, x, y, s);
    end;

    //Beispiel
    CellRectText(Canvas, 3, 5, 'X');
    CellRectText(Canvas, 6, 9, 'X');
    CellRectText(Canvas, 4, 7, 'O');


    //Gitter zeichnen
    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;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with PaintBox1 do
    DrawMatrix(Canvas);
end;
  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
 
#28

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:28
@Popov

Das ist aber der Teil der zum Schluß kommt. Der TE hat aber bis jetzt nur den linken Fuß gehoben.
Von losgehen oder Schluß in Sicht kann man hier nicht sprechen.

Von daher trägt dein Beitrag im Moment nur zur Verwirrung bei.
Zu einem späteren Zeitpunkt wird dieser Beitrag sehr hilfreich 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
leodinho

Registriert seit: 9. Dez 2013
58 Beiträge
 
#29

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:38
Ja ich wollte es auch grad schreiben..
Ich bin mir unschlüssig wie ich nun das Feld erstellen soll..
Soll ich es mit einer Imagekomponente oder mit einem StringGrid machen?
Ich weiß einfach nicht wie ich anfangen soll..
Aufgemalt habe ich auch schon alles aber hilft auch nicht /:
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#30

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 16:51
@Sir Rufo

Da bin ich vorläufig einer anderen Meinung. Im Grunde würde ich die evtl. zustimmen, aber unter anderen Umständen. Ich weiß auf was du hinaus willst. Zuerst zwei Arrays erstellen, Schiffe platzieren und das Ganze trocken abspielen. Und wenn alles funktioniert, kümmern wir uns um die Ausgabe.

Auf der anderen Seite fragt der TE schon seit zwei Tagen und bis auf warme Worte hat er bisher nichts bekommen, d. h. der hat noch nicht mal den ersten Schritt gemacht.

Der Code oben ist ein mögliches Ziel. Er kann sich auch ein anderes entwickeln, aber es ist vorläufig ein Ziel. Ein Feld von 12x12. Auf das hin kann er hinarbeiten.

Wenn du aber meinst, dass kein professioneller Programmierer so arbeitet, er ist kein professioneller Programmierer.

@leodinho

Als der Lehrer Aufgaben verteilte hast du vermutlich gedacht eine leichtere Aufgabe ergattert zu haben. Das war vermutlich kein guter Gedanke.

Du überlegst nun das Ganze mit einem StringGrid zu lösen, weil es ja schon das typische Feld hat. Ich denke nicht, dass das ein guter Gedanke ist. Es hat Vorteile, man muss nichts zeichnen, aber das Beispiel oben zeigt, dass das Zeichnen das kleinste Problem ist. Die Nachteile die ein StringGrid mit sich bringt kommen später.

Geändert von Popov (12. Jan 2014 um 16:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 19     123 4513     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 04:18 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