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 1 von 2  1 2      
leodinho

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 15:31
Nein so ist das nicht.. Ich hab halt nur die Grundlagen in Info gelernt und in die Richtung waren wir noch nicht gegangen.. Ich hba halt das Problem , dass ich überhaupt nicht weiß wie ich anfangen soll bzw wie ich mit dem StringGrid arbeiten soll etc.. /:
  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
 
#2

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 15:37
Nein so ist das nicht.. Ich hab halt nur die Grundlagen in Info gelernt und in die Richtung waren wir noch nicht gegangen.. Ich hba halt das Problem , dass ich überhaupt nicht weiß wie ich anfangen soll bzw wie ich mit dem StringGrid arbeiten soll etc.. /:
Du sollst auch nicht mit dem StringGrid anfangen, sondern das Spielfeld auf ein Blatt Papier malen, das kann doch nicht so schwer 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
TForm1

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

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
 
#4

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
Benutzerbild von Sir Rufo
Sir Rufo

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

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
 
#6

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
Benutzerbild von Mavarik
Mavarik

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

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 10:22
@ Mavarik
Kannst du gerne machen jedoch hilft mir das auch nicht weiter, wenn ich ein fertiges Programm oderso hätte..
Danke für die Erlaubnis! Die Zielgruppe waren auch eher die Profis hier im Forum. Gedacht als kleine Abwechslung für zwischendurch.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

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
 
#9

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
 
#10

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
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 16:04 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