Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Kein ENDE (https://www.delphipraxis.net/110622-kein-ende.html)

B1acka5s77 20. Mär 2008 21:53


Kein ENDE
 
Servus!!!
Hab ein Problem mit meinem Kartenspiel(UNO):
Ich gebe jedem Spieler jeweils 8(anz_sp=8) zufällige Karten aus dem ARRAY. Die restlichen Karten werden zufällig auf den Nehstapel verteilt.
Es wird auch bei jedem legen einer Karte die Anzahl um eins verringert(anz_sp:=anz_sp-1)!!
Aber wenn die anz_sp=0 ist möcht ich per showmessage('Gewonnen') ausgeben, doch anstatt Delphi dies tut, bekommt der Spieler nochmals 8 Karten ohne Wert, Farbe oder Funktion!!!
Also bräucht ich ein Befehl, der das einmalige verteilen der 8 Karten für die Spieler ermöglicht???

Danke

mkinzler 20. Mär 2008 21:56

Re: Kein ENDE
 
Ohne zu wissen, was dein Programm genau macht, ist eine Hilfestellung kaum möglich.

Dunkel 20. Mär 2008 22:04

Re: Kein ENDE
 
Zitat:

Zitat von B1acka5s77
Also bräucht ich ein Befehl, der das einmalige verteilen der 8 Karten für die Spieler ermöglicht???

Delphi-Quellcode:
  PortionOutJustOneTime(Player);
Zu finden ist diese Methode in der Klasse TPlayer, diese befindet sich in der Unit PlayerUnit - also musst Du diese noch in den uses einbinden... :roll:

Spaß bei Seite, wie mkinzler schon schrieb, ohne weitere Informationen (sprich Quelltext) von Dir tappen alle im Dunkeln.

B1acka5s77 20. Mär 2008 22:12

Re: Kein ENDE
 
Zitat:

Zitat von mkinzler
Ohne zu wissen, was dein Programm genau macht, ist eine Hilfestellung kaum möglich.

Was willst du da denn wissen???

Ich brauch eigentlich nur ein Befehl, der nur EINMAL die Karten für den Spieler zuordnet. Das zuordnen usw. hab ich ja schon programmiert, aber es gibt kein Gewinner.
Durch anz_sp=8 wird am Anfang die Kartenanzahl festgelegt und wenn der Spieler eine Karte legt wird diese um 1 verringert anz_sp:=anz_sp-1!!!
Aber wenn die Kartenanzahl des nach einigen legen 0 ist, dann werden im Memofeld 8 Karten ohne Farbe,Wert oder Funktion ausgegeben, obwohl er dank des Befehls ' If anz_sp=0 then showmessage('Gewonnen') ' Gewonnen ausgeben soll!!![delphi]unit Unit1;

inherited 20. Mär 2008 23:03

Re: Kein ENDE
 
ich seh da keine if-Abfrage auf anz_sp :gruebel:

Dunkel 20. Mär 2008 23:07

Re: Kein ENDE
 
Ohhh, was ist denn das für ein wirrer Quelltext? Der lässt sich bei Dir kompilieren? :gruebel:

Ich vermute, dass Du nur eine Auswahl Deines Quelltextes gepostet hast, den entscheidenden Teil natürlich nicht. In sofern
Zitat:

Zitat von Dunkel
ohne weitere Informationen (sprich den kompletten Quelltext) von Dir tappen alle im Dunkeln.


sx2008 21. Mär 2008 05:35

Re: Kein ENDE
 
OK, mal was Grundsätzliches:
du speicherst deine Karten in einem Array. Das ist aber ungeschickt, da man die Karten in einer Liste speichern sollte.
Du hast eine Hauptliste mit allen Karten und jeder Spieler hat seine eigene Liste. Vielleicht gibt es auch noch eine "Pot"-Liste; das hängt vom Kartenspiel ab.
Wenn nun Karten verteilt werden, wird aus der Hauptliste zufällig eine Karte gezogen, aus der Hauptliste entfernt und in die Spielerliste eingefügt.
Mit diesem Konzept werden sich viele Dinge vereinfachen!
Die Kartenliste kannst du von TList oder TObjectList ableiten.
Du müsstest deinen ganzen Sourcecode wegwerfen und neu anfangen, aber das lohnt sich!

DP-Maintenance 21. Mär 2008 08:46

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Multimedia" verschoben.
Delphi-Frage


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz