AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schiffe versenken

Ein Thema von kindliche kaiserin · begonnen am 17. Feb 2010 · letzter Beitrag vom 28. Feb 2010
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Schiffe versenken

  Alt 18. Feb 2010, 20:25
*grml* CP
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Schiffe versenken

  Alt 18. Feb 2010, 20:31
In wie vielen Foren wird denn zur Zeit an deinem Problem gearbeitet?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kindliche kaiserin

Registriert seit: 17. Feb 2010
16 Beiträge
 
#13

Re: Schiffe versenken

  Alt 18. Feb 2010, 20:35
Mit diesem hier drei. Tut mir leid. Stütze mich aber nur noch auf dieses hier..
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Schiffe versenken

  Alt 18. Feb 2010, 20:55
Guten Abend,

Schiffeversenken basiert doch auf einem Spielfeld mit x * y Kästchen (Quadraten).

Als Spielfeld würde sich hier ein Delphi-Referenz durchsuchenDrawGrid anbieten.
Dieses kannst Du zellenweise, spaltenweise, zeilenweise ansprechen.

Damit sollte es auch ohne Probleme möglich sein, wenn ein Schiff platziert wird;
zu Überprüfen ob die Felder schon belegt sind.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
kindliche kaiserin

Registriert seit: 17. Feb 2010
16 Beiträge
 
#15

Re: Schiffe versenken

  Alt 18. Feb 2010, 21:18
@Klaus: Hmm...wäre möglich, aber jetzt habe ich mich schon so lange mit dem TImage rumgeschlagen, jetzt kann ich das auch damit zu Ende bringen..^^ Mir kam gerade folgende Idee:

Delphi-Quellcode:
procedure TForm1.img_menschMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var x_hilf, xs, y_hilf, ys, h, i: integer;
begin
  if (hoehe=0) and (laenge=0) then
    showmessage('Bitte wählen Sie ein Schiff aus.')
  else
    begin
      x_hilf:=X div 25; y_hilf:=Y div 25;
      xs:=x_hilf*25; ys:=y_hilf*25;
        if xs+laenge>250 then
          showmessage('Das Schiff muss sich komplett innerhalb des Feldes befinden.')
        else if ys+hoehe>250 then
          showmessage('Das Schiff muss sich komplett innerhalb des Feldes befinden.')

        else for h:=0 to laenge do
          if (img_mensch.Canvas.Pixels[xs+h,ys-12]=clgreen) or
             (img_mensch.Canvas.Pixels[xs+h,ys+hoehe+12]=clgreen) then
              showmessage('Die Schiffe dürfen sich nicht überlagern bzw. nebeneinander sein.')
        else for i:=0 to hoehe do
          if (img_mensch.Canvas.Pixels[xs-12,ys+hoehe]=clgreen) or
             (img_mensch.Canvas.Pixels[xs+laenge+12,ys+hoehe]=clgreen) then
              showmessage('Die Schiffe dürfen sich nicht überlagern bzw. nebeneinander sein.')
        else if (img_mensch.Canvas.Pixels[xs-12,ys-12]=clgreen) or
                (img_mensch.Canvas.Pixels[xs+laenge+12,ys-12]=clgreen) or
                (img_mensch.Canvas.Pixels[xs+laenge+12,ys+hoehe+12]=clgreen) or
                (img_mensch.Canvas.Pixels[xs-12,ys+hoehe+12]=clgreen) then
              showmessage('Die Schiffe dürfen sich nicht überlagern bzw. nebeneinander sein.')
        else
          .
          .
          .
          .
    end;
end;
Mit den letzten beiden Bedingungsüberprüfungen würde zwar reintheoretisch jeder einzelne Punkt um das Schiff herum geprüft werden, jedoch muss da irgendwo noch ein Fehler drin sein. Wenn ich das erste Schiff platzeiren will - also es kann rein theoretisch zu keinem Konflikt kommen, da es kein Schiff kreuzen kann - kommt trotzdem die Meldung "Die Schiffe dürfen...".

Also meiner Meinung nach ist mein Ansatz schon richtig, nur finde ich den Fehler darin nicht..
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: Schiffe versenken

  Alt 18. Feb 2010, 21:25
Wie schon in der DF gesagt: Ich würde einfach ein 2D Array nehmen. Mit der Annahme das alle Objekte gleich groß sind.
Dann kannst du die Daten aus dem "2D Array" auch jeder Zeit neu zeichnen und außerdem kannst du in diesen Fall ganz leicht die Position bestimmen, die angeklickt wurde. Das Array muss nicht mal Dynamisch sein. Die Kollisions Erkennung wird zum Kinderspiel.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
KB-Selbst

Registriert seit: 3. Okt 2005
Ort: Haßfurt
4 Beiträge
 
Delphi 7 Professional
 
#17

Re: Schiffe versenken

  Alt 19. Feb 2010, 09:02
Zitat von kindliche kaiserin:
nur finde ich den Fehler darin nicht..
Ich rate dringend von so einer Formatierung ab.

Es ist aus dem äußerden Bild, das durch die Formatierung vorgegeben wird, nicht ersichtlich, dass die For-Schleife mit Laufvariable H den kompletten Rest des Posting beinhaltet. Das erschwert die Fehlersuche erheblich. Warum befindet sich denn in keiner der Abfragen eine der Laufvariablen der For-Schleifen?
  Mit Zitat antworten Zitat
kindliche kaiserin

Registriert seit: 17. Feb 2010
16 Beiträge
 
#18

Re: Schiffe versenken

  Alt 19. Feb 2010, 09:56
Zitat von KB-Selbst:
Zitat von kindliche kaiserin:
nur finde ich den Fehler darin nicht..
Ich rate dringend von so einer Formatierung ab.

Es ist aus dem äußerden Bild, das durch die Formatierung vorgegeben wird, nicht ersichtlich, dass die For-Schleife mit Laufvariable H den kompletten Rest des Posting beinhaltet. Das erschwert die Fehlersuche erheblich. Warum befindet sich denn in keiner der Abfragen eine der Laufvariablen der For-Schleifen?

Sorry, aber ich habe jetzt deine Frage nicht ganz verstanden..
Und welche Abfragen meinst du jetzt speziell?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Schiffe versenken

  Alt 19. Feb 2010, 10:06
Ich denke, er meint z.B. das hier:
Zitat:
Delphi-Quellcode:
for i:=0 to hoehe do
          if (img_mensch.Canvas.Pixels[xs-12,ys+hoehe]=clgreen)
Hier machst Du (hoehe + 1)-mal dasselbe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kindliche kaiserin

Registriert seit: 17. Feb 2010
16 Beiträge
 
#20

Re: Schiffe versenken

  Alt 19. Feb 2010, 10:09
Das habe ich gerade schon gefunden und verbessert, trotzdem funktioniert es noch nicht..:/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     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 08: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