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  Weiter
 
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 29.02.2016, 13:34    Titel: Antworten mit Zitat

Zitat:
Infanteristen mit Musketen
Gut, an Schusswaffen für die Fußtruppen hatte ich bis jetzt noch gar nicht gedacht, aber kein Problem: Eine geladene Muskete erweitert den Aktionsradius des Infanteristen auf ca. 100m, bei einer ungeladenen Muskete beträgt er 2m (Bajonett). Außerdem wäre dann eine zusätzliche Variable für die Art der Bewaffnung erforderlich -eine Muskete hat schließlich eine andere Wirkung als beispielsweise eine Hellebarde- und eine weitere für die Ladezeit.

Milizionäre haben entsprechend einen konstanten Aktionsradius von ca. 2m. Da es sich bei diesen (so meine Vorstellung) um zum Militärdienst gepresste Bauern handelt, schlecht ausgebildet und mit einer Motivation, die gegen Null geht, werden sie die Priorität eher auf die Erhaltung des eigenen Lebens setzen als auf die Bekämpfung des Feindes.

Zitat:
Was ich an deinen Code immer wieder vermisse ist die Spielerunterscheidung.
Aber es kämpfen doch immer nur 2 Armeen gleichzeitig gegeneinander, oder nicht? Eine Schlacht mit 3 oder mehr Kriegsparteien (gleichzeitig und jeder gegen jeden) wäre auch machbar, aber das entspricht doch eher nicht der Realität.

In diesem Modul kämpft eine Armee mit der Kennzeichnung "0" gegen eine andere Armee mit der Kennzeichnung "1" (Variable zugehoerigkeit). Zu welchen Kriegsherrn die Armeen dabei gehören, ist innerhalb des Moduls ohne Bedeutung.

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
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 29.02.2016, 15:16    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Aber es kämpfen doch immer nur 2 Armeen gleichzeitig gegeneinander, oder nicht?


Das ist so. Aber es kann spieler 4 gegen spieler 6 spielen.
spieler 5 gegen spieler 2

Entsprechend muss doch 0 und 1 dem jeweiligen spieler zugeordnet werden?
Auch im Endresultat muss man doch wissen, wem die Gewinner oder Verliererarmee gehört lächeln

Oder wo vermisse ich da etwas?
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4204
Wohnort: ~/

BeitragVerfasst am: 29.02.2016, 16:30    Titel: Antworten mit Zitat

Du kannst den Kriegsablauf soweit auslagern, dass zunächst einfach einmal zwei Armeen gegeneinander kämpfen, in der Regel ein Angreifer und ein Verteidiger (weil normalerweise einer der beiden versucht, sich Land des Gegners einzuverleiben). Dieser Programmteil (Unterprogramm) bekommt dann die Informationen geliefert, welche Armee mit wie vielen Truppen welcher Sorte am Kampf beteiligt ist, und am Ende der Kampfberechnung gibt er zurück, wer gewonnen hat und wer wie viele Truppen welcher Sorte übrig behält. Welche Truppen die unbeteiligten Spieler 3-6 besitzen, muss dann in diesem Programmteil nicht berücksichtigt werden.
Das Hauptprogramm ruft z. B. auf
Code:
angriff(spieler(4), spieler(6))

und meint damit, dass Spieler 4 den Spieler 6 angreift; im Unterprogramm nimmst es aber entgegen
Code:
SUB angriff(angreifer, verteidiger)

womit die Daten von Spieler 4 in der Variablen 'angreifer' gespeichert werden und die Daten von Spieler 6 in der Variablen 'verteidiger'. (Mit Zuordnungen 0 und 1 ist es natürlich im Ablauf noch deutlich praktischer, braucht dann aber etwas Vorarbeit.)
Dem Unterprogramm ist damit egal, ob der Aufruf über 'angriff(spieler(4), spieler(6))' oder 'angriff(spieler(3), spieler(1))' oder sonst etwas lief - es weiß nur, welche Konstellation beim Angreifer herrscht und welche beim Verteidiger. Ich gehe bei diesem Vorschlag davon aus, dass 'spieler(x)' bereits sämtliche relevante Informationen über Spieler X enthält (siehe TYPE).

Mit einer FUNCTION statt einer SUB könnte man dann auch noch zurückgeben, ob das Gebiet erobert wurde oder verteidigt werden konnte.

Allerdings gab es beim Kaiser-Spiel noch die Möglichkeit, einen verbündeten angrenzenden Fürsten um Hilfe zu bitten, der dann (vielleicht) beim Angriff oder bei der Verteidigung geholfen hat. Ich kann mich jedoch nicht genau erinnern, wie das im Detail ablief.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 29.02.2016, 20:04    Titel: Antworten mit Zitat

@nemored:
Danke, ich hätte es nicht besser erklären können! lächeln

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
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 01.03.2016, 12:37    Titel: Antworten mit Zitat

ich "glaube", das habe ich verstanden ..

nemored hat Folgendes geschrieben:

Allerdings gab es beim Kaiser-Spiel noch die Möglichkeit, einen verbündeten angrenzenden Fürsten um Hilfe zu bitten, der dann (vielleicht) beim Angriff oder bei der Verteidigung geholfen hat. Ich kann mich jedoch nicht genau erinnern, wie das im Detail ablief.


Mein Original hatte diese Option nicht. Aber eine spätere hatte diese. Dort wurden die Landesgrenzen auch klar definiert und auch die "Durchmarscherlaubnis", wenn man kein direkt angrenzendes Land angreifen wollte, musste gegeben sein.
Der befreundete Fürst hat dann in Form bestehender Truppen ausgeholfen.
Diese Option ginge mir aber zu weit.
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 01.03.2016, 13:54    Titel: Antworten mit Zitat

Ich habe gerade die UDTs, so wie ich sie mir gedacht hatte, fertiggestellt und mal kurz angetestet, ob die geplante Zuordnung wenigstens im Prinzip funktioniert. Ist noch ziemlich rudimentär, aber das, was da ist, macht genau was es soll. happy
Code:
Type tPersonen
   anzahl As Integer
   kampfkraft As UByte
   motivation As UByte
End Type

Type tHeer
   milizen As tPersonen
   infanteristen As tPersonen
   kavalleristen As tPersonen
   artilleristen As tPersonen
   pferde As UInteger
   schwerter As UInteger
  hellebarden As UInteger
  spiesse As UInteger
  kanonen As UInteger
  musketen As UInteger
  pistolen As UInteger
  lanzen As UInteger
End Type

Type tFeldherr
   name_ As String
   rang As UByte
   kriegskasse As Integer
   heer As tHeer
End Type

Dim As tFeldherr spieler(1)

Type tKrieger
   zugehoerigkeit : 1 As UInteger '1 Bit: Freund = 0 / Feind = 1
  typ : 2 As UInteger '2 Bits: Milizionär, Infanterist, Kavallerist oder Geschütz
  'Bewaffnung --> je 1 Bit: 1 = Waffe vorhanden / 0 = Waffe nicht vorhanden
  Schwert : 1 As UInteger
  Hellebarde : 1 As UInteger
  Spiess : 1 As UInteger
  Muskete : 1 As UInteger
  Pistole : 1 As UInteger
  Lanze : 1 As UInteger
  posx As Single 'x - Position auf dem Schlachtfeld
  posy As Single 'y - Position auf dem Schlachtfeld
  kampfkraft As UByte 'von 0 - 255
  motivation As UByte 'bei Infanterie und Kavallerie von 0 - 255
   ladezustand As UByte 'bei Artillerie, Muskete und Pistole in %
  verwundung As UByte 'in %
End Type

Enum
   miliz = 0
   infanterie
   kavallerie
   artillerie
End Enum


'testarmeen erstellen
With spieler(0)
   .name_ = "Feldherr 0"
   .rang = 2
   .kriegskasse = 150000
   With .heer
      With .milizen
         .anzahl = 3
         .kampfkraft = 50
         .motivation = 10
      End With
      With .infanteristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      With .kavalleristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      With .artilleristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      .pferde = 50
      .schwerter = 200
      .hellebarden = 60
      .spiesse = 20
      .kanonen = 0
      .musketen = 120
      .pistolen = 150
      .lanzen = 200
   End With
End With

With spieler(1)
   .name_ = "Feldherr 1"
   .rang = 2
   .kriegskasse = 150000
   With .heer
      With .milizen
         .anzahl = 3
         .kampfkraft = 50
         .motivation = 20
      End With
      With .infanteristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      With .kavalleristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      With .artilleristen
         .anzahl = 100
         .kampfkraft = 200
         .motivation = 200
      End With
      .pferde = 50
      .schwerter = 1
      .hellebarden = 0
      .spiesse = 1
      .kanonen = 0
      .musketen = 120
      .pistolen = 150
      .lanzen = 200
   End With
End With


'krieger für die schlacht erstellen
ReDim As tKrieger krieger(0)
Dim As Integer maxanzahl, k

k = 0
For x As Integer = 0 To 1
   'milizionäre
   
   With spieler(x).heer
      For y As Integer = 1 To .milizen.anzahl
         If .schwerter + .hellebarden + .spiesse = 0 Then
            Exit For
         EndIf
         k += 1
         ReDim Preserve krieger(k)
         krieger(k).zugehoerigkeit = x
        krieger(k).typ = miliz
        krieger(k).kampfkraft = .milizen.kampfkraft
         krieger(k).motivation = .milizen.motivation
         If .schwerter Then
            krieger(k).schwert = 1
            .schwerter -= 1
         ElseIf .hellebarden Then
            krieger(k).hellebarde = 1
            .hellebarden -= 1
         ElseIf .spiesse Then
            krieger(k).spiess = 1
            .spiesse -= 1
         EndIf
      Next
   End With
Next

? UBound(krieger)
For x As Integer = 1 To UBound(krieger)
   ? x;" ";krieger(x).schwert;" ";krieger(x).hellebarde;" ";krieger(x).spiess;" ";krieger(x).motivation;" ";krieger(x).kampfkraft
Next
Sleep

@Schnism:
Fall nicht vom Stuhl, ich kann das alles erklären! grinsen (Aber später)

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!


Zuletzt bearbeitet von grindstone am 02.03.2016, 02:24, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 01.03.2016, 21:07    Titel: Antworten mit Zitat

IRRER IVAN!

Ausserdem kann das nicht tun, was es soll .. du hast nen Fehler drin:
Zitat:
? x;" ";krieger(x).schwert;" ";krieger(x).hellebarde;" ";krieger(x).spiess;" ";krieger(x).motivation;" ";krieger(x).kampkraft


grinsen grinsen grinsen

Ok.. und was genau soll dieses Ding machen?
Die entsprechenden Soldatentypen mit den zugehörigen Waffen ausstatten?
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 02.03.2016, 12:50    Titel: Antworten mit Zitat

Schnism hat Folgendes geschrieben:
du hast nen Fehler drin:
Wie man's nimmt. Dank fleißiger Benutzung von Copy & Paste bei der Programmerstellung steckt der Schreibfehler in allen Variablen (insgesamt 3mal), und dadurch funktioniert es wieder. Aber du hast Recht, ich habe den Fehler inzwischen korrigiert.
Zitat:
Ok.. und was genau soll dieses Ding machen?
Die entsprechenden Soldatentypen mit den zugehörigen Waffen ausstatten?
Genau. lächeln Das hier ist -wie gesagt- nur ein allererster Testlauf. Der nächste Schritt ist dann das Aufstellen der Kämpfer auf dem Schlachtfeld, und danach kommt die eigentliche Schlacht.

Aber ich hatte dir ja versprochen, daß du das Programm als Modul in dein QBasic - Programm einbinden kannst. Zur Demonstration habe ich das compilierte Programm einmal hochgeladen. Du kannst es dir herunterladen und mit diesem kleinen QBasic - Programm
Code:
CLS
PRINT "bisheriges QBasic - Programm..."
PRINT
SHELL "C:\spiel\kr1.exe"
PRINT
PRINT "...Fortsetzung des QBasic - Programms"

aufrufen und laufen lassen (den Pfad mußt du natürlich entsprechend anpassen).

Und dann habe ich noch zwei Fragen:

1) Du sagst, das Spiel ist für bis zu 6 Spieler. Sind das alles menschliche Spieler, oder übernimmt der Computer die restlichen 5? Oder einen? Tritt der Computer überhaupt als Mitspieler auf?

2) Wie groß ist bei dem Spiel, wie du es bisher benutzt hast, (ungefähr) die maximale Zahl der Soldaten auf dem Schlachtfeld (alles zusammen, von beiden Spielern)?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!


Zuletzt bearbeitet von grindstone am 05.03.2016, 00:48, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 02.03.2016, 20:13    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:

Und dann habe ich noch zwei Fragen:

1) Du sagst, das Spiel ist für bis zu 6 Spieler. Sind das alles menschliche Spieler, oder übernimmt der Computer die restlichen 5? Oder einen? Tritt der Computer überhaupt als Mitspieler auf?

Bis dato kein Computer. Alles "ich" .. Spieler 1: ich, Spieler 2: ich ... durchgeknallt

2) Wie groß ist bei dem Spiel, wie du es bisher benutzt hast, (ungefähr) die maximale Zahl der Soldaten auf dem Schlachtfeld (alles zusammen, von beiden Spielern)?

Es gibt bis dato keine Grenze an Soldaten. Die Grenze wird alleine durch das Geld bestimmt. Rekrutierung: teuer, Training: wucher. Sold: so lala. Da es bei mir (noch?) nicht möglich ist, Soldaten zu entlassen und damit Taler zu sparen, muss man sich überlegen, wieviele man hat und wieviel Sold man zahlen kann.

Gruß
grindstone


Entgegen meiner Überzeugung, das euch das alles nichts angeht, was ich seit 30 Jahren im Herzen trage, hier das gesamte Spiel.

Und ich will KEIN! gemecker hören .. lachen

KLICK
_________________
"...nichts ist so schlimm wie mein programmcode!"


Zuletzt bearbeitet von Schnism am 03.03.2016, 14:02, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 910
Wohnort: Austria

BeitragVerfasst am: 02.03.2016, 23:16    Titel: Antworten mit Zitat

Schnism hat Folgendes geschrieben:
KLICK

Der Server verlangt Benutzername + Passwort.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 03.03.2016, 14:02    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Schnism hat Folgendes geschrieben:
KLICK

Der Server verlangt Benutzername + Passwort.


Stimmt. hatte ein Ordner zu viel im Link und es als ftp Link gesetzt.. muss http sein..
Nun geht es.

@ Stone:
Du kannst die verteilung der Bewaffnung eigentlich rausnehmen, da ja nur "Bewaffnete" Soldaten in den Krieg ziehen können.
Man kann nur, wenn bewaffnung da ist, rekrutieren und somit sind das schon "fertige Soldaten" ..
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 05.03.2016, 00:47    Titel: Antworten mit Zitat

Schnism hat Folgendes geschrieben:
Du kannst die verteilung der Bewaffnung eigentlich rausnehmen...
Im Gegenteil! Durch die flexible Bewaffnung bekommt der Spieler als Feldherr die Möglichkeit, die Fähigkeiten seiner Armee den aktuellen Erfordernissen anzupassen.

Ein Spiess beispielsweise, eine 6m lange, angespitzte Holzstange, ist eine billige und effektive Defensivwaffe gegen Kavallerieangriffe, während er gegen Fußtruppen und zum Angriff praktisch nutzlos ist.

Eine Hellebarde ist teurer, kann aber für alle Zwecke eingesetzt werden. Sie hat eine größere Reichweite als ein Schwert, ist aber schwerfälliger in der Handhabung.

Ein Schwert hingegen ist gegen einen Reiter mit Lanze im Nachteil.

Eine Muskete als teuerste Infanteriewaffe ist auf große Entfernungen gegen alle Ziele einsetzbar, solange sie geladen ist. Eine ungeladene Muskete (mit Bajonett) ist gegen alle Hiebwaffen im Nachteil usw.

Daraus und aus der ganz bewusst geschaffenen Möglichkeit, jeden Soldaten mit mehreren Waffen auszustatten, ergibt sich eine große Zahl möglicher Kombinationen, mit der ein geschickter Feldherr auch mit einer zahlenmässig unterlegenen Armee einen Krieg gewinnen kann. Deshalb auch meine Frage nach dem Computer als Gegner. Man hätte ihm dann nämlich -zumindest in einem gewissen Umfang- künstliche Intelligenz verleihen müssen. Aber das können wir ja erst einmal außen vor lassen.

Aktuell arbeite ich an der Aufstellung auf dem Schlachtfeld und der Bewegung der einzelnen Objekte.

Zitat:
Und ich will KEIN! gemecker hören .. lachen
Wir meckern NIEMALS! Wir geben nur wertvolle Ratschläge, wie man es hätte besser machen können. grinsen

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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 05.03.2016, 12:38    Titel: Antworten mit Zitat

2. Entwicklungsschritt: Platzierung der Objekte auf dem Schlachtfeld und (sehr) einfache Bewegung. Kontrolldarstellung auf einem Grafikscreen.

Die Objekte bewegen sich mit einer zufällig generierten individuellen Geschwindigkeit, die um 2% variiert.

Quellcode
lauffähige .exe - Datei

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
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 05.03.2016, 15:28    Titel: Antworten mit Zitat

Und dazu willst du eine Kollisionsabfrage machen? Wobei das unsinn "wäre" .. keiner würde am anderen vorbeirennen.
D.h. eigentlich würden sie zueinander laufen/rennen/reiten und vom rand wird in die mitte geschossen ..


Hier ist (noch?) keine Unterscheidung der unterschiedlichen Einheiten drin.. korrekt?
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 06.03.2016, 03:24    Titel: Antworten mit Zitat

Zitat:
Und dazu willst du eine Kollisionsabfrage machen?
Gemach, gemach, so weit sind wir noch nicht. lächeln Das war zunächst einmal eine einfache eindimensionale Bewegung. Der nächste Schritt ist eine Erweiterung der Bewegung auf zwei Dimensionen mit Erkennen der Schlachtfeldgrenzen. Das funktioniert mittlerweile.

Als nächstes soll das Objekt nun die Fähigkeit bekommen, seine Umgebung zu erkennen: Freund/Feind, mit Entfernung und Richtung. Das erfordert den Umgang sowohl mit Polar- als auch mit kartesischen Koordinaten.

Vielleicht sollte ich mein Konzept einmal etwas näher erläutern: Während in dem Programmstück, das du gepostet hattest, immer ganze Abteilungen gegeneinander antreten und neben Mannschaftsstärke und Kampfkraft im wesentlichen der Zufallsgenerator über Sieg oder Niederlage entscheidet, ist bei mir jedes Objekt (sprich: jeder Soldat) eine selbständig handelnde Einheit, die aufgrund der zur Verfügung stehenden Informationen (eigene und gegnerische Bewaffnung, Bedrohungslage, Erfolgsaussichten bei Angriff oder Verteidigung usw.) unter Berücksichtigung der weiter oben aufgestellten Regeln entscheidet, was sie als nächstes tut.

Programmtechnisch sieht das so aus, daß in einer zufällig generierten Reihenfolge jedes Element des Arrays krieger() einmal aufgerufen wird und dann besagte Entscheidung trifft und entsprechend handelt (Vorrücken, Angriff oder Rückzug). Ein eventuell angegriffenes Objekt verteidigt sich entsprechend seiner Möglichkeiten, jeder Kampf ist also, unabhängig von der Gesamtzahl der Krieger, immer nur eine Situation Mann gegen Mann, davon aber ganz viele (Deshalb auch meine Frage nach der maximal zu erwartenden Anzahl von Soldaten, da ich natürlich auch bei einem modernen PC die verfügbare Prozessorleistung im Auge behalten muß). Das wird solange wiederholt, bis entweder der Tag vorbei oder die Schlacht entschieden ist.

Soweit meine Grundidee von einer "echten" Simulation. Und ehrlich gesagt: Ich bin selber gespannt, was am Ende dabei herauskommt. zwinkern

Gruß
grindstone

Ach ja:
Zitat:
Hier ist (noch?) keine Unterscheidung der unterschiedlichen Einheiten drin.. korrekt?
Richtig! Da es hier nur um die Bewegung als solche geht, habe ich der Einfachheit halber ausschließlich Milizen generiert. lächeln
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Schnism



Anmeldungsdatum: 13.10.2004
Beiträge: 58
Wohnort: Schweiz

BeitragVerfasst am: 06.03.2016, 10:00    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:

Soweit meine Grundidee von einer "echten" Simulation


Hier allein kommen wir in den Part: unendliche Variationen.

Grund: Taktik! Die sollten wir aussen vor lassen.
Ich empfinde deine Variante (also rein für mich .. ) schon "am ziel vorbeigeschossen"

Ich mache da weiter mit.. aber je weiter du separierst, desto weiter bin ich von dem Ganzen entfernt lächeln

Achja: der Zufall ist der Begleiter des Lebens. Vorallem im Chaos eines Krieges. Dort gibt es keine "klaren Variablen" .. alles unterliegt dem zufälligen Ereignis. (Ein Stein auf dem Boden bringt einen Soldaten zum stolpern, wobei sich ein Schuss löst und ins eigene Munitionslager triffft, dass daraufhin explodiert und trotz überlegenheit aber keiner Minution ist der Krieg dann verloren)

Deshalb mag ich den Zufall ja so lächeln andernfalls wäre es reine Berechnung.

Wähle den Zufall als Ausgleich für die Taktik ? Er MUSS rein. Erinnere dich an David und Goliath.
_________________
"...nichts ist so schlimm wie mein programmcode!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4204
Wohnort: ~/

BeitragVerfasst am: 06.03.2016, 12:29    Titel: Antworten mit Zitat

Der Zufall wird auch bei einer "echten Simulation" immer mit eingebaut werden; jedoch kannst du dann mit einer guten Taktik (ggf. auch mit geringerer Truppenzahl) mehr erreichen als der Gegner.

Ein Einwurf meinerseits: Kaiser ist im Original kein Kriegssimulationsspiel; auch wenn man seine Vorherrschaft durch Kriegszüge stärken kann - bzw. den größten Konkurrenten zu schwächen versuchen kann - haben sie in meinen Spielen eine recht untergeordnete Rolle gespielt. Obwohl, manchmal habe ich ziemlich kriegerisch gespielt und vier oder fünf Angriffe in einem einzigen Spiel gemacht. cool
Das heißt nicht, dass man in der "Neufassung" nicht mehr Wert darauf legen dürfte; aber der Spielcharakter ändert sich dann halt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 06.03.2016, 17:29    Titel: Antworten mit Zitat

Das ist in meiner knapp gehaltenen Beschreibung vielleicht etwas missverständlich rübergekommen: Natürlich habe ich nicht vor, ohne Zufälle zu arbeiten. Der Zufallsgenerator soll an geeigneter Stelle die Unwägbarkeiten des realen Lebens simulieren, beispielsweise dadurch, daß die Kampfkraft oder die Fortbewegungsgeschwindigkeit eines Objektes bei jedem Aufruf um etwa 5% variiert.

Obwohl -da alle Objekte aufeinander reagieren- meiner Einschätzung nach schon die zufällige Reihenfolge des Aufrufs ausreichen müsste, um das gewünschte Chaos zu erzeugen: Schon bei einer Anzahl von 100 Objekten gibt es hier knapp 10^158 Möglichkeiten, und das bei jedem Durchgang neu.

Schnism hat Folgendes geschrieben:
Taktik! Die sollten wir aussen vor lassen.
Warum? Das macht die Sache doch erst richtig interessant. Wobei ich dir soweit zustimme, daß es sinnvolle Vorgabewerte geben sollte, so daß man Parameter einstellen kann, aber nicht muss.

nemored hat Folgendes geschrieben:
Kaiser ist im Original kein Kriegssimulationsspiel
Das Modul, das hier gerade entsteht, ist auch nur Teil (bzw. soll es noch werden) einer insgesamt recht beeindruckenden Wirtschaftssimulation. Dabei habe ich im Hinterkopf, daß es sich vielleicht einmal als Teil eines Baukastensystems auch in andere Programme einbinden oder mit einem passenden Frontend (brauche ich zum Testen sowieso) alleine spielen lässt.

"Kaiser" kenne ich nicht, aber ich habe seinerzeit recht intensiv "Defender of the Crown" gespielt, das scheint ja etwas ähnliches zu sein.

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
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4204
Wohnort: ~/

BeitragVerfasst am: 06.03.2016, 19:58    Titel: Antworten mit Zitat

Dummerweise kenne ich "Defender of the Crown" nicht grinsen aber es scheint mir doch ein deutlich anderes Spielprinzip zu sein. Bei "Kaiser" geht es letztendlich darum, genug Gunst zu sammeln, um zum neuen Kaiser gewählt zu werden - das geschieht in erster Linie durch den Kauf neuer Ländereien, die Sicherung der Nahrungsversorgung (Gesundheit und Zufriedenheit der Bevölkerung regelt den Bevölkerungszuwachs) und Einkommenssicherung (Erträge aus Mühlen und Verkauf überschüssigen Korns sowie Steuern). Gewinnen kann man auch ganz ohne Krieg zu führen. Natürlich ist es trotzdem hilfreich, eine Armee zu unterhalten, wegen der bösen Nachbarn und so - aber mit einer hohen Bevölkerung hat man auch einiges an Milizen, und wenn man nur die Heimat verteidigen will, braucht man nicht mehr allzu viel Zusatzheer.

Ich würde "Kaiser" nicht gerade als Vorläufer der "Total War"-Reihe bezeichnen. happy
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 836
Wohnort: Ruhrpott

BeitragVerfasst am: 06.03.2016, 23:14    Titel: Antworten mit Zitat

Dann ist "Kaiser" wohl eher wie "Die Fugger". Das habe ich auch gespielt, allerdings nicht ganz so häufig. In "Defender of the Crown" geht es darum, zur Zeit von Richard Löwenherz "böse" Normannen aus England zu verjagen.

Na gut, dann werde ich mal weiter daran arbeiten, meinen Kriegern hier zielgerichtetes Laufen beizubringen.

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
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  Weiter
Seite 4 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