AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Reversi-Probleme mit Funktionen
Thema durchsuchen
Ansicht
Themen-Optionen

Reversi-Probleme mit Funktionen

Ein Thema von tankm26 · begonnen am 12. Aug 2005 · letzter Beitrag vom 20. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#1

Reversi-Probleme mit Funktionen

  Alt 12. Aug 2005, 18:38
Hallo!


Bei meiner Informatik-HA hänge ich leider an folgenden Problemen:

1.Aufgabe 2 des Zettels, nämlich eine function 'pruefen' zu programmieren, die mir einzelne Teile eines Stringgrids/arrays auf den Inhalt/den zugewiesenen Wert überprüft, zu erfüllen.

1.2 wie man Problem 1 programmiert

2 wie man das Ergebnis, nämlich die Anzahl der eingeschlosssenen Gegnersteine, irgendwo anzeigt

3 wie man die function pruefen überhaupt in einer procedure aufruft


Das ich nicht erwarte, dass ihr die Hausaufgabe fertig programmiert, ist klar, aber für jeden Hinweis/Lösungsansatz wäre ich dankbar.

Wieland


oh mann, die sommerferien waren irgendwie zu lang, ich hab ja ALLES vergessen!
Angehängte Dateien
Dateityp: zip eigener_versuch__ohne_l_sungsansatz_108.zip (240,8 KB, 9x aufgerufen)
Dateityp: doc reversiaufgabe_203.doc (20,0 KB, 21x aufgerufen)
Wieland S.
  Mit Zitat antworten Zitat
Benutzerbild von NicNacMan
NicNacMan

Registriert seit: 28. Mai 2004
Ort: Hamburg
98 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Reversi-Probleme mit Funktionen

  Alt 13. Aug 2005, 15:23
hi,

ich würde in der function pruefen als erstes mal x mit dx bzw y mit dy vergleichen,
um raus zu bekommen, ob du die waagerechten, horizontalen oder diagonalen überprüfen musst.
dann natürlich die randwerte, also den ersten und letzten stein.

und an der spielfeldClick procedure würde ich auch nochmal was verändern.
Delphi-Quellcode:
if feld[spielfeld.Col, spielfeld.Row]=1 then // wieso 1, nimm doch rot
  begin
    dransein:=1; // bringt zwischen case dransein of rot: begin ... end; end; auch nicht sehr viel, wenn die konstante rot = 1 ist.
    feld[spielfeld.Col, spielfeld.Row]:=1; // is doch überflüssig
  end;
damit wäre dann die ganze abfrage mehr oder weniger überflüssig.
da das auch noch für den fall, dass dransein = blau ist vorkam,
konnte man den code deutlich vereinfachen.

statt deinen 28 zeilen wären es so nur 11;
Delphi-Quellcode:
if (feld[spielfeld.Col, spielfeld.Row] = 0) then
  begin
    feld[spielfeld.Col, spielfeld.Row] := dransein;
    case dransein of
      rot : dransein := blau;
      blau: dransein := rot;
    end;
    spielfeld.Refresh;
  end
else if (feld[spielfeld.Col, spielfeld.Row] <> dransein) then
  Application.MessageBox('Das Feld ist schon belegt!', 'Fehler');
The Double-Crunch-Peanuts!
SwapIt:
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#3

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 09:24
Danke schonmal für deine Mühe, den spielfeldclick-Quellcode habe ich schon ausprobiert, ich muss nur noch die Möglichkeit ergänzen, dass man nicht auf die Spielsteine der eigenen Farbe klicken darf.

Die pruefen-Funktion werde ich mir gleich mal überlegen.

edit:

Delphi-Quellcode:
das ist nun der fertige spielfeldclick-code

procedure TForm1.spielfeldClick(Sender: TObject);
begin
  if (feld[spielfeld.Col,spielfeld.Row]=0) then
  begin
    feld[spielfeld.Col,spielfeld.Row]:=dransein;
    case dransein of
      rot : dransein := blau;
      blau: dransein := rot; end;
    spielfeld.Refresh; end
else Application.MessageBox('Das Feld ist schon belegt!', 'Fehler');
end;
Wieland S.
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#4

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 10:33
also, aus dieser aufgabe/function pruefen werde ich nicht schlau....

gibt es da eine elegante Möglichkeit, bei der man sich nicht die Finger Wund tippt?
Vielleicht ein Beispiel für eine Richtung?
Wieland S.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 11:39
Ist doch eigentlich ganz einfach: du musst von x|y nach dx|dy überprüfen, welche steine des gegners eingeschlossen sind. schau dir ienfach mein kleines bild an
Miniaturansicht angehängter Grafiken
reversi1_957.jpg  
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#6

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 13:34
ich werde das mal durchdenken...

soll ich dann 'n paar zeilen schreiben für jede Richtung, mit ner for-Schleife?

edit 1: Oh mann, ich komm nich weiter und das nervt
Wieland S.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 13:54
ich würde so vorgehen:

1. zu prüfende Felder ermitteln:
a)waagerecht?: y=dy -> zu prüfende felder: x|y, x+1|, x+2| .... dx|y
b)senkrecht?: x=dx? -> zu prüfende felder: x|y, x|y+1,x|y+2 .... x|dy
c)diagonal?: selber machen

2. felder prüfen: mit for-schleife durchgehen und schauen: ist da ein gegnerischer stein? sind die steine in einer linie? usw. usf.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#8

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 13:56
ich werd mal drüber nachdenken. Aber ersteinmal muss ich glaube ich mal frische Luft schnappen. Danke schonmal.


so, jetzt wollen wir doch mal schauen...

sollen x und y jeweils die position des aktuell angewählten spielfeldes sein?

dx und dy die Begrenzung für 2.?

soll ich 1. mit if-formeln machen? womit sonst? for-schleifen? und vor allem was soll ich da schreiben?

ojeojeojeojeoje

so in etwa?

Delphi-Quellcode:
 x:=spielfeld.Row;
    y:=spielfeld.Col;
    label1.Caption:=IntToStr(x);
    label2.Caption:=IntToStr(y);
      if feld [(x+1),y]<>dransein then begin
        if feld [(x+2),y]<>dransein then begin
          if feld [(x+3),y]<>dransein then begin
           if feld [(x+4),y]<>dransein then begin
             if feld [(x+5),y]<>dransein then begin
               if feld [(x+6),y]=dransein then begin
                 zahl:=zahl+6;
wie kann ich die function pruefen eigentlichg einbauen?
etwa so?
label3.Caption:=IntToStr(pruefen);
Wieland S.
  Mit Zitat antworten Zitat
tankm26

Registriert seit: 18. Sep 2004
Ort: Wentorf
87 Beiträge
 
Delphi 7 Personal
 
#9

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 15:28
also, einbinden, muss ich dat folgendermaßen, oder?

label3.Caption:=IntToStr(pruefen(spielfeld.Col,spi elfeld.Row));
Wieland S.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Reversi-Probleme mit Funktionen

  Alt 14. Aug 2005, 15:35
Moin!

Rekursive Funktionen!

Beispiel dazu

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 17:30 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