Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dateizugriff

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 01.01.2005, 18:28    Titel: Dateizugriff Antworten mit Zitat

Hi!

Also, ich habe ein relativ großes Programm geschrieben, der Code ist

http://paste.phpfi.com/43964

hoffe ich.

Jedenfalls soll das so werden, das 4 Computer dann auf das Laufwerk S auf dem Hauptcomputer zugreifen, dort dann hallt auch in die Datei was reinschreiben können.

Wie kann ich dann das Angriffssystem organisieren, und irgendwie organisieren, das alle gleich schnell sind(so das der schnellere Computer net mehr Gold erhällt).

Spieler 2 ist stets die KI, sprich einer den man angreifen kann, wenn man die anderen gerade nicht kleinbekommt, der wird vom Hauptcomputer aus gesteuert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 01.01.2005, 20:48    Titel: Antworten mit Zitat

Hallo.

Wenn du Warteschleifen vermeidest, sollte die unterschiedliche Rechengeschwindigkeit kein größeres Problem sein.
Das Lesen und Schreiben von so ein paar Textzeilen geht auf allen PCs etwa gleich schnell.

Das Programm hättest du aber auch ruhig ins Forum posten können. So lang ist es ja nicht.

Code:
eigenschaften(1, 1) = 100
eigenschaften(2, 1) = 100
eigenschaften(3, 1) = 100
eigenschaften(4, 1) = 100
eigenschaften(5, 1) = 100
eigenschaften(1, 2) = 1
eigenschaften(2, 2) = 1
eigenschaften(3, 2) = 1
eigenschaften(4, 2) = 1
eigenschaften(5, 2) = 1
eigenschaften(z, 10) = 1
eigenschaften(2, 10) = 1
eigenschaften(1, 3) = 100
eigenschaften(2, 3) = 100
eigenschaften(3, 3) = 100
eigenschaften(4, 3) = 100
eigenschaften(5, 3) = 100
eigenschaften(1, 4) = 10
eigenschaften(2, 4) = 10
eigenschaften(3, 4) = 10
eigenschaften(4, 4) = 10
eigenschaften(5, 4) = 10


Bei größeren Projekten, wo möglicherweise der Speicher knapp werden könnte, sollte man solche Informationen dringlichst in externe Dateien auslagern. dreael hat hier auch neulich einen Artikel über QB-Anfängerfehler gepostet.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 02.01.2005, 14:23    Titel: Programm Antworten mit Zitat

Gut, deine Entscheidung, ich poste es.

Aber: Das reinschreiben ist ja nur eins, das auslesen das nächste. Wenn ich mich nicht irre darf aber immer nur ein Computer reinschreiben! Außerdem hat der schnellste Rechner 2,8Ghz und 512 MBR, der langsamste 100 MHZ und 16 MBR, gibt also schon nen Unterschied!

Das vollständige Programm:
Code:

DECLARE SUB netz ()
DECLARE SUB kampf ()
DECLARE SUB anzeige ()
DECLARE SUB taststand ()
DIM SHARED eigenschaften(10, 10) AS INTEGER
DIM SHARED Name1(10) AS STRING
INPUT "Nummer(<6, nicht 2): ", z
INPUT "Name: ", Name1(z)
Name1(2) = "Ki-Town"
eigenschaften(1, 1) = 100
eigenschaften(2, 1) = 100
eigenschaften(3, 1) = 100
eigenschaften(4, 1) = 100
eigenschaften(5, 1) = 100
eigenschaften(1, 2) = 1
eigenschaften(2, 2) = 1
eigenschaften(3, 2) = 1
eigenschaften(4, 2) = 1
eigenschaften(5, 2) = 1
eigenschaften(z, 10) = 1
eigenschaften(2, 10) = 1
eigenschaften(1, 3) = 100
eigenschaften(2, 3) = 100
eigenschaften(3, 3) = 100
eigenschaften(4, 3) = 100
eigenschaften(5, 3) = 100
eigenschaften(1, 4) = 10
eigenschaften(2, 4) = 10
eigenschaften(3, 4) = 10
eigenschaften(4, 4) = 10
eigenschaften(5, 4) = 10
angrfan = 0
DO
 CALL netz
 SCREEN 9, , seite, 1 - seite
 CLS
 IF angrfan = 0 THEN
  abzug = 10 + eigenschaften(z, 2) * eigenschaften(z, 2) * eigenschaften(z, 2) * 2
  CALL anzeige
 END IF
 a$ = INKEY$
 IF angrfan > 0 THEN
  angrfan = angrfan + 1
  PRINT "Zur?ckschalten(Taste:5) m”chglich in: " + STR$(50 - angrfan)
  PRINT "Spieler die angegriffen werden k”nnen: "
  x = 0
  DO
   IF eigenschaften(x, 10) = 1 THEN PRINT Name1(x) + STR$(x)
   x = x + 1
  LOOP UNTIL x > 9
  IF VAL(a$) < 11 AND VAL(a$) > 0 AND eigenschaften(VAL(a$), 10) = 1 THEN
   PRINT "Angriff!"
   angreifer = z
   verteidiger = VAL(a$)
   CALL kampf
  END IF
 END IF
 eigenschaften(z, 1) = eigenschaften(z, 1) + eigenschaften(z, 2)
 eigenschaften(2, 1) = eigenschaften(2, 1) + eigenschaften(2, 2)
 IF angrfan = 0 THEN
  CALL taststand
 END IF

 IF a$ = "5" AND angrfan < 50 THEN
  angrfan = 1
 END IF
 'hinschallten

 IF a$ = "5" AND angrfan > 50 THEN
  angrfan = 0
 END IF
 'zur?ckschallten

 seite = 1 - seite
LOOP UNTIL ende = 1

SUB anzeige
  SHARED z
  SHARED abzug
  PRINT "Optionen:"
  PRINT "(1) Goldmiene bauen"
  PRINT "Kosten: " + STR$(abzug)
  PRINT "(2) Krieger bauen"
  PRINT "Kosten: 5"
  PRINT "(3) Krieger bauen(100)"
  PRINT "Kosten: 500"
  PRINT "(4) Wall bauen"
  PRINT "Kosten: 100"
  PRINT "(5) Angreifen"
  PRINT "Gold: " + STR$(eigenschaften(z, 1))
  PRINT "Goldmienen: " + STR$(eigenschaften(z, 2))
  PRINT "Krieger: " + STR$(eigenschaften(z, 3))
  PRINT "Wall: " + STR$(eigenschaften(z, 4))
END SUB

SUB kampf
 SHARED angreifer
 SHARED verteidiger
 SHARED angrfan
 eigenschaften(angreifer, 3) = eigenschaften(angreifer, 3) - eigenschaften(verteiger, 4)
 IF eigenschaften(angreifer, 3) > eigenschaften(verteidiger, 3) * 2 THEN
  PRINT "sieg"
  angrfan = 0
  eigenschaften(angreifer, 3) = eigenschaften(angreifer, 3) - eigenschaften(verteidiger, 3) * 2
  eigenschaften(verteidiger, 3) = 0
  eigenschaften(angreifer, 1) = eigenschaften(angreifer, 1) + eigenschaften(verteidiger, 1)
  eigenschaften(verteidiger, 1) = 0
  PLAY "c"
 END IF
 IF eigenschaften(angreifer, 3) * 2 <= eigenschaften(verteidiger, 3) THEN
  PRINT "niederlage"
  angrfan = 0
  eigenschaften(verteidiger, 3) = eigenschaften(verteidiger, 3) * 2 - eigenschaften(angreifer, 3)
  eigenschaften(angreifer, 3) = 0
  PLAY "g"
 END IF
END SUB

SUB netz
 SHARED z
 OPEN "S:\Network.txt" FOR OUTPUT AS #1
  x = 0
  DO
   WRITE #1, eigenschaften(z, x)
   x = x + 1
  LOOP UNTIL x > 10
  WRITE #1, ""
  x = 0
  DO
   WRITE #1, eigenschaften(2, x)
   x = x + 1
  LOOP UNTIL x > 10
 CLOSE
END SUB

SUB taststand
  SHARED a$
  SHARED abzug
  SHARED z
  IF a$ = "1" AND eigenschaften(z, 1) > abzug THEN
   eigenschaften(z, 1) = eigenschaften(z, 1) - abzug
   eigenschaften(z, 2) = eigenschaften(z, 2) + 1
  END IF
  IF a$ = "2" AND eigenschaften(z, 1) > 5 THEN
   eigenschaften(z, 3) = eigenschaften(z, 3) + 1
   eigenschaften(z, 1) = eigenschaften(z, 1) - 5
  END IF
  IF a$ = "3" AND eigenschaften(z, 1) > 500 THEN
   eigenschaften(z, 3) = eigenschaften(z, 3) + 100
   eigenschaften(z, 1) = eigenschaften(z, 1) - 500
  END IF
  IF a$ = "4" AND eigenschaften(z, 1) > 100 THEN
   eigenschaften(z, 1) = eigenschaften(z, 1) - 100
   eigenschaften(z, 4) = eigenschaften(z, 4) + 1
  END IF
END SUB


Wie mache ich das also, das die restlichen Spieler sich austauschen(muss ja am Ende der Schleife sein; außerdem muss am Anfang meinentwegen eine Datei "Connected" gemacht werden, in die alle 1 schreiben, oder 1 dazuaddieren, und ihre Zahl schreiben, so das der Server weiß wanns loß geht. Hab mir das so gedacht das vllt der Server dann immer 1 bekommt, die "KI"(ist ja net wirklich intelligent) die 2 und für jeden eingeloggten eins dazu kommt, und dann per Tastendruck die Zahl reicht und es los geht. Das schaff ich noch, aber wie macht man das dann das andauernd die Daten übertragen werden, am ende jeder Schleife(ist in S:\Datei glaubsch), am besten als Sub, die Eigenschaften werden sowieso geshared, und so wärs übersichtlicher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 02.01.2005, 16:35    Titel: P100 Antworten mit Zitat

Hallo.

Selbst bei einem P100 dauert das Schreiben von ein paar Zeilen nur Sekundenbruchteile.

Um dennoch für den Fall der Fälle abgesichert zu sein, musst du mit ON ERROR was bauen.

Beispiel fürs Lesen, während jemand anderes schreibt:

Code:
ON ERROR RESUME NEXT
DO
OPEN "DATEI.TXT" FOR INPUT AS #1
INHALT$ = "ERR"
LINE INPUT #1, INHALT$
'HIER springt er bei einem Fehler weg, an die bei ON ERROR vorgegebene Stelle,
'also den nächsten Befehl. Also prüfen wir einfach, ob der Letzte
'ausgeführt wurde.
IF INHALT$ = "ERR" THEN
 PRINT "Nix eingelesen, wir versuchens nochmal."
ELSE
 PRINT INHALT$
 EXIT DO
END IF
CLOSE #1
LOOP


Schreiben während jemand anderes schreibt/liest geht einfacher. Variable weglassen und nur anhand des ERR Codes prüfen, ob das Schreiben erfolgreich war und wenn nicht, dann einfach nochmal probieren.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 02.01.2005, 18:59    Titel: Frage Antworten mit Zitat

Wie müsste der Sub net dann aussehen, damit alle spieler reinschreiben/rauslesen und keine Fehler entstehen?

Es muss ja gewährleistet sein das keiner den anderen überhohlt, das heißt es muss eine weitere datei sein, in der jeder computer am ende jeden durchlaufs was reinschreibt, und wartet, bis der Rest das auch gemacht hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 04.01.2005, 19:42    Titel: Problem Antworten mit Zitat

Wenn ich das mit dem Error zeugs mache, kommt "Goto erwartet" bei Resume.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 04.01.2005, 21:02    Titel: Mit VB verwechselt Antworten mit Zitat

Hallo.

Das hab ich jetzt davon, dass ich in letzter Zeit viel mit VB mache.... verwundert In QB geht das ja nicht so bequem... mit den Augen rollen

Da muss man Folgendes machen:
Code:
ON ERROR GOTO SprungmarkeAmEnde
...
...
END

SprungmarkeAmEnde:
'Hier optional Fehlercode in ERR auswerten!
RESUME NEXT


Versuch's damit mal.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 05.01.2005, 17:23    Titel: Egal Antworten mit Zitat

Das hat sich so oder so erledigt...hab einfach QB 7.5 genommen, da gehts!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.01.2005, 17:33    Titel: Antworten mit Zitat

Hallo.

Zitat:
Das hat sich so oder so erledigt...hab einfach QB 7.5 genommen, da gehts!


Aaaajaa... peinlich

Und in "QB 7.5" kann man direkt ON ERROR RESUME NEXT machen oder was kann diese fabulöse Software? mit den Augen rollen

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 05.01.2005, 18:38    Titel: Antworten mit Zitat

7.1 oder 4.5? ON ERROR RESUME NEXT geht eigentlich in beiden nicht, oder?
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.01.2005, 19:23    Titel: Antworten mit Zitat

7.5 eben!

ON ERROR RESUME NEXT geht in VB problemlos.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 07.01.2005, 19:26    Titel: Version Antworten mit Zitat

Es ist 7.1.

Wie müsste eigentlich nun der Sub im Programm zum austausch aussehen? Ich meine wenn man einfach einließt überschreibt man die am eigenen Computer erzeugten werte, wenn net dann die Werte die anderen Reinschreiben!

Und wie mache ich das wenn das einlesezezeugs in nem Sub ist und keine Strings eingelesen werden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz