AGB  ·  Datenschutz  ·  Impressum  







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

Probleme bei Kniffel...

Ein Thema von VitroN · begonnen am 4. Jun 2007 · letzter Beitrag vom 6. Jun 2007
Antwort Antwort
VitroN

Registriert seit: 28. Jan 2007
6 Beiträge
 
#1

Probleme bei Kniffel...

  Alt 4. Jun 2007, 17:18
Hallo, bin im mom Kniffel am progen. Bin im mom bei der Kontrollstruktur für die "Große Straße" und komme da nicht weiter. Habe zu Beginn die Anzahl der Würfelaugen der einzelnen Würfel in einem Array sortiert und will dann mir mehreren verschachtelten If-Verzweigungen kontrolieren, ob es eine große Straße ist. Doch egal ob eine voriegt oder nicht, Delphi geht immer in den else-Fall.

Delphi-Code:
Delphi-Quellcode:
//SelectionSort für die Würfelaugen
for i:= 1 to 5 do
 begin
  index:=i;
  MinSoFar:=GrosseStrasse[i];
  for j:= i to 5 do
   begin
   if GrosseStrasse[j]<MinSoFar
    then
     begin
     MinSoFar:=GrosseStrasse[j];
     index:=j;
     end;
   end;
   x:=GrosseStrasse[i];
   GrosseStrasse[i]:=GrosseStrasse[index];
   GrosseStrasse[index]:=x;
  end;
//Kontrolle, ob Große Straße vorliegt
 if GrosseStrasse[1]+1=GrosseStrasse[2] then
  if GrosseStrasse[2]+1=GrosseStrasse[3] then
   if GrosseStrasse[3]+1=GrosseStrasse[4] then
    if GrosseStrasse[4]+1=GrosseStrasse[5] then
     begin
     y:=y+40;
     LGrosseStrasse.Caption:='40';
     LPunkteRechts.Caption:=inttostr(y);
     LGesamtRechts.Caption:=inttostr(y+strtoint(LGesamtLinksRechts.Caption));
     end
  else
   LGrosseStrasse.Caption:='0';


Hoffe hab alles gut genug erklärt und bedank mich schon mal für die Hilfe

VitroN

[edit=Matze][delphi]-Tags gesetzt. Zukünftig bitte selbst erledigen. Mfg, Matze[/edit]
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#2

Re: Probleme bei Kniffel...

  Alt 4. Jun 2007, 17:31
1. Hast Du das Array GrosseStrasse vor dem Sortieren mit den Würfelwerten befüllt?
2. ersetz doch mal diese unselige verschachtelte if-abfrage durch eine mit ands. Weil so wies hier steht weiss kein Mensch zu welchem if das else gehört (ja ich weiss normalerweise zum letzten, kann trotzdem niemand lesen).
Delphi-Quellcode:
  If (GrosseStrasse[2]=Succ(GrosseStrasse[1]))
  And (GrosseStrasse[3]=Succ(GrosseStrasse[2]))
  And (GrosseStrasse[4]=Succ(GrosseStrasse[3]))
  And (GrosseStrasse[5]=Succ(GrosseStrasse[4]))
  Then Begin
  //hier grosse Strasse
  End Else Begin
  //hier nicht
  End;
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Probleme bei Kniffel...

  Alt 4. Jun 2007, 17:45
ich hab mir auch mal kniffel geprogt, da sah das so aus:
(eer=einser,zer=zweier,der=dreier usw.)

Delphi-Quellcode:
if (der >= 1)and(ver >= 1)
and ( ((eer >= 1)and(zer >= 1))
     or((zer >= 1)and(fer >= 1))
     or((fer >= 1)and(ser >= 1)))
then
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
4. Jun 2007, 18:37
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Multimedia" verschoben.
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#5

Re: Probleme bei Kniffel...

  Alt 4. Jun 2007, 18:39
Interessant, wer hier schon alles Kniffel geproggt hat (mich eingeschlossen *gg*, hab mir für den Zettel sogar ne Kompo geschrieben). Bei mir sieht das so aus (ein Array für die Würfel 1 bis 5 und eins für die möglichen Augen 1 bis 6):
Delphi-Quellcode:
procedure TKnuffelzettel.werte2augen;
var i,j: integer;
begin
  FillChar(FAugen,SizeOf(FAugen),0);
  for i := 0 to 4 do
    begin
      j := Wuerfel[i];
      inc(FAugen[j - 1]);
    end;
end;

function TKnuffelzettel.GrStrasse: integer;
begin
  werte2augen;
  Result := 0;
  if ((FAugen[0] > 0) and (FAugen[1] > 0) and (FAugen[2] > 0) and (FAugen[3] > 0) and (FAugen[4] > 0)) or
     ((FAugen[1] > 0) and (FAugen[2] > 0) and (FAugen[3] > 0) and (FAugen[4] > 0) and (FAugen[5] > 0)) then
    Result := 40;
end;
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
Benutzerbild von HannosG
HannosG

Registriert seit: 2. Jul 2006
42 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Probleme bei Kniffel...

  Alt 4. Jun 2007, 18:56
@ dajuhsa:
Das war keine Große sondern eine Kleine Straße

Bei einer großen Straße müssen n[2..5] alle einmal vorhanden sein,
daher:
Delphi-Quellcode:
if (n[2]=1)and(n[3]=1)and(n[4]=1)and(n[5]=1)
and ((n[1]=1)or(n[6]=1))
Bei n[1..6] handelt es sich um Anzahlen, wie oft eine Würfelzahl vorkommt.

Die Berechnung per Anzahl ist auch bei den 1ern bis 6ern praktisch.
Hanno Günther
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Probleme bei Kniffel...

  Alt 4. Jun 2007, 19:04
au ja, das war meine kleine Strasse, meine große geht genau so wie du geschrieben hast, sorry( )
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
VitroN

Registriert seit: 28. Jan 2007
6 Beiträge
 
#8

Re: Probleme bei Kniffel...

  Alt 6. Jun 2007, 20:50
Nochmal vielen Dank für die schnelle und gute Hilfe!!!

Hab jetzt leider noch ein Problem (hoffe das ist das letzte und dann bin ich fertig)
Und zwar habe ich in Unit2 eine globale Zählvariable und möchte diese durch einen Button, der sich auf der nicht dazugehörigen Form (Form4) befindet, wieder auf "0" setzen. Aber ich hab keine Ahnung wie ich auf diese zugreifen kann. Habe schon versucht, wie man das normalerweise macht, den Namen der Form2 davor zu schreiben, aber dann sag Delphi mir, dass es die Variable "Wuerfe" nicht findet. Hab mir auch schon überlegt, das ich irgendwie auf die Unit2 zugreifen muss, aber wie?

Schon mal im Vorraus Danke...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Probleme bei Kniffel...

  Alt 6. Jun 2007, 21:52
Entweder, du schreibst unit2. vor den Variablennamen, oder nur den Variablennamen, das geht auch. Voraussetzung ist allerdings, dass die Variable im interface und nicht im implementationabschnitt deklariert wurde.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:25 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