AGB  ·  Datenschutz  ·  Impressum  







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

15 Variablen auf Ungleichheit prüfen

Ein Thema von Skritek · begonnen am 22. Apr 2013 · letzter Beitrag vom 29. Apr 2013
Antwort Antwort
Seite 1 von 2  1 2      
Skritek

Registriert seit: 22. Apr 2013
6 Beiträge
 
#1

15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 17:57
Delphi-Version: 7
Hallo,

habe da ein kleines Problem. Ich schreibe zur Zeit für den Unterricht an einem kleinen Black Jack (17&4) Programm und es klappt auch alles, bis auf die Überprüfung, dass auf dem Tsch verschiedene Karten liegen.
Also möchte ich die 15 Variablen "Karte1...Karte15" auf ihre Ungleichheit prüfen.

Diese sind vorher durch die Funktion:
Code:
function Zufallskarte(Von, Bis: Integer): Integer;
begin
  Result := Random(Succ(Bis - Von)) + Von;
end;
ermittelt worden.

Wie kann ich das hinbekommen ohne jede Variable einzeln auf Karte1<>Karte2 usw. zu überprüfen? Und danach, falls eine gleiche dabei ist, eine neue Auswählen, die nochmal darauf geprüft wird?

Danke schonmal Tom
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 17:58
Du solltest die Karten am besten in einem Array oder in einer Liste verwalten.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Skritek

Registriert seit: 22. Apr 2013
6 Beiträge
 
#3

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:00
Okay,
und wie genau ?
Sorry, Arrays hatten wir noch nicht ...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:04
Dann speichere doch die Information als String oder in den Bits eines Integerwerts.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Skritek

Registriert seit: 22. Apr 2013
6 Beiträge
 
#5

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:11
Wie kann ich denn eine Variable, die zZ. noch keinen Wert hat in einen String umwandeln, der in einem Array verwendet werden kann ?
Kannst du mir das nicht eventuell am Quellcode zeigen?

Könnte das nicht eventuell so aussehen ?

Code:
function Zufallskarte(Von, Bis: Integer): Integer;
var
  i,i2: byte;
  variabelspeicher: array [1...15] of string;
begin
  Result := Random(Succ(Bis - Von)) + Von;


  variabelspeicher[1]:= '<Karte1>';
  variabelspeicher[2]:= '<Karte2>';
  variabelspeicher[3]:= '<Karte3>';
  variabelspeicher[4]:= '<Karte4>';
  variabelspeicher[5]:= '<Karte5>';
  variabelspeicher[6]:= '<Karte6>';
  variabelspeicher[7]:= '<Karte7>';
  variabelspeicher[8]:= '<Karte8>';
  variabelspeicher[9]:= '<Karte9>';
  variabelspeicher[10]:= '<Karte10>';
  variabelspeicher[11]:= '<Karte11>';
  variabelspeicher[12]:= '<Karte12>';
  variabelspeicher[13]:= '<Karte13>';
  variabelspeicher[14]:= '<Karte14>';
  variabelspeicher[15]:= '<Karte15>';

  for i:=1 to 10 do
    for i2:=1 to 10 do
      if i2<>i then
          if variabelspeicher[i] = variabelspeicher[i2] then
             Result := Random(Succ(Bis - Von)) + Von;
end;
LG
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:19
Anstatt 15 Variablen zu verwenden, solltest du eine Variable verwenden~
Also anstatt:
Karte1, Karte2, ...., Karte15: Integer;

Das hier:
Karten: Array[1..15] of Integer;

Dann ermittelst du wie gewohnt die Karten eben per Zufallskarte
Also:
Karten[1] := Zufallskarte(...);
Karten[2] := Zufallskarte(...);
..

Dann kannste nämlich schön mit Schleifen durch und kucken, ob ne Karte doppelt oder mehrfach vorkommt!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Skritek

Registriert seit: 22. Apr 2013
6 Beiträge
 
#7

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:23
und in das (...) von Zufallskarte kommt dann was? Die Kartenvariable?! Also z.B. Karte1 ?
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 18:44
Du hast doch geschrieben
Zitat:
Diese sind vorher durch die Funktion:
..
ermittelt worden
Genau so wie du sie bereits einmal zuvor ermittelt hast, tust du das jz auch wieder - daran ändert sich nichts!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 19:01
Das ist doch eigentlich das gleiche Prinzip wie bei den Hier im Forum suchenLottozahlen. Eine mögliche Implementierung findest Du auch hier.
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
Skritek

Registriert seit: 22. Apr 2013
6 Beiträge
 
#10

AW: 15 Variablen auf Ungleichheit prüfen

  Alt 22. Apr 2013, 19:48
Also, das sieht dann jetzt so aus:

Code:
function Zufallskarte(Von, Bis: Integer): Integer;
var
  i,i2: byte;
  Karte: array [1..15] of Integer;
begin
  Result := Random(Succ(Bis - Von)) + Von;

  Karte[1]:= Zufallskarte(1, 52);
  Karte[2]:= Zufallskarte(1, 52);
  Karte[3]:= Zufallskarte(1, 52);
  Karte[4]:= Zufallskarte(1, 52);
  Karte[5]:= Zufallskarte(1, 52);
  Karte[6]:= Zufallskarte(1, 52);
  Karte[7]:= Zufallskarte(1, 52);
  Karte[8]:= Zufallskarte(1, 52);
  Karte[9]:= Zufallskarte(1, 52);
  Karte[10]:= Zufallskarte(1, 52);
  Karte[11]:= Zufallskarte(1, 52);
  Karte[12]:= Zufallskarte(1, 52);
  Karte[13]:= Zufallskarte(1, 52);
  Karte[14]:= Zufallskarte(1, 52);
  Karte[15]:= Zufallskarte(1, 52);

  for i:=1 to 10 do
    for i2:=1 to 10 do
      if i2<>i then
          if Karte[i] = Karte[i2] then
             Result := Random(Succ(Bis - Von)) + Von;
end;
Ist da irgendwo ein Fehler, weil wenn ich das so kopiliere und die erste Karte ziehe kommt ein Fehler, von wegen Stack Überlauf ( Im Projetkt ....exe ist eine Exeption der Klasse EStackOverflow aufgetreten. ), was soll ich tun ?!

Habe in den Anhang mal das gesamte Projekt reingetan, also wer Zeit hat, kann es sich gerne mal anschauen... Kommen noch diverse andere Fehler, wo ich die Lösung nicht weiß ...

edit:

Also keine richtigen Fehler, sondern nur ?logische? also die, die nicht vom Kompiler erkannt werden. z.B. dass es ab der 3. vom Comuter gezogenen Karte nicht mehr die Endkriterien wie SummeCu < 21 oder so ähnliches überprüft, sondern einfach aufhört...
Angehängte Dateien
Dateityp: rar Black Jack (0.5 Alpha).rar (3,87 MB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:57 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