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:

Eine Wirtschaftssimulation und ihre Umsetzung.
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7
 
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
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 16.04.2016, 17:57    Titel: Antworten mit Zitat

So, hat etwas länger gedauert... aber jetzt:
grindstone hat Folgendes geschrieben:


Elor hat Folgendes geschrieben:
Manchmal komm ich mir vor wie ein Unruhestifter, dass ist aber nicht meine Absicht

Falls das als Kritik rübergekommen sein sollte, bitte ich um Entschuldigung, das war ganz und gar nicht so gemeint, ich wollte lediglich meinen Gedankengang erläutern.

Du musst dich bei mir gar nicht Entschuldigen sondern ich mich eher bei dir! Irgendwie hab ich nämlich was falsch verstanden, da hier munter mit FB weiter Programmiert wurde und nicht mit QuickBASIC 4.5 (das Speicherplatzproblem hätte man damit ja gelöst), entstand bei mir der Eindruck das das gesamte Spiel in FB neu Aufgebaut wird. So sind meine Vorschläge bezüglich Menü/Grafik System natürlich Blödsinn!

@Schnism: Könntest du die Pfadangabe nicht durch eine Konstante ersetzten? Ich verwende z.B. den Dosemulator unter Linux und Speichere alles im User Verzeichnis und das wird als Laufwerk D angesprochen. So könnte jeder das Programm da hin Braten wo er will und müsste nur noch die Konstante anpassen!?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 16.04.2016, 21:11    Titel: Antworten mit Zitat

Hey Elor

Tu das doch selbst? Ich weiss nichtmal genau, was du damit meinst.
durchgeknallt
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 17.04.2016, 11:28    Titel: Antworten mit Zitat

Schnism hat Folgendes geschrieben:

Tu das doch selbst? …

Ich muss die Pfade ja anpassen, sonst kann ich das Programm gar nicht Ausführen. Wäre es nicht besser das im Projekt zu machen?

Schnism hat Folgendes geschrieben:

… Ich weiss nichtmal genau, was du damit meinst.

In deinen drei Programmteilen werden ja Dateien zum lesen und schreiben geöffnet wobei hier Laufwerk, Pfad und Dateiname angegeben werden. Laufwerk und Pfad würde ich entweder durch eine Konstante am Anfang jeder Datei ersetzten, z.B:
Code:

Const Path = „C:\QB45GER\“

oder eine Variable verwenden die eine Umgebungsvariable List, dann müsste im Code gar nichts mehr verändert werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 02.05.2016, 19:21    Titel: Antworten mit Zitat

*klopf* noch jemand da? lächeln
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 03.05.2016, 09:23    Titel: Antworten mit Zitat

Sicher doch. lächeln Nur bin ich im Augenblick vollauf damit beschäftigt, meinen fahrbaren Untersatz in einen HU - kompatiblen Zustand zu versetzen. Da bleibt zum Programmieren momentan nicht viel Zeit (dengeln statt tippen grinsen ).

Außerdem konnte ich nicht widerstehen, mich zwischendurch an einem kleinen Wettbewerb zu beteiligen. Wenn also jemand einen schnellen Stringparser braucht... zwinkern
http://www.freebasic.net/forum/viewtopic.php?f=3&t=24563

Aber ich bleibe natürlich dran.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 22.05.2016, 10:47    Titel: Antworten mit Zitat

So, jetzt ist die Simulation endlich ein "richtiges" Projekt mit einem entsprechenden Thread.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 24.05.2016, 23:04    Titel: Antworten mit Zitat

Ok. Beteiligt sich denn da wer? lächeln
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.05.2016, 05:52    Titel: Antworten mit Zitat

Du doch, hoffe ich. lächeln Und auch alle anderen, die hier bisher mitgetestet und Tips gegeben haben.

Ich probiere übrigens gerade, ob es praktikabel ist, jedes "Krieger" - Objekt in einem eigenen Thread agieren zu lassen. Bis jetzt muß ja jede Aktivität von außen angestoßen werden. Wie man einen Thread aus einem Objekt heraus startet, habe ich inzwischen herausgefunden, und auch, wie man dann aus dem Thread heraus auf die nicht statischen Variablen des Objekts zugreift. Ist jetzt nur die Frage, was das Betriebssystem zu mehreren hundert (oder auch tausend) gleichzeitig laufenden Threads sagt, und ob das nicht wegen der notwendigen Mutexe die Ausführungsgeschwindigkeit beeinträchtigt.

Allerdings beschleicht mich mittlerweile eine leise Ahnung, daß ich damit mehr Probleme schaffe als löse. verwundert

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 25.05.2016, 08:44    Titel: Antworten mit Zitat

Da es ein "altes" Spiel ist und auch nicht zu absoluten ungerechtigkeiten kommen soll, ist eine Begrenzung des Militärs eh sinnvoll. Das kann man am Rang oder auch der Bevölkerungsmenge festmachen.
Auch sind alle Milizen mit einer zufälligen stärke ausgestattet (als gesamteinheit) und die Bewaffnung ist ebenfalls gleich.

Jedem einzelnen Soldaten seine Stärke zuzuweisen halte ich für unzweckmässig im Hinblick, dass es kein Kriegsspiel sein soll. Es soll schon noch eine Wirtschaftssimulation mit Kriegerischen Elementen bleiben..

Somit muss (soll) es gar keine unendlichen Soldatenmengen geben.
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 26.05.2016, 00:50    Titel: Antworten mit Zitat

Ich fürchte, da hast du mich jetzt missverstanden. Thread bedeutet -etwas verkürzt formuliert- daß eine Sub oder Function als eigenes Programm ausgeführt wird, parallel zum Hauptprogramm. Jeder "Krieger" auf dem Schlachtfeld wäre also quasi ein separates, selbständig agierendes Programm. Der Vorteil wäre, daß bei Mehrkernprozessoren die komplette Prozessorleistung genutzt werden könnte und nicht nur ein Kern, wie im Augenblick.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 26.05.2016, 12:46    Titel: Antworten mit Zitat

Ah super.. wieder etwas, was sich ausserhalb meines geistigen Horizonts befindet.

Gut, dann will ich nichts gesagt haben lächeln
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 26.05.2016, 20:03    Titel: Thread Pool Antworten mit Zitat

Wahrscheinlich noch effizienter wird es in diesem Fall, wenn man thread pools (worker pool) verwendet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 27.05.2016, 02:17    Titel: Antworten mit Zitat

Ja, ich denke auch, für jeden Krieger einen eigenen Thread zu erzeugen wäre eher kontraproduktiv. Am besten ist es wohl, ich bringe das Programm erst einmal zum Laufen, bevor ich mir Gedanken um Performanceverbesserungen mache.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 08.06.2016, 06:19    Titel: Antworten mit Zitat

Huhu

Es geht sich um Folgendes:

Ich möchte gerne soetwas wie Diplomatie einbringen.
Dazu gehört für mich das Senden einer Nachricht von einem Spieler zum Anderen.

Soweit, so gut. Mit zwei Spielern klappt das auch sehr gut.
Es sieht ungefähr so aus:

Code:
Diplomatie:

GOSUB seitenstart: COLOR 3: LOCATE 3, 1: PRINT "Willkommen im Diplomatenmenü"
   LOCATE 5, 1: PRINT "Hier haben Sie die Möglichkeit, mit ihren Kontrahenten kontakt aufzunehmen."
   PRINT : a2temp = a2
   FOR t = 1 TO a4 #a4 = Spielermenge von 1 - 6
   IF t <> a2 THEN COLOR 3: PRINT "Wollen sie "; : COLOR 15: PRINT mw$(t); name$(t); land$(t); : COLOR 3: PRINT " kontaktieren?(j/n)"; :
   IF t = a2 THEN COLOR 3: PRINT "Sie k”nnen sich nicht selbst kontaktieren "
   DO: key$ = INKEY$
   IF key$ = "n" THEN GOTO 1010
   IF key$ = "j" AND t <> a2 THEN a3 = t: GOSUB nachricht: EXIT FOR
   IF key$ = "0" THEN GOTO seitenstart
   LOOP WHILE key$ = ""
1010    NEXT t: a2 = a2temp: GOTO zurück

nachricht:
        GOSUB seitenstart: COLOR 3
   PRINT : PRINT "Sie haben folgende Möglichkeiten:": PRINT
   REM COLOR 4: PRINT "1. "; mw$(a3); name$(a3); land$(a3); " beschenken (to be continue)"
   COLOR 3: PRINT "1. "; mw$(a3); name$(a3); land$(a3); " Nachricht senden"
   LOCATE 30, 1: COLOR 15: PRINT "0 für zurück!";
   DO: key$ = INKEY$
   IF key$ = "1" THEN nachrichtsenden
   REM IF key$ = "2" THEN schenken
   LOOP WHILE key$ = ""
   RETURN

nachrichtsenden:
         PRINT : PRINT "Geben Sie den Text ein, den Sie senden wollen"
   INPUT diplomatentext$(a3)
   RETURN


Und im nachrichtsenden ist das eigentliche Problem.
Wenn ich Spieler 1 bin, und 3 gesamt mitspielen, und Spieler zwei und Spieler 3 mir eine Nachricht senden, wird nur die nachricht von Spieler 3 an mich gesendet, da sie "überschrieben" wird.
Ich weiss, das es da irgendetwas gibt wie dimplomatie$(a2,a2) oder man das dimplomatie$ immer mit z.b 100 zeichen auffüllt, und alle 100 zeichen im String einen "schnitt" macht und beide oder auch nur den mit Text gefüllten anzeigt.

Aber das hab ich nie begriffen traurig
ich hoffe, das war einigermassen klar geschockt
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 08.06.2016, 09:32    Titel: Antworten mit Zitat

Ich denke, ein 2-dimensionales Array wäre die einfachste Lösung des Problems. Eingerichtet würde das Array dann mit
Code:
DIM SHARED diplomatentext$(<Anzahl der Spieler>,<Anzahl der Spieler>)
der Zugriff erfolgt dann in der Form
Code:
diplomatentext$(von,an)
wobei bei Schreibzugriffen jeder Spieler als "von" nur seinen eigenen Index benutzen darf, bei Lesezugriffen entsprechend für "an" nur seinen eigenen Index, also
Code:
PRINT diplomatentext$(<Index des Absenders>,<eigener Index>) 'zum Lesen
bzw.
Code:
INPUT diplomatentext$(<eigener Index>,<Index des Empfängers>) 'zum Senden


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 08.06.2016, 12:39    Titel: Antworten mit Zitat

Code:
nachrichtsenden:
         PRINT : PRINT "Geben Sie den Text ein, den Sie senden wollen"
   INPUT diplomatentext$(a3)
   RETURN


Einbauen tu ich das in dem Kotext wie genau?

Code:
nachrichtsenden:
         PRINT : PRINT "Geben Sie den Text ein, den Sie senden wollen"
   INPUT diplomatentext$(a2,derandere)  # a2 = ich, derandere = ausgewählte Empfänger
   RETURN


und auslesen?

Code:
 IF diplomatentext$(derandere,a2) = "" THEN RETURN
    GOSUB seitenstart: COLOR 3
    COLOR 15: LOCATE 11, 1: PRINT "Ihnen wurde eine Nachricht von Ihrem Diplomaten überreicht"
    COLOR 3: LOCATE 13, 1: PRINT diplomatentext$(derandere,a2)
    diplomatentext$(derandere,a2) = "": GOTO zurück


Ich versteh dann aber noch nicht, wie ich als Spieler 2 beides, von Spieler 1 und Spieler 3 ausgeben kann, wenn denn was drinsteht. (Nach ausgabe setze ich das eigentlich auf "" )

und: ich habe alle Werte ohne SHARD gesetzt.
Braucht es das DIM SHARED oder reicht einfach DIM ?
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 09.06.2016, 09:45    Titel: Antworten mit Zitat

Das Nachrichtensenden ist schon gut so. Die Abfrage könnte ungefähr so aussehen:
Code:
For von% = 1 To UBound(diplomatentext$,1) 'alle Konten abfragen
   If von% <> a2 Then 'eigenen Index ausschliessen
      If diplomatentext$(von%,a2) <> "" Then 'Konto enthält eine Nachricht
         Print "Nachricht von Spieler"; von%; ": "; diplomatentext$(von%,a2) 'Nachricht ausgeben
         diplomatentext$(von%,a2) = "" 'Nachricht löschen
      EndIf
   EndIf
Next

Zitat:
Braucht es das DIM SHARED oder reicht einfach DIM ?
Stimmt, du benutzt ja keine SUBs. Dann kannst du das SHARED weglassen.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7
Seite 7 von 7

 
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