Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 16.04.2016, 18:57 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 16.04.2016, 22:11 Titel: |
|
|
Hey Elor
Tu das doch selbst? Ich weiss nichtmal genau, was du damit meinst.
_________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 17.04.2016, 12:28 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 02.05.2016, 20:21 Titel: |
|
|
*klopf* noch jemand da? _________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 03.05.2016, 10:23 Titel: |
|
|
Sicher doch. 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 ).
Außerdem konnte ich nicht widerstehen, mich zwischendurch an einem kleinen Wettbewerb zu beteiligen. Wenn also jemand einen schnellen Stringparser braucht...
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 22.05.2016, 11:47 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 25.05.2016, 00:04 Titel: |
|
|
Ok. Beteiligt sich denn da wer? _________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 25.05.2016, 06:52 Titel: |
|
|
Du doch, hoffe ich. 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.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 25.05.2016, 09:44 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 26.05.2016, 01:50 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 26.05.2016, 13:46 Titel: |
|
|
Ah super.. wieder etwas, was sich ausserhalb meines geistigen Horizonts befindet.
Gut, dann will ich nichts gesagt haben _________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 26.05.2016, 21:03 Titel: Thread Pool |
|
|
Wahrscheinlich noch effizienter wird es in diesem Fall, wenn man thread pools (worker pool) verwendet. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 27.05.2016, 03:17 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 08.06.2016, 07:19 Titel: |
|
|
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
ich hoffe, das war einigermassen klar _________________ "...nichts ist so schlimm wie mein programmcode!" |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 08.06.2016, 10:32 Titel: |
|
|
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 |
|
|
Schnism
Anmeldungsdatum: 13.10.2004 Beiträge: 58 Wohnort: Schweiz
|
Verfasst am: 08.06.2016, 13:39 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 09.06.2016, 10:45 Titel: |
|
|
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 |
|
|
|