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 16 von 19   « Erste     6141516 1718     Letzte »    
leodinho

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

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 14:47
Ich bekomm es einfach nicht hin, das ist das problem.. /:
ich schick euch einfach mal das was ich habe.. weiter bekomm ich das eh nicht hin -.-
Angehängte Dateien
Dateityp: rar Projekt -.rar (208,6 KB, 5x aufgerufen)
  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
 
#152

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:07
Ich bekomm es einfach nicht hin, das ist das problem.. /:
ich schick euch einfach mal das was ich habe.. weiter bekomm ich das eh nicht hin -.-
Ohne mir das jetzt anzuschauen, solange wie du es nicht schaffst ein großes Problem in kleinere Problemchen zu zerlegen, wirst du nicht programmieren können.

Einfach so drauf los funktioniert nicht, du musst dir vorher Gedanken über den Ablauf machen und dann kannst du diesen Ablauf umsetzen. Bei der Umsetzung bin ich gerne bereit zu helfen (wenn dann noch benötigt), aber von dem Ablauf habe ich von dir noch nichts gesehen.

So wie ich im vorherigen Beitrag den Schussablauf definiert habe kannst du auch die anderen Abläufe darstellen. Die Anzeige kannst du zunächst raus lassen, denn rudimentär ist die ja schon da (Ausgabe über die Konsole) und für einen Test reicht die aus. Schön kommt immer erst nach Funktion. Und Schiffe versenken funktioniert nicht ausschließlich mit bunten Bildern, sondern wird nur hübscher.
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
 
#153

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:15
Irgendwie beschleicht mich immer noch das Gefühl, du weißt gar nicht wie Schiffe versenken wirklich funktioniert, bzw. du hast das noch nicht in die wesentlichen Schritte zerlegt.
Doch. Ich hab in den letzten Jahren schon paar mal das Spiel programmiert. Du verwechselst da etwas, bzw. verstehst du nicht auf was ich hinaus will, bzw. verfolgst Regeln nicht nicht mehr Zeitgemäß sind.

Erstens: die Prozedur die ich vor paar Beiträgen gepostet habe ist keine Spielfeldanzeige, die kann man schöner machen, sogar mit Bitmaps usw., sondern lediglich eine Kontrollanzeige. Ich traue dir persönlich zu, dass du die gesamte Logik mit der Aufstellung der Schiffe beim ersten Mal und sofort fehlerfrei im Kopf durchdenkst und es fehlerfrei in Pascal runter programmierst. Natürlich wird alles fehlerfrei sein, vor allem die Schiffe im Array-Spielfeld plaziert. Ich denke aber nicht, dass der TE es so hinkriegt, zumindest beim ersten Mal nicht. Sätze des TE wie: "Lass ich jetzt per zufallsfunktion 3x 1er , 2x 2er, 1x 3er , 1x 4er zufällig auf das 12x12 anzeigen..? " lassen die Vermutung zu, dass da noch kein Plan dahinter steckt. Das klingt eher nach: lassen wir es mal runterplumpsen, es wird sich evtl. schon selbst sortieren. Ich denke eher es wird ein Prozess von Try and Error. Nur wie soll er es kontrollieren ohne den Inhalt des Array zu sehen? Selbst bei mir war die Aufstellung erst nach zwei Korrekturen fehlerfrei. Im Kopf war es schon beim ersten Mal richtig. Beim ersten Versuch platzierten sich aber keine Schiffe am Rand. Man denkt eben nicht an alles.

Also, ich hab das schon didaktisch durchdacht. Wenn du aber der Meinung bist, dass der TE den Algorithmus direkt hinkriegt, dann ja, dann kann man sich die Prüfanzeige sparen.

Zweitens: man sollte schon vorher überlegen wie man es später anzeigen wird. Wenn man das nicht macht, kann man später böse Überraschungen erleben.

Drittens: dein Konzept. Dein Konzept hält sich an die Papiervariante, wie sie in Wikipedia beschrieben wird. Und dieses Konzept ist nicht so ohne weiteres auf ein Programm übertragbar. Die Papiervariante funktioniert so: zwei Spieler zeichnen ein Spielfeld auf dem Blatt Papier und platzieren dort ihre Schiffe per menschlicher Logik und Kreuzchen. Im Spiel erkennt der Mensch mit seiner menschlichen Logik wenn alle Felder seines 4'er Schiffes getroffen wurden. Er meldet das Schiff dann als getroffen. Wie übertragen wir das nun auf ein Programm?

Du hast das Aufgezählt:
  1. Wasser
  2. Treffer
  3. Versenkt
  4. Flotte versenkt
  5. Auf das Feld wurde schon geschossen
  6. Koordinaten ausserhalb des Spielfelds

Das klingt toll, aber gehen wir der Reihe nach. Punkt 1 und 2 sind kein Problem, aber erkläre mir wie der TE nun erkennt, das ein Schiff versenkt wurde? Bei dir haben alle Schiffe wohl einen Wert. Einfach Schiff = 1, Wasser = 0. Zumindest habe ich das so verstanden (siehe Wasser, Schiff, Nahbereich). Natürlich ist das umsetzbar, aber was man am Anfang sich an Arbeit gespart hat, in dem man es simpel gemacht hat, muss man später kompliziert programmieren. Nun muss man Schiffe im Feld kompliziert erkennen.

Viertens: function SchussAuf . Du bist schon beim Feuern und mir hältst du vor, dass ich schon an die Anzeige denke. Wie wäre es wenn der TE erst die Schiffe automatisch auf dem Feld platziert, die den Regeln entsprechen? Das Feuern und anfragen ob ein Schiff getroffen wurde ist nicht wirklich kompliziert.

Fünftens: ich denke mir die Regeln die du favorisierst sind komplizierter als sie sein müssen. In der Computervariante des Spiels dürfen sich Schiffe berühren, sogar auf Stoß. Beim Programmieren hat man andere Möglichkeiten als auf dem Papier. Diese Regeln, die eigentlich nur für die Papier-Variante gelten, machen das für den TE komplizierter als es sein müsste.
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:32
ich würde mich über eine anmerkung zu meinem bisherigen programm freuen..

ich gehe ja logisch und in kleinen schritten vor aber wie soll ich ein schuss auf das feld machen, wenn nicht mal schiffe auf dem feld vorhanden sind??
  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
 
#155

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:38
@Popov

Wenn ich mit einer Aussage dich anspreche, dann schreibe ich @Popov oder zitiere etwas von dir und schreibe einen Kommentar dazu. Wenn ich den TE meine, dann schreibe ich einfach los.

Preisfrage, wen habe ich mit dem von dir zitierten Beitrag angesprochen?

Es kommt nicht auf zeitgemäße Regeln oder was auch immer an, sondern nur darauf, was in der Aufgabenstellung, bzw. was im Projektplan festgelegt ist (das gehört da mit rein). Wenn das fehlt, dann ist der Projektplan unvollständig.

Ja, so einfach ist das.

Des Weiteren befinden wir uns in der nächsten Phase der Programmentwicklung (nach dem Projektplan, der relativ grob das Projekt beschreibt) und konkretisieren die Abläufe weiter - aber wir sind noch nicht bei der Implementierung. Die kommt erst im nächsten Schritt.

Mein Beispiel mit dem Schuss war nur ein Wink mit dem Zaunpfahl, dass mit dieser konkrete Beschreibung (viel Text von mir) sehr leicht die Brücke zur Implementierung geschlagen werden kann (substantiell 1 Zeile Code).

Es geht nicht darum, ob du in der Lage bist Schiffe versenken ohne vorherigen Projektplan etc. zu implementieren, sondern dass die Aufgabenstellung lautet ein Projekt mit Projektplan zu implementieren. Und die Abfolge ist damit vorgegeben.

Nach jedem Schritt wird der Projektplan nochmals von allen Beteiligten überprüft und wenn alle nicken, dann erst dann wenn keine Fragen mehr offen sind, dann wird implementiert.

Das ist der Lerneffekt der mit der Aufgabenstellung provoziert werden soll.
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
 
#156

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:42
Wenn ich ehrlich bin , will ich e jetzt nicht mehr unbedingt lernen.. Ich will dieses projekt dann abgeben und sgen: ,,reicht mit programmieren'' da ich mich eher auf auf andere teilgebiete spezialisiere und das programmieren dann eh überflüssig ist..
Noch einmal die frage, ob ihr euch das programm mal angucken könntet, anstatt nur zu disskutieren? /:
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#157

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:46
@leodinho

Im Grunde hast du noch gar nichts. Es kann aber sein, dass ich schon wieder etwas nicht gelesen habe und du musst keine Schiffe automatisch platzieren. Was du hast ist schon mal das Highscore, aber das interessiert zu dem Zeitpunkt keinen, denn vom Spiel selbst ist noch keine Zeile programmiert. Mein Tipp: erzeuge ein neues Projekt und fange von vorne an.

Wir können dir am Anfang helfen, aber programmieren mußt du schon selber. Auch sollte dir klar sein, dass die Konzepte von mir und Sir Rufo unterschiedlich sind. Keines der Konzepte ist schlechter oder besser, nur unterschiedlich. Du kannst sie nicht in einem Projekt gleichzeitig umsetzten.

Bevor du dich aber für ein Konzept entscheidest, oder gar zwei parallel betreibst, ein kleine Hilfe für den Anfang. Du bist schon bei Highscore, hast aber noch keine Schiffe platziert. Bis die Schiffe platziert sind brauchst du dich nicht entscheiden, soweit kann ich dir helfen.

Hier etwas für den Anfang. Am Ende (es fehlen noch fünf weitere Funktionen) wird der Computer alle Schiffe nach deinen Regeln im Spielfeld platziert haben. Das ist noch nicht das Spiel, aber du hast dann ein mit Schiffen gefülltes Array-Spielfeld. Weitere Tipps gibt es wenn die drei Funktionen/Prozedur gefüllt sind.

Delphi-Quellcode:
implementation

const
  MaxFelder = 11; //12 Felder. Null wird gezählt, also 11.

type
  TSpielfeld = array[0..MaxFelder, 0..MaxFelder] of ShortInt;

var
  Feld: TSpielfeld;


//Löscht das Feld-Array mit Nullen.
procedure FeldLeeren;
begin
  //mit Code füllen
end;

//Prüft ob Zelle gültig ist, also im Feld liegt
function IstZelleGueltig(x, y: Integer): Boolean;
begin
  //mit Code füllen
end;

//Prüft ob Zelle frei ist, sich darin also kein anderes Schiff befindet
function IstZelleFrei(x, y: Integer): Boolean;
begin
  //mit Code füllen
end;
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 15:56
das problem dabei ist schon ,dass ich nichtmal weiß was ich beim ersten als code reinschreibe..
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#159

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 16:05
... sondern nur darauf, was in der Aufgabenstellung, bzw. was im Projektplan festgelegt ist (das gehört da mit rein). Wenn das fehlt, dann ist der Projektplan unvollständig.

Ja, so einfach ist das.
Da gebe ich die voll Recht. Sieh dir mal Beitrag #103 an, da habe ich das Gleiche an den TE geschrieben. Jetzt hat er es so geplant, jetzt muss er es umsetzten.

Zitat:
Des Weiteren befinden wir uns in der nächsten Phase der Programmentwicklung (nach dem Projektplan, der relativ grob das Projekt beschreibt) und konkretisieren die Abläufe weiter - aber wir sind noch nicht bei der Implementierung. Die kommt erst im nächsten Schritt.
Nun machen wir es nicht komplizierter als es sein muss. Selbst wenn du Recht hast, der TE ist kein Student der lernen soll wie es später im Berufsleben richtig geht, er soll nur etwas kleines programmieren.

Zitat:
Mein Beispiel mit dem Schuss war nur ein Wink mit dem Zaunpfahl
Dein Beispiel am Ende ist sogar richtig gut, vor allem die Anwendung der Konstanten, aber noch sind wir nicht so weit.

Ich denke der einzige Punkt in dem wir uns zurzeit wirklich unterscheiden ist, ob alle Schiffe ein Kreuzchen im Feld bekommen oder jedes Schiff eine eigene Nummer.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#160

AW: Schiffe versenken programmieren

  Alt 2. Mär 2014, 16:13
das problem dabei ist schon ,dass ich nichtmal weiß was ich beim ersten als code reinschreibe..
Sorry, aber das sind Grundlagen. Du hast ein globales Array und der ist mit Werten gefüllt, ob mit sinnlosen bei der Erstellung oder weil bereits ein Spiel gespielt wurde. In der Prozedur werden einfach alle Felder einfach auf Null gesetzt (vorläufig, später kann man das verbessern).

Du hast ein zweidimensionales Feld, somit kannst du das mit zwei Schleifen machen, z. B. X und Y, angefangen bei 0, weil das Array hier beide Male bei Null beginnt, bis zu der Konstante MaxFelder.

Du hast doch schon ein Spielfeld auf deinem Formular. Das muss vorerst mit einem Wert gelöscht werden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 16 von 19   « Erste     6141516 1718     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:54 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