Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schiffe versenken (https://www.delphipraxis.net/49945-schiffe-versenken.html)

huefte 18. Jul 2005 18:47


Schiffe versenken
 
Hallo zusammen

Ich habe letzte WOche mit nem Freund zusammen das Spiel "Schiffe versenken" programmiert!
Da es jetzt noch in der Anfangsphase ist, kann man nicht sagen, dass es was tolles ist!

Worum es mir geht:
Wie mache ich, dass mir angeziegt wird, wenn ich ein Schiff versenkt habe? Also ich schieße drauf und es werden auch Treffer gemeldet, aber wenn ich dann das Schiff komplett zerstört habe, kommt halt nichts!
Hier weiß ich nicht weiter! Weiß nicht, wie ich das programmieren soll!

Kann mir vielleicht jemand helfen?

Gruß huefte

PS: Habe in ähnlichen Thread gesucht, aber dabei nicht wirklich was gefunden!

Speedmaster 18. Jul 2005 18:48

Re: Schiffe versenken
 
Jedes Schiff hat eine bestimmte Anzahl an Trefferpunkten( Felder ), bei jedem Treffer überpüfst du ob alle Felder getroffen worden sind, wenn ja....

huefte 18. Jul 2005 18:50

Re: Schiffe versenken
 
Ja so vom Prinzip hab ich mir das auch gedacht, aber ich weiß nicht wie ichs umsetzen soll! Er muss sich ja dann jedes Schiff bzw. die entsprechenden Felder merken! Und dann erst kann er rpüfen ob alle getroffen sind!

sniper_w 18. Jul 2005 19:06

Re: Schiffe versenken
 
Ich nehme an, dein Feld ist X*Y Gross. Dein Schiff ist durch eine menge von Punkten definiert, nehme ich auch an.
So, in etwa:
Delphi-Quellcode:
type MyFied=array[0..MAX_WIDTH,0..MAX_HEIGHT]of integer;
MYShiff=record
definition:array of TPoint;
live:integer;
end;
Nun jetzt, wenn auf eine x,y Koordinate geschossen wird, prüft man ob sich ein Schiff bzw derren Teil dort befindet. Wenn ja dann ist:
Delphi-Quellcode:
 GetroffeneSchiff.Live := GetroffeneSchiff.Live - 1;
Und wenn
Delphi-Quellcode:
GetroffeneSchiff.Live=0
whar ist , dann ist dein Schiff komplet gesunken.
Wichtig:
Am Anfang des Spieles muss man Live Variable richtig setzen, d.h., sollte ein Schiff aus 4 Punkten bestehen, dann ist entsprechende Live Variable auf 4 zu setzen.
Hofe, das hilft weiter...

huefte 18. Jul 2005 19:07

Re: Schiffe versenken
 
Das ist ja schon mal was. Leider sieht alles etwas anders aus. Naja ich muss mal in diese Richtung überlegen und wenn ich dann weiter eure Hilfe brauch, meld ich mich wieder, zusammen mit dem Quellcode

SirThornberry 18. Jul 2005 21:11

Re: Schiffe versenken
 
Ich hab auch mal ein Schiffeversenken programmiert und eignetlich ist das kein Problem. Wahre einfach die Objektorientierung. Ich hab einfach ein Spielfeld gehabt welches Schiffe besitzt. Wenn ein Schiff an eintsprechender Stelle war wurde dem Schiff-Object mitgeteilt an welcher Stelle es getroffen wurde. Und da Schiffobject hat in dem Zug gleich selbst geprüft ob es versenkt wurde oder nicht und dementsprechend ein Event gewurfen.

Quelltext auszug:
Delphi-Quellcode:
if Assigned(fOnShipDone) and (GetHits = ShipSize) then
 fOnShipDone(Self, ShipSize, RotateVal, GetShipRect.TopLeft);
Kurz und Knapp: Bau das ganze Objectorientiert und die Probleme lösen sich von selbst

huefte 24. Jul 2005 13:26

Re: Schiffe versenken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

Hatte noch keine Zeit mich um das Problem zu kümmern! Wollte noch den Quellcode nachreichen! Aber ich bin kein so guter Programmierer! Liegt aber weniger an mir, sondern eher an unserer Lehrerin, die selbst oftmals keine Ahnung hat! ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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