AW: Schiffe versenken programmieren
Zitat:
|
AW: Schiffe versenken programmieren
Zitat:
|
AW: Schiffe versenken programmieren
Zitat:
Code:
In der Papier-Variante (oben) weiß man nicht zu welchem Schiff das Feld unten links gehört, in der EDV-Variante schon. Deshalb befolgen viele EDV-Spiele diese Regel nicht. Du hast sie in deine Planung aufgenommen, nun mußt du sie umsetzten. Ich denke mal das ist das absolut komplizierteste an der Aufgabe, alles andere ist eher simpel.
X...
X... XXXX 1... 1... 2222 Nun beginnt bekanntlich jede lange Reise mit dem ersten Schritt. Im Beitrag #96 habe ich dir einen Tipp gegeben: ein Feld erstellen. Hast du das bereits gemacht? Zeig mal wie es aussieht. Wenn der Teil ok ist, kann man sich an den nächsten Schritt wagen - Schiffe automatisch platzieren lassen (natürlich nach deinen Regeln aus deiner Projektplanung). |
AW: Schiffe versenken programmieren
Aber auch die zufällige Platzierung ist ein Teil, der sich dem Spiel ja vielleicht erstmal unterordnet. Man könte auch sagen ich habe 4 Layouts und wähle davon eins zufällig. Dann kann man hinterher immernoch einen Algorithmus implementieren der Layouts generiert, und sich erstmal auf die Logik konzentrieren, die das Spiel spielbar macht. Das heißt, erst mal machen wir das ganze spielbar, und dann kümmern wir uns um eigentlich nebensächliche Logik. Deine Arbeit befasst sich schließlich nicht mit dem generieren der Spielfelder, sondern mit dem Spiel selbst. Klar gehört das dazu, aber ich würde, grade in anbtracht der Tatsache, dass Du anscheinend noch eine ganze Menge lernen musst bis zur Umsetzung, eindeutige Prioritäten setzenm und zwar dahin gehend, dass zum Abgabetermin eine Runde Schiffe versenken spielbar ist.
|
AW: Schiffe versenken programmieren
Ich werde es einfach lassen.. es hat keinen sinn.. Danke für die Hilfe aber wenn ich davon Ahnung hätte, würde ich hier nicht fragen und warum dann einige meinen hier auf dicke eier zu machen und sich nur drüber lustig zu machen.. respekt.. danke an die, die es wenigstens versucht haben..
ich weiß weder wie ich n feld noch den rest programmiere.. :? |
AW: Schiffe versenken programmieren
Liste der Anhänge anzeigen (Anzahl: 1)
Was hast du dann in der Schule gelernt? Wieso übernimmst du die Aufgabe ein Programm wie Schiffe versenken zu programmieren, wenn du nicht mal die Kenntnisse hast wie man ein Feld erstellt, bzw. mit dem Feld ist ein Array gemeint. Dicke Eier? Du hast schon Tipps bekommen, auch gute, aber du hast irgendwann den Weg des kleinsten Wiederstandes gewählt und das akzeptiert was dir die Lösung liefert, ohne zu hinterfragen wieso und weshalb.
Also wenn du nicht mal in der Lage bist ein Array-Feld zu erstellen, dann hat das evtl. tatsächlich keinen Sinn. Ich könne dir nun zeigen wie du das Array erstellst, denn erstens ist es nur eine Zeile und zweitens mag ich im Grunde ich den Spruch von wegen - Lerneffekt - nicht. Trotzdem, wenn du es vorgesagt bekommst, dann verstehst du es nicht was das eigentlich soll und verstehst den Rest nicht. Wie ich schon sagte, im Beitrag #96 steht der erste Schritt. Willst du ein Tipp? Ok, hier ist ein Link zu einem Tutorial: http://de.wikibooks.org/wiki/Program...Pascal:_Arrays Lerne zuerst was Array sind (siehe Tutorial). Es ist nicht so schwer. Du benötigst ein Zweidimensionales Array, wg. Spielfeld 12x12. Wenn du das grob verstanden hast, kannst du den Rest hier fragen. Ich hab das das Programm (bzw. das Platzieren der Schiffe) zum Teil programmiert (siehe Anhang). Das kannst du auch. Ist im Grunde nicht wirklich schwer. Ich hab dazu folgende Prozeduren und Funktionen benötigt: Prozedur FeldLeeren Funktion IstZelleGueltig Funktion IstZelleFrei Funktion IstGueltigeZelleFrei Funktion IstZelleUndRandZoneFrei Funktion SchiffPositionHorizontal Funktion SchiffPositionVertikal Funktion EinSchiffPositionieren Funktion AlleSchiffePositionieren Ich hab die Berechnung in kleine Stücke zerteilt, wobei einige Funktion gerade mal eine Zeile groß sind. Der erste Schritt ist ein Feld generieren. |
AW: Schiffe versenken programmieren
Ich habe mir das Thema leider nicht selber ausgesucht /:
Danke, dass du dir wirklich die Zeit für einen hoffnungslosen fall machst /: Natürlich weiß ich was ein array ist aber es fehlt mir am logischen denkvermögen, dies umzusetzen.. Wie erstelle ich nun ein zeidimensionales array? var my2DIntArray : Array of Array of Integer; SetLength(my2DIntArray, 12); SetLength(my2DIntArray[0], 12); SetLength(my2DIntArray[1], 12); SetLength(my2DIntArray[2], 12); oder : var my2DIntArray : Array of Array of Integer; SetLength(mySecond2DIntArray, 12, 12); ... Wäre das eine Option? Ich werde mich dann morgen wieder melden, da ich es heute zeitlich nicht mehr schaffe. |
AW: Schiffe versenken programmieren
Hier eine Info an dich als Anfänger. Es gibt
- Statische Arrays (und) - Dynamische Arrays Vergiss mal die Dynamischen Arrays ganz schnell (als Anfänger). Sie sind nicht kompliziert, aber nach meiner Meinung sollte man erst die Statischen Arrays rauf und runter beherrschen. Erst dann sollte man sich an die an die Dynamischen wagen. Was du hier im letzten Beitrag geliefert hast sind Dynamische Arrays. Die brauchst du nicht. Du benötigst ein zweidimensionales Statisches Array. Wie gesagt, guck dir das Tutorial an, zusätzlich in Delphi die Hilfe aufrufen und im Register "Index" den Text "Statische Arrays" eingeben. Unter YouTube findet sich auch etwas: http://www.youtube.com/watch?v=1feCYnwB5DI |
AW: Schiffe versenken programmieren
Laß dich nicht von dir selbst entmutigen. Wenn die Einstellung stimmt wirst du hier immer Leute finden die dir gern weiterhelfen.
Weiteres kleines Array Beispiel: :)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const MaxRowCount = 2; MaxColCount = 2; type TIntegerArray = array [0..MaxRowCount - 1, 0..MaxColCount - 1] of integer; TFloatArray = array [0..MaxRowCount - 1, 0..MaxColCount - 1] of double; TStringArray = array [0..MaxRowCount - 1, 0..MaxColCount - 1] of string; var IntegerArray: TIntegerArray; FloatArray: TFloatArray; StringArray: TStringArray; Row, Col: integer; begin for Row := 0 to MaxRowCount - 1 do for Col := 0 to MaxColCount - 1 do begin IntegerArray[Row, Col] := 10 * Row + Col; FloatArray[Row, Col] := IntegerArray[Row, Col] / 3; StringArray[Row, Col] := 'Text ' + IntToStr(Row) + ' / ' + IntToStr(Col); end; for Row := 0 to MaxRowCount - 1 do for Col := 0 to MaxColCount - 1 do ShowMessage(Format('IntegerArray(%d %d) = %d', [Row, Col, IntegerArray[Row, Col]])); for Row := 0 to MaxRowCount - 1 do for Col := 0 to MaxColCount - 1 do ShowMessage(Format('FloatArray(%d %d) = %.4f', [Row, Col, FloatArray[Row, Col]])); for Row := 0 to MaxRowCount - 1 do for Col := 0 to MaxColCount - 1 do ShowMessage(Format('StringArray(%d %d) = %s', [Row, Col, StringArray[Row, Col]])); end; |
AW: Schiffe versenken programmieren
Zitat:
Delphi-Quellcode:
oder
Spielfeld : array [1..12,1..12] of integer;
Delphi-Quellcode:
(was Du für dicke Eier hälst ist Wissen)
Spielfeld : array [0..11,0..11] of integer;
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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