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 11 von 19   « Erste     91011 1213     Letzte »    
Benutzerbild von Mavarik
Mavarik

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

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 13:20
Mit anderen Worten: du kannst nicht programmieren, möchtest aber ein Ergebnis vorweisen. Da gibt's eigentlich nur eine einzige Methode: Programmieren lernen.
Autsch!
Nun zieh dir doch nicht gleich jeden Schuh an
Sehr witzig... Danke... Hab dich auch lieb...
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#102

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 13:48
Sehr witzig... Danke... Hab dich auch lieb...
Du warst doch gar nicht gemeint
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#103

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 14:20
ja ich weiß was ich für möglichkeiten habe aber hab keine idee wie es gehen soll /:
Ist eigentlich das was ich am Anfang gemeint habe und was du nicht hören wolltest: Projektplanung ist schön und gut, aber man sollte vorher einen groben Plan haben wie man es später macht. Du hast einfach drauflos geplant ohne groß zu überlegen und hast dir nun paar Aufgaben aufgehalst die meiner Meinung nicht nötig gewesen wären, bzw. in der Projektplanung nicht hätten erwähnt werden müssen. Nun müssen sie umgesetzt werden. Als Beispiel wäre da die Regel, wonach die Schiffe nicht aneinander stoßen dürfen. Das hat bei der Papiervariante einen Sinn, ist bei der EDV-Variante nicht unbedingt nötig:
Code:
X...
X...
XXXX

1...
1...
2222
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.

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).
  Mit Zitat antworten Zitat
Romiox

Registriert seit: 14. Okt 2010
Ort: Ruhrpott
57 Beiträge
 
#104

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 14:51
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.
Janis F.
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 19:35
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..
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#106

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 20:17
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.
Angehängte Dateien
Dateityp: zip schver.zip (198,6 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
leodinho

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

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 20:35
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#108

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 20:59
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
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#109

AW: Schiffe versenken programmieren

  Alt 27. Feb 2014, 23:13
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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#110

AW: Schiffe versenken programmieren

  Alt 28. Feb 2014, 10:20
Natürlich weiß ich was ein array ist aber es fehlt mir am logischen denkvermögen, dies umzusetzen..
Spielfeld : array [1..12,1..12] of integer; oder
Spielfeld : array [0..11,0..11] of integer; (was Du für dicke Eier hälst ist Wissen)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 11 von 19   « Erste     91011 1213     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 11:57 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