Types wieder einmal
Übersicht

![]() |
JamaginBetreff: Types wieder einmal |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, nun bin ich selbst bei den Fragenden dabei! *schäm*
Habe ein dickes Brett vor dem Kopf und schnall es einfach nicht obwohl ich es therotisch korrekt aufzeichne!! *gg* Ich arbeite gerade an einer 9-Ball Billardversion, die 8-Ball hab ich schon geschafft. Das Problem was ich jetzt habe, ist eigentlich ganz klein aber es ist leider so. Es geht mir nur um ein Type Feld. Sobald ich eine Kugel einloche, als Beispiel die 2, befindet sich die 1 noch in der Typeliste. Da ich aber bei der BallInHole-Collision prüfen muß, ob noch niedere Kugeln am Tisch liegen (in diesem Fall die 1) kann der Spieler das Spiel nicht beenden und der andere kommt dran. Mir geht es nur darum, wie kann ich das nun in meiner Typeliste bewerkstelligen, das ich die gesamte Liste abfrage ob noch niedere Types als der eingelochte da sind! Ist sicher nur ein Denkfehler von mir, da ich aber schon in der Typeliste drin bin wenn die Collisionsroutine aufgerufen wird, kann ich da nicht mehr mit 2 For next Schleifen arbeiten, denn dann erhalte ich eine MAV. Das ist mein einziges Problem, irgendwie ein blödes, aber es ist da und haltet mich enorm auf! Ich würde mich echt freuen, wenn mir jemand einen Denkanstoß oder Lösungsansatz geben kann. Da ich den Kugeln in der Typeliste eine Nummer zuordne ist es ja schon mal vordefeiniert und ich brauch ja nur mehr auf die Nummern vergleichen. Aber ich komm einfach nicht dahinter wie ich das jetzt machen muß! Oje oje... Hoffe, es weiß jemand Rat! Danke im voraus lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ohne code kann wohl keiner helfen.... | ||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, du weißt welche Kugel du eingelocht hast, nämlich die zweite ... oder xte...
Dann mußt du doch nur deine Kugelliste durchgehen und schauen obs ne Kugel mit ner ID gibt die kleiner ist als die ID der eingelochten Kugel ... oder nicht? Wenn du zwei for next Schleifen verwendest und in einer davon den Type Eintrag einer Kugel löscht und dieser Eintrag in der anderen for Schleife noch verwendet wird, kommt ein MAV. Ist klar, weil die Kugel ist ja gelöscht. Also mußt du beim Zugriff in der zweiten for Schleife einfach erstmal testen ob der Type Eintrag noch existiert (<>null ist) bevor du irgendwas vergleichst... Oder ists wirklich soviel komplizierter? |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
btw: wenn die 1 am tisch liegt kann man sehrwohl das spiel beenden(ohne die 1 selbst zu lochen): stichwort kombination. du musst ja nur die niedrigste anspielen. fallen kann irgendeine. | ||
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@da_poller
Da hast du schon recht, das sagt die Regel ja aus. Aber wenn die 1 noch am Tisch liegt und der Spieler eine höhere als die 1 anspielt bzw. einlocht, ist es ja ein Foul. Ich versuch grad noch was um das zu überprüfen. Theoretisch hab ich ja die Lösung. Aber ich hab nicht den Durchblick im Moment. Beim 8-Ball war es einfacher, da mußte ich ja nur auf die 8 prüfen und welche Kugel welcher Spieler hat. Werde nochmals mit einer Vergleichsschleife probieren, vielleicht geht es ja! lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
die weiße darf alle kugeln auf dem tisch berühren, unter der voraussetzung, dass die niedrigste kugel am tisch zuvor berührt wurde.
wieso das nciht einfach abfragen?(und alles was danach passiert ist egal(bis auf das eine bande berührt werden muss oder ne kugel fällt)) btw: bin billardfan. hast du die 8ball version zum ansehen?(exe per oder icq...?) |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
dein kugeltype sieht wohl mehr oder weniger so aus: Code: [AUSKLAPPEN] type Tball
field x,y field speedx, speedy field wert field eingelocht end type da types werden ja der reihe nach erstellt, also ist beim 1. type das feld wert =0 (weisse), beim nächsten 1 usw. bevor ein spieler an der reihe ist, gehst du einfach jede kugel durch und suchst die niedrigste auf dem tisch: Code: [AUSKLAPPEN] for b.Tball = each Tball
if b\eingelocht = false and b\wert>0 then niedrigsterBall = b\wert : exit next wenn du jetzt in deiner hauptschleife alle bälle auf kollision überprüfst, sieht das folgendermassen aus: (wert = 0 ist die weisse, immer der allererste kugeltype) Code: [AUSKLAPPEN] For b.Tball = Each Tball
b2.Tball = After b While b2 <> Null if b\wert=0 and b2\wert <> niedrigsterBall then FOUL() b2 = After b2 Wend Next sollte funzen wenn ich nicht grad nen denkfehler drinhab. l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@PSY
Ah, danke! Ich schau es mir grad an! Hoffe es geht so! Sieht sehr vernünftig aus!! lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dieser Thread kann geschlossen werden. PSY hat mich wieder auf den richtigen Weg gebracht!
Auch Dank an alle anderen für die rasche Hilfestellung! lg. Jamagin ![]() |
||
Bevor du etwas neues beginnst, erledige das alte |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group