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 5 von 19   « Erste     345 6715     Letzte »    
TForm1

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 20:11
Also ich würde, wie Sir Rufo schon gesagt hat erst einmal Zettel und Stift zur Hand nehmen und grob die Benutzeroberfläche zeichnen und dir erst eimal darüber Klar werden, wie dein Programm aussehen soll, was passieren soll wenn man auf den und den Button bzw. Feld klickt. D.h. ganz logisch das gesamte Programm erst einmal konzipieren und noch keinen Gedanken daran verschwenden, wie es dann umgesetzt werden soll.

Wenn du das alles gemacht hast kannst Du dir die grobe Strukturierung des Codes überlegen, d.h. noch nicht in Einzelheiten verfallen, sondern dir z.B. überlegen wie viele Units du brauchst(wenn du z.B. mehrere Fenster verwendest), wie diese miteinander verbunden werden sollen und welche Prozeduren du benötigst und was diese wiederum machen sollen.
Und dann müsstest Du auch schon das haben, was dein Lehrer von dir bis Dienstag verlangt hat.

Danach kannst Du den Code ganz in Ruhe umsetzen.
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 20:25
Wofür bräuchte ich mehrere Units?
Und ich muss aber meine Sachen die ich aufgemalt habe irgendwie so verabreiten dass ich das Dienstag abgeben kann.. Ich bin echt überfordet mit dem Versuch wenigstens etwas zu haben
  Mit Zitat antworten Zitat
TForm1

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 20:43
Mehrere Units bräuchtest du nur dann, wenn Du mehrere Fenster haben willst. Du brauchst ja so oder so 2 Spielfelder für die beiden Spieler. Dann solltest Du z.B. schon mal wissen, ob Du beide Felder in einem Fenster hast (Was allerdings unsinnig wäre da sich dann ja die Spieler gegenseitig aufs Spielfeld gucken könnten, aber das ist programmiertechnisch egal) oder ob Du die Felder nacheinander ein- und ausblenden lassen willst sodass immer das Feld des Spielers, der gerade am Zug ist, aktiv ist. Das sind so grundlegende Sachen, da würde ich mich erst mal entscheiden. Wie Du das dann realisierst, kannst du dann im 2. Schritt überlegen.

Ich weiß ja nicht, in welcher Form dein Lehrer die Projektplanung verlangt, aber grundsätzlich würde es ausreichen, wenn Du im 2.Schritt die Struktur des Quellcodes(z.B. welche Prozeduren benötigt werden) als Diagramm (mit Pfeilen usw.) aufzeichnest. Das kannst Du aber erst machen, wenn Du mit Schritt1 fertig bist.

Deswegen würde ich erst mal zur Ruhe kommen und noch mal ganz von Vorne logisch dein Programm aufbauen.
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 20:57
Ok ich werde mich morgen nochmal hier melden..
Müsste das ja in paar Stunden morgen hinkriegen /:

Aber nochmal zu den Feldern..
Ich hab mir gedacht, dass ich nur ein Feld mache , wo Schiffe zufällig aufgeteilt werden..
Desweiteren hat dann ein Spieler Zeit , diese Schiffe zu suchen und ''zerstören''.
Das wichtige dabei ist dann, wie viel Züge er dafür braucht..
Diese Züge werden dann am Ende zusammengerechnet und gelangen in den Highscore.
So wäre meine Idee gewesen..
Da ich glaube, dass es mit einem 2 Feld und einem Computer noch schwieriger ist.
  Mit Zitat antworten Zitat
TForm1

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

AW: Schiffe versenken programmieren

  Alt 12. Jan 2014, 21:16
Achso, dann habe ich das falsch verstanden. Ich habe gedacht, Du wolltest ein Spiel für 2 Spieler machen, die sich dann abwechselnd gegenseitig "beschießen".
So ist das natürlich deutlich einfacher.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#46

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 00:45
Mal ne Frage (auch an Popov):

Habt ihr das Spiel "Schiffe versenken" verstanden?
Jep.

Zitat:
Meines Wissens nach gibt es für die Platzierung folgende Regeln:
Steht in etwa auch so in Wikipedia.

Zitat:
Mit diesen Regeln ist es unerheblich zu wissen, welches Schiff es ist, sondern kann durch das Auswerten der Nachbarfelder (horizontal, vertikal) herausfinden ob das Schiff versenkt ist oder nicht.
Jajn. Auf dem Papier ist das sehr einfach. Deshalb sind das auch die Regeln für die Papiervariante, denn bei so einem Aufbau:

Code:
0000000000
XXXXX00000
X000000000
X000000000
0000000000
0000000000
weiß man auf dem Papier nicht ob das ein 5'er und dein 2'er Schiff ist, oder ein 4'er und ein 3'er.

Deshalb auf dem Papier:

Code:
0000000000
XXXXX00000
0000000000
X000000000
X000000000
0000000000
Nun ist die Sache klar. Auf dem Papier.

Nun eine Computerversion:

Code:
0000000000
2111100000
2000000000
2000000000
0000000000
0000000000
Kein Problem, hier kann man erkennen welches Feld für welches Schiff gilt.

Aber bleiben wir mal bei den Regeln für Papierversion. Hier zwei Varianten nebeneinander:

Code:
0000000000 0000000000
XXXXX00000 1111100000
0000000000 0000000000
X000000000 2000000000
X000000000 2000000000
0000000000 0000000000
Welche Version ist leichter auszuwerten? Bei der linken Version mußt man erst mit einer Logik das Schiff lokalisieren, dann erkennen um welches es sich handelt, dh. dazu muss man nicht nur Felder zählen, sondern erkennen wo das Schiff einen Anfang und wo Ende hat. Dann zählt man die Felder dazwischen. Sorry, das ist aber mit Verlaub die komplizierteste aller Arten wie man das Problem angehen muss, denn man muss hier eine Logik programmieren. Bei der zweiten Variante weiß ich, dass Schiff 1 fünf Felder lang ist. Jetzt brauche ich nur noch alle Felder prüfen. Finde ich keine 1 mehr auf dem Feld, weiß ich, dann Schiff 1 versunken ist.

Zitat:
@Popov

Eine Textaufgabe löst man, indem man den Sinn versteht, in einzelnen logischen Teile zerlegt und sich den passenden Rechenweg überlegt.
Dann fängt man an zu rechnen.
Ja. Aber wenn nach zwei Tagen immer noch die Bitte zu hören ist, dass die Idee für den Anfang fehlt, dann sollte man vielleicht ein Ziel vorschlagen. Das ist wie mit einer Reise in den Urlaub wo man am Flughafen steht und nicht weiß wo man eigentlich hin will.

Was ich mit meinem abgewandeltem Tic Tac Toe geboten habe ist ein Ziel auf das man hinarbeiten kann. Man fängt auch kein Haus zu bauen ohne zu wissen wie es aussagen will. Das Ziel ist vorgegeben. So abwegig ist also meine Hilfe mit dem Raster nicht.

Auf der andere Seite ist die Diskussion wohl aber eher akademisch, denn ich hab das Gefühl, dass der TE sich auf StringGrid eingeschossen hat.
  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
 
#47

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 01:22
Das mit dem Haus ist ein gutes Beispiel.

Bevor auch nur ein Stein bewegt wird (Umsetzung) wird eine Zeichnung erstellt (Plan).
Bei Software sind die Steine Codezeilen und die Zeichnung eben der Plan.

Die Aufgabe, die der TE zu erfüllen hat besteht aus einem Plan (Deadline Dienstag) und dem fertigen Programm (Deadline in 2 Monaten).

Daraus folgere ich: Code hilft ihm im Moment nicht weiter, das Zwischenziel am Dienstag (Plan) zu erreichen.

Die Ermittlung ob ein Schiff versenkt wurde, kann mit meiner Methode per Rekursion ermittelt werden (beliebt bei Info-Lehreren)
Etwas Ähnliches wird benötigt um die Positionierung des Schiffs zu überprüfen.

Des Weiteren würde ich die Schiffe über eine Lookup-Tabelle identifizieren. Dadurch kann das Spielfeld bleiben, wie es ist (und die Schusslogik) auch wenn die Anzahl und Größe der Schiffe variiert.

BTW: In einen Plan gehören auch diese unterschiedlichen Lösungsansätze (auch deiner) mit rein und man vergleicht die Vor- und Nachteile. Dann entscheidet man sich für einen Weg und der wird dann umgesetzt.
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
Popov
(Gast)

n/a Beiträge
 
#48

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 02:12
Wobei ich mir schon vorhin überlegt habe wozu überhaupt ein Array nötig ist. Man kann genauso gut 10 Arrays für 10 Schiffe erstellen, die Größe entspricht der Länge der Schiffe, Typ TPoint. Die Koordinate wo sich die Schiffe befinden (bzw. jedes Teil des Schiffes) ist nicht in dem Feld vermerkt, sondern in TPoints des Schiff-Arrays, z. B. var Kreuzer1: array[1..5] of TPoint; . Schießt der Gegner, prüft man nicht das Feld, sondern geht alle Schiffe durch und prüft auf Treffer.

So würde ich das angehen, weil am einfachsten. Aber das ist nicht die klassische Methode und ich weiß nicht was der Lehrer sehen will.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 11:19
Wobei ich mir schon vorhin überlegt habe wozu überhaupt ein Array nötig ist. Man kann genauso gut 10 Arrays für 10 Schiffe erstellen, die Größe entspricht der Länge der Schiffe, Typ TPoint. Die Koordinate wo sich die Schiffe befinden (bzw. jedes Teil des Schiffes) ist nicht in dem Feld vermerkt, sondern in TPoints des Schiff-Arrays, z. B. var Kreuzer1: array[1..5] of TPoint; . Schießt der Gegner, prüft man nicht das Feld, sondern geht alle Schiffe durch und prüft auf Treffer.

So würde ich das angehen, weil am einfachsten. Aber das ist nicht die klassische Methode und ich weiß nicht was der Lehrer sehen will.
Einfacher als

Delphi-Quellcode:
if Feld[X,Y] <> Wasser then
  Treffer;
Naja
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Schiffe versenken programmieren

  Alt 13. Jan 2014, 11: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
Antwort Antwort
Seite 5 von 19   « Erste     345 6715     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 18:55 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