Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 11.07.2005, 22:47 Titel: Synchronisieren |
|
|
Hallo Leute!
Ich schreibe zurzeit ein Spiel, wofür ich einen Synchronen Ablauf auf allen Rechnern brauche. Dafür habe ich das gefunden:
Code: | DO ' Start der Main-Schleife
delay# = TIMER
...
FOR DELAY=1 TO 10000: NEXT DELAY
LOCATE 1, 1: PRINT TIMER-delay#
LOOP
|
Leider ist das für Sekunden, meine Schleife soll jedoch 30 mal in der Sekunde aufgerufen werden. Hat jemand dafür einen Code? |
|
Nach oben |
|
|
Tomtitom
Anmeldungsdatum: 20.09.2004 Beiträge: 308
|
Verfasst am: 11.07.2005, 23:07 Titel: |
|
|
also ich bin mir nicht ganz sicher, ob ich dich richtig verstanden habe. Aber soweit ich das sehe, werden sie beim aktuellen Fred "ON TIMER-Ersatz" geholfen. |
|
Nach oben |
|
|
Tobber
Anmeldungsdatum: 01.07.2005 Beiträge: 62 Wohnort: Freudenstadt
|
Verfasst am: 11.07.2005, 23:33 Titel: |
|
|
Meines Wissens ist in FB der Befehl SLEEP 1000 eine 1-sekündige Wartezeit, der den Wert 1000 in Millisekunden repräsentiert. Du könntest jetzt 1000 durch 30 teilen, dann hättest du Deine 30-er Taktrate. Das wäre 33periode, haut also nicht ganz hin, wäre aber ein Ansatz für die Lösung Deines Problems:
DO
delay# = TIMER
...
sleep 33
LOCATE 1,1:PRINT TIMER-delay#
LOOP _________________ "Es wurde schon alles gesagt, nur noch nicht von jedem !" |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 12.07.2005, 00:47 Titel: |
|
|
wenn das für den netzwerk part deines rts ist dann sehe ich nicht wie dieser einfache verzögerer synchronisierung erreichen soll. du mußt eine art netzwerk zeit etablieren damit alle wissen wann sie in ihrem zeitrahmen was ausführen müssen. nicht jeder computer operiert im selben zeitrahmen _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 12.07.2005, 14:57 Titel: |
|
|
Die von mir eingangs genannte Schleife ist laut QBtimes CPU-unabhängig, d.h. funktioniert an jedem Computer gleich schnell. Das brauche ich, denn wenn ich das habe, kann ich ja die Bewegung der Raumschiffe etc. anpassen, so das sich alles gleich schnell bewegt, aus allen Computern
Code: | DO
delay# = TIMER
...
sleep 33
LOCATE 1,1:PRINT TIMER-delay#
LOOP |
Ich denke nicht, das das klappt, denn Sleep 33 wartet ja immer 33 Millisekunden, der Code soll aber 33-x, wobei x die vergangene Zeit ist, warten. |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 12.07.2005, 19:35 Titel: |
|
|
das gegenteil ist der fall die schleife ist mehr als cpu abhängig
Code: | FOR DELAY=1 TO 10000: NEXT DELAY |
alleindieser teil sollte dir signalisieren das hier was nicht stimmt. zeitsteuerung über solche suizid schleifen sind nicht sehr überlegen intelligent ( SCNR ).
und wie gesagt, zur synchronierung mehrerer computer mußt du eine art netzwerk zeit etablieren. aber du mußt mir ja eh nicht glauben _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 12.07.2005, 20:50 Titel: |
|
|
Zitat: | #define delay 0.04
t#=TIMER+delay
Do
key$=INKEY$
IF key$="a" Then x=1
SCREENLOCK
CLS
PRINT key$
SCREENUNLOCK
while TIMER<T#:WEND
t#=TIMER+delay
Loop until x=1 |
Und würde das funzen? |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 13.07.2005, 11:08 Titel: |
|
|
marzec hat Folgendes geschrieben: |
und wie gesagt, zur synchronierung mehrerer computer mußt du eine art netzwerk zeit etablieren.
|
jb |
|
Nach oben |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 13.07.2005, 11:55 Titel: |
|
|
Progger_X hat Folgendes geschrieben: | Zitat: | #define delay 0.04
t#=TIMER+delay
Do
key$=INKEY$
IF key$="a" Then x=1
SCREENLOCK
CLS
PRINT key$
SCREENUNLOCK
while TIMER<T#:WEND
t#=TIMER+delay
Loop until x=1 |
Und würde das funzen? |
Das snychronisiert selbstverständlich alle Rechner. Damit kannst du sogar die Weltherschafft an dich reißen. LOL. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 13.07.2005, 16:24 Titel: |
|
|
Na klar synchronisiert das. Wenn alle Rechner zum gleichen Zeitpunkt starten, sollte das logisch sein. Und es klappt ja.
@Helium: du wolltest nix mit mir zu tun haben, jetzt schreib keinen Scheiß in meine Threads. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 13.07.2005, 16:48 Titel: |
|
|
Ok, dann starte mal auf 10 Rechner auf die selbe zehntel sekunde das programm.
Sag mir bescheid, wenn du es in diesem Leben noch geschafft hast. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 13.07.2005, 16:50 Titel: |
|
|
Die Schleife beginnt, nachdem die beiden Rechner sich verbunden haben(beim server ist dann ne warteschleife bis der Client kommt), und danach klappts ja. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 13.07.2005, 17:46 Titel: |
|
|
Mach's doch, wie marzec es schon vorgeschlagen hat, so wäre es wohl ein bisschen störungsunanfälliger...
Aber was rede ich, warum einfach wenn's auch kompliziert geht nicht wahr?
jb |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 13.07.2005, 19:17 Titel: |
|
|
Mal so ne Frage: Was willst du damit machen?? Ein spiel geht damit nicht. Ein Netzwerk programm auch nicht. Ich erkenne den sinn nicht in diesem Programm. Das soll jetzt nicht böse gemeint sein. Will nur helfen. Was willst du denn damit machen??
Mfg
Michael
EDIT:
Original vom Themenstarter
Zitat: |
Die Schleife beginnt, nachdem die beiden Rechner sich verbunden haben(beim server ist dann ne warteschleife bis der Client kommt), und danach klappts ja.
|
Wenn du dem server schon schickst, dass ein 2. pc im netzwerk ist. Dann kannst du sie doch auch über demselben weg Syncronisieren, oder?? _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 13.07.2005, 22:21 Titel: |
|
|
Ich mach des einfach so wie ichs einma hab, es funzt, mehr brauch ich net!
Zitat: | Wenn du dem server schon schickst, dass ein 2. pc im netzwerk ist. Dann kannst du sie doch auch über demselben weg Syncronisieren, oder?? |
Das ist ein Event, das zum Server kommt. Wenn das eintritt, dann ist ein 2. PC verbunden. Aber irgendwie wird das dann durch die Datensendungen(wahrscheinlich wartet er bei empfang bis was da ist) immer gleich schnell. Aber das ging über Internet nicht, und auf langsamen Computern nich. Jetzt gehts. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
|