Autor Beitrag
Fussel9
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Win 7
Delphi
BeitragVerfasst: Fr 29.01.10 18:26 
Hi arbeite daran ein Kartenspiel zu programmieren und nun soll auf eine Karte geklickt werden und die angeklickte Karte soll mit zwei anderen Karten verglichen werden

man selbst hat eine Hand (ist eine Liste) und zwei Gegner haben jeweils eine Hand (G1Hand und G2Hand)

aus einer Liste (KListe) werden die Hände mit Karten gefüllt...

Nun springt der zeiger(aktuelles) der liste beim klick auf eine Karte auf die angeklickte karte,
die gegner spielen immer ihre letzte karte aus...

mein Problem ist: Eine if then else kette soll nun überprüfen welche die höchste zahl ist...
so steht N für 0 und MW für 14 ... sonst sind die Zahlen von 1-13 nummeriert.
Da es im Spiel später nicht mehr möglich sein wird das zwei karten den gleichen wert haben wir dies in der Prozedure Berechnen (ermittelt den gewinner) nicht abgefragt dieser fall ist auch irrelevant.

Nun liefert mir die Prozedure aber leider spätestens ab der dritetn oder vierten Runde ein falsches Ergebniss :(

Kann sich jemand bitte mal meinen Quelltext ansehen ? Ich finde den Fehler einfach nicht.


Zuletzt bearbeitet von Fussel9 am So 31.01.10 20:33, insgesamt 1-mal bearbeitet
Fussel9 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Win 7
Delphi
BeitragVerfasst: Sa 30.01.10 18:30 
Hallo^^ Is da jemand? schon 5 downloads und 0 Antworten? xD
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 30.01.10 18:55 
hi, sollten wir nicht die Möglichkeit haben Dein Code zulesen!?

Zumal man ja das Spiel so schnell nicht versteht!?
was meinst Du damit:
Zitat:
Eine if then else kette soll nun überprüfen welche die höchste zahl ist...
so steht N für 0 und MW für 14 ... sonst sind die Zahlen von 1-13 nummeriert.


Die Karten oder was? Was meinst du mit "N und MW"?

Irgendwie blicke ich bei Berechnen nicht durch!
Fehlt da nicht noch ein vergleich!?? (Spieler gewinnt, gegner1 gewinnt)

Mich denkt auch, das Du die Abfrage einfacher deklarieren solltest!
z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
.....
if (pkarte > pg1karte) and (pkarte > pg2karte) then
   ShowMessage('Spieler gewinnt')
else
if (pg1karte > pkarte) and (pg1karte > pg2karte) then
   ShowMessage('Gegner1 gewinnt')
else
if (pg2karte > pg1karte) and (pg2karte > pkarte) then
   ShowMessage('Gegner2 gewinnt');
......
.....


Deine 3 ShowMessage solltest Du zusammen fassen, damit man nicht vergisst was die erste Message war :wink:
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Fussel9 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Win 7
Delphi
BeitragVerfasst: So 31.01.10 14:50 
Es gibt eine Karte auf der N steht diese hat den Wert 0
und eine Karte auf der MW steht diese hat den Wert 14

Zitat:
hi, sollten wir nicht die Möglichkeit haben Dein Code zulesen!?


wieso kann doch jeder runterladen oder nicht... also kannst du den quelltext doch auch lesen... versteh dich glaub ich nicht...
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: So 31.01.10 15:53 
ich habe das auf Deiner Bermerkung
Zitat:
Hallo^^ Is da jemand? schon 5 downloads und 0 Antworten? xD

bezogen.

Du kannst doch wohl von niemanden erwarten das er Dein Code und Spiel in 4min versteht oder?
Das dazu.

Zitat:

mein Problem ist: Eine if then else kette soll nun überprüfen welche die höchste zahl ist...
so steht N für 0 und MW für 14 ... sonst sind die Zahlen von 1-13 nummeriert.
Da es im Spiel später nicht mehr möglich sein wird das zwei karten den gleichen wert haben wir dies in der Prozedure Berechnen (ermittelt den gewinner) nicht abgefragt dieser fall ist auch irrelevant.


ist ein bischen undurchsichtig. :nut:

in Berechnen vergleichts Du doch ob die Karte grösser ist die ich anklicke.

Bis jetzt habe ich nur verstanden:
Wenn ich auf den Button1 klicke, werden die Karten neu gemischt und jeder erhätlt eine dazu. (Max 20 Karten = Runden)
Was das Ergebnis betrifft, bzw in den Messages steht worauf sich das bezieht :?:
Ich muss mir also eine Karte aussuchen die ich anklicken will.
Wenn ich eine bestimmte Karte habe, habe ich gewonnen bzw. alle restlichen karten die ich dann anklicke, habe ich verloren! mh....!?
Nach welchen allgorithmus mh.. Oder habe ich den noch nicht gefunden?


Also bis dahin. Mehr habe ich nicht verstanden, von dem Spiel.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Fussel9 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Win 7
Delphi
BeitragVerfasst: So 31.01.10 16:24 
Ok, hier mal die Spielregeln des Kartenspiels:
also insgesammt läuft das so:

jeder spieler bekommt die karten ausgeteilt,nach dem austeilen wird eine weitere Karte oben auf den Stapel gelegt die farbe der karte ist trumpf, dann darf sich jeder die karten ansehen und muss einen Tipp abgeben wie viele Stiche er bekommt
Dann wird gespielt der Spieler links vom geber beginnt er wirft eine karte in die mitte, der Spieler zu seiner linken ist nun an der reihe ... hat er eine karte der ausgespielten farbe auf der hand muss er sie legen, also bedienen. Haben alle Spieler eine Karte der ausgespielten farbe gelegt, so gewinnt der Spieler den Stich, der die höchste karte gespielt hat.
Hat ein spieler keine karte der ausgespielten farbe so kann er jede beliebige anders farbige karte legen, somit auch die Trumpffarbe, mit welcher er das Spiel gewinnt wenn nicht ein anderer Spieler eine höhere trumpffarbene Karte spielt.
Spielt er eine andersfarbige karte deren farbe nicht die trumffarbe ist so hat diese karte keinen wert.
Bekommt ein Spieler die angegebene Anzahl an Stichen, so bekommt er dafür 10 Punkte aufgeschrieben, und für jeden Stich den er bekommen hat wiederrum 10 Punkte (z.B. Gesagt: 3,Bekommen: 3=40Punkte).

Dann gibt es noch die Sonderkarten : N wie Narr und den Zauberer welcher in meiner Version MW heißt.
Diese können IMMER gespielt werden egal ob man bedienen müsste oder nicht mit dem Zauberer gewinnt man den Stich immer, mit dem Narr nie der Narr zählt so zu sagen Null Punkte.
Doch es gibt ausnahmen: Spielen mehrere Spieler einen Zauberer, so gewinnt der Spieler welcher zuerst einen Zauberer gespielt hat. Spielen ALLE Spieler einen Narren, so bekommt der Spieler der als erster ausgespielt hat den Stich.



////////////////////////////////////////////////////////////////////////////////////////

so ich habe das ganze bis jetzt aber erst so weit programmiert, das ich noch nicht auf die farben achte sondern nur auf die zahlen verstehst du?
es gibt noch keinen trumpf und so...
der zauberer (MW) zählt erstmal als eine 14
und der Narr (N) zählt als eine Null
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: So 31.01.10 20:14 
so, zum Spiel ein paar Tips:
Zitat:
Dann gibt es noch die Sonderkarten : N wie Narr und den Zauberer welcher in meiner Version MW heißt.
Diese können IMMER gespielt werden egal ob man bedienen müsste oder nicht ...

Bedenklich, Trumpf sollt immer Pflicht sein!

Zitat:
Spielen mehrere Spieler einen Zauberer, so gewinnt der Spieler welcher zuerst einen Zauberer gespielt hat. Spielen ALLE Spieler einen Narren, so bekommt der Spieler der als erster ausgespielt hat den Stich.

Es sollte der letzte sein, wieso sollte ich als letzter diese Karte legen, wenn ich den Stapel doch nicht bekomme.
Die Spannung ist viel grösser, wenn ich jemanden den Stapel noch dadurch abluxen kann.

Aber das bleibt Dir überlassen.

Nun zu deiner Anfrage.

Dies solltest Du nicht mit "if" alleine machen.
Geht auch, aber es setzt eine Menge logik vor raus, das so hinzubekommen (and, or, eventuell noch xor).
Kannst Du ja selbst sehen an "Berechnung" von Dir und das währe nur der Anfang.
Schau dir meine an z.B!

Nun kommt bei Dir noch, Farbe und Zahl, Trumpffarbe und Zahl, N und MW nagut 0 + 14 dazu.
Das ganze nur mit "If" mh...
Selbst ich müsste jetzt erst mal die "if" Möglichkeiten per Bleistift und Zettel machen, bevor ich den Code dazu schreiben würde.
Nachteil, kommt dir noch ne Spieleidee dazu uuuha :eyecrazy:
Irgend wo gab es da schon ne Lösung (Skat) glaube ich.
Der algorithmus ist ja fast gleich.
Wie gesagt auf der Schnelle geht es nicht.

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Fussel9 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23

Win 7
Delphi
BeitragVerfasst: So 31.01.10 20:32 
viellen dank für deine mühe, aber mitlerweilen hab ich den fehler schon gefunden...

und die spielregeln hab ich nicht erfunden ... das spiel gibt es wirklich :

www.amazon.de/Amigo-...Wizard/dp/B00006YYXI