AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schiffe versenken, Platzierung
Thema durchsuchen
Ansicht
Themen-Optionen

Schiffe versenken, Platzierung

Ein Thema von m2zer0 · begonnen am 11. Mai 2010 · letzter Beitrag vom 8. Jun 2010
Antwort Antwort
Seite 3 von 4     123 4      
m2zer0

Registriert seit: 6. Mai 2010
19 Beiträge
 
#21

Re: Schiffe versenken, Platzierung

  Alt 31. Mai 2010, 14:56
Was kann man denn am besten für die Platzierung der Computer Schiffe benutzen?

Ich mach mir schon seit Tagen Gedanken darüber, nur ich komm nicht darauf wie ich es anstelle ohnen einen Quelltext von einem gigantischen Ausmaß zu bekommen..
  Mit Zitat antworten Zitat
m2zer0

Registriert seit: 6. Mai 2010
19 Beiträge
 
#22

Re: Schiffe versenken, Platzierung

  Alt 1. Jun 2010, 17:56
Die Platzierung hab ich nun auch gemeister. Nun kommt das Schießen
Da der Com nur zufällig schießen muss, muss ich es hinbekommen das ein Zufälliges Feld, das noch nicht beschossen wurde, beschossen wird. Wie kann ich das überprüfen? Geht das mithilfe eines Arrays?
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Schiffe versenken, Platzierung

  Alt 1. Jun 2010, 17:59
Naja, das ist eigentlich ganz einfach. Mit Hilfe von "random" erzeugst du dir zwei Zufalls-Zahlen von 0 bis 9, eine für die x-Richtung und eine für die y-Richtung. Dann überprüfst du in deinem Array mit den Feldern, ob das Feld bereits "beschossen" wurde. Wenn ja --> nochmal neue Zufallszahlen erzeugen (das ganze in einer Schleife, bis das Feld, das rauskommt, noch nicht beschossen wurde), wenn nein --> "schießen".

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
m2zer0

Registriert seit: 6. Mai 2010
19 Beiträge
 
#24

Re: Schiffe versenken, Platzierung

  Alt 1. Jun 2010, 18:13
habe ich bereits versucht, nur irgendwann ist die Wahrscheinlichkeit so gering das eine passende Zahl getroffen wird, das das Programm sich an der Schleife aufhängt.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#25

Re: Schiffe versenken, Platzierung

  Alt 2. Jun 2010, 22:50
Delphi-Quellcode:
var
NochNichtBeschossen: array[1..m,1..n] of integer; // m*n spielfeldgrösse, alle noch nicht beschossenen Felder enthalten true
AnzahlNochNichtBeschossen: integer;

procedure zielsuchen (var x,y: integer);
var i,j,z,h: integer;
begin
z := trunc(random(AnzahlNochNichtBeschossen))+1;
h := 0;
for i := 1 to m do
for j := 1 to n do
  if NochNichtBeschossen [i,j]
  then begin inc(h);
       if h=z then begin x:=i; y:=j; exit end;
       end;
end;
Vielleicht in etwa so?
  Mit Zitat antworten Zitat
m2zer0

Registriert seit: 6. Mai 2010
19 Beiträge
 
#26

Re: Schiffe versenken, Platzierung

  Alt 2. Jun 2010, 23:26
Könntest du die procedure noch einmal kurz erklären?
Müsste es nicht ein array of boolean sein?

Vielen Dank schonmal für die Hilfe
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#27

Re: Schiffe versenken, Platzierung

  Alt 3. Jun 2010, 15:56
entschuldige, natürlich boolean, im Kommentar steht ja auch: alle noch nicht beschossenen Felder enthalten true

Die Idee ist die: Wenn Du noch x nicht beschossene Felder hast, erzeugst Du eine Zufallsszahl n zwischen 1 und x und gehst dann im Feld zum n-ten noch nicht beschossenen Feld, die schon beschossenen Felder werden einfach übersprungen, ohne dass etwas passiert. Also bei jedem noch nicht beschossenen Feld den Zähler um 1 erhöhen, wenn Du bei n angelngt bist, die Prozedur (und die Schleife) verlassen.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#28

Re: Schiffe versenken, Platzierung

  Alt 3. Jun 2010, 16:04
NochNichtBeschossen: array[1..m,1..n] of integer; Finde ich besser. Hast du dir um die Zustände eines Feldes gedanken gemacht? Oder hälst du meherer Arrays vom Spielfeld?
Mir würden auf anhieb 4 Zustände einfallen: Boot getroffen, Boot nichtgetroffen, Wasser nicht beschossen, Wasser beschossen
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
m2zer0

Registriert seit: 6. Mai 2010
19 Beiträge
 
#29

Re: Schiffe versenken, Platzierung

  Alt 3. Jun 2010, 17:30
Ich benutze, wie bereits aus den vorherigen posts hervorgehend, ein Array of Char. Jedes Bot hat seinen eigenen Buchstaben, welcher sich nach dem Beschuss ändert. Gleiches gilt für das Wasser.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#30

Re: Schiffe versenken, Platzierung

  Alt 3. Jun 2010, 17:41
Zitat:
Oder hälst du meherer Arrays vom Spielfeld?
Ich möchte ja nicht das ganze Spiel programmmieren, sondern nur einen Vorschlag für das konkret formulierte Problem machen. Dafür ist boolean ausreichend.
Natürlich kann man die verschiedenen Zustände der Feldelemente in einer integer variablen oder sogar besser in einer Variablen vom Typ set of Aufzähltyp halten, und aufzähltyp ist dann etwas wie (IstWasser, IstBeschossen, IstAbgeschossen ....) und was auch immer noch an binären Zuständen benötigt wird.

Aber wie er m2zer0 seine Daten sonst organisiert, möchte ich ganz ihm überlassen (solange er nicht explizit danach fragt )

Ob es sinnvoll ist, in dem Feld jedem Boot einen anderen Buchstaben zuzuordnen, kann ich nicht sagen, weil ich mich mit dem Gesamtprogramm nicht beschäftigt habe, aus dem Bauch heraus würde ich sagen, eher nein, das schaut mir nicht nach einem sauberen Datenmodell aus, aber das muss letztlich der Programmierer entscheiden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 02:22 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