Fugger 2 - Wirtschaftssimulation

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fugger 2 - Wirtschaftssimulation

    Liebe Community!

    Ich habe vor einigen Wochen den GameMaker (wieder)entdeckt, und nach ein wenig Einarbeitungszeit damit begonnen, eine alte Wirtschaftssimulation namens Fugger 2 nachzubauen. Dies soll hauptsächlich zum weiteren Erlernen des GameMaker dienen, Veröffentlichung ist in dieser Form nicht geplant. Beim Herumprobieren bin ich leider auf das erste Problem gestoßen, wobei mir Google und die Hilfe nicht weitergeholfen haben:

    Die Methode um die Produktionsaufträge in Fugger 2 zu ändern:


    Sobald der Mauszeiger die obere Hälfte des Wortes "Korn" erreicht, verändert er sich in ein + (respektive - auf der unteren Seite) Symbol welches durch Linksklick die Art des Produktes ändert. Das selbe Prinzip funktioniert mit der Arbeiteranzahl und der Felderanzahl. Der jeweils markierte Text wird rot geschrieben.


    Ich habe mich wie gesagt an einer Rekonstruktion gewagt, wobei es hier eher um die technische Umsetzung geht, die grafische Gestaltung müsste deutlich ausgebaut werden.




    Meine Frage ist also: Ist es im GameMaker möglich eine solche Steuerung umzusetzen? Und wenn dies nicht funktionieren sollte, welche Alternativen wären für euch denkbar?

    Ich bin für jede Hilfe dankbar, freue mich schon darauf, mein GameMaker Wissen zu verbessern.

    Hier noch der Link zu meinem bisherigen Projekt: Download .

    MfG

    Strainer
  • So also erstmal war garnicht so einfach erstma zu raffen was du meinst. aber egal hab es ja nun.
    Also du willst das wenn du auf das wort im TExt etwas oberhalb bist die anzahl erhöhen und wenn du etwas tiefer bist verringern.

    Ok also mach das wie Folgt. Für das beispiel der Roten Worte im Text.
    Da ja das wort so ziemlich immer an der selben stelle im Text steht fragst du einfach ab ob die maus sich in eine Bereich befindet oder nicht.
    Hier mal ein Bild dazu. Der text ist ca immer in eine Rechteeck bei 100x290 bis 200x315.


    Wenn nun die maus in dem bereich ist ( das machst du mit kolision_rectangle) dann wird gleich danach geprüft ob die maus in der ober ren hälft ist oder in der untern.
    das machst du wieder mit kolision_rectangle und machst das rechteck bis zum halben text eben nur. wenn es nicht war ist muss es automatisch in der anderne hälfte dein
    Das Rechteck ist ca 100x25 Pixel groß. Das sollte auch für lange wörter reichen. wenn icht mach es einfach größer.

    GML-Quellcode

    1. if mouse_x>100 and mouse_x<200 and mouse_y>290 and mouse_y<315 then
    2. {
    3. //jetzt die ober hälfte
    4. if mouse_x>100 and mouse_x<200 and mouse_y>290 and mouse_y<303 then
    5. {
    6. //deine anweisung für die ober hälfte. Also zahl erhöhen
    7. }
    8. else
    9. {
    10. //deine anweisung für die untere hälfte. Also zahl erhöhen
    11. }
    12. }
    Alles anzeigen


    Und so machst du das auch bei allen andern.

    Denn das ist eine nicht auf Objekten basieren Oberflächen (Buttons) steuerung.
    Die man meist nur im 3d modus verwenden. Aber sehr empfehlens wert
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Hey.

    Also eine derartige Steuerung muss eigentlich schon möglich sein.

    Mein Einfall dazu wäre folgender:

    1. Die Änderung des Cursor-Sprites + / -

    Der Cursor (als Objekt verwendet) benötigt ein Collision-Event zu dem Objekt welches die Produktart anzeigt und je nachdem z.B. den Sprite "Korn" oder "Fisch" annimmt. In dem Collision-Event muss dann geprüft werden, ob sich das Cursor-Objekt auf der oberen oder unteren Hälfte des Produkt-Objektes befindet.

    Ich bin leider nicht gut in GML.. und auch alles Andere als ein Profi... :pinch: aber ich versuch's mal per D&D darzustellen. ^^

    (Cursor-Objekt)

    :event_collision: Collision mit Objekt "Produktart"
    :action_ifvariable: Werte '' y '' ''Produktart.y +16'' smaller than // +16 ist ein Platzhalter für die Höhe des Sprites geteilt durch 2.
    :action_begin:
    :action_sprite: Change into sprite: cursor_plus
    :action_end:
    :action_else:
    :action_begin:
    :action_sprite: Change into sprite: cursor_minus
    :action_end:

    2. Die Änderung der Ware an sich

    Hierzu - wäre ein Vorschlag - müsste sich die Ware bei der Wahl ihrer Sprites nach einer Variable orientieren, die durch Mausklicks beeinträchtigt wird.

    Das könnte funktionieren:

    (Objekt "Produktart")
    :event_create: Create-Event
    :action_variable: Variable: produktart Wert: 1

    -------------

    :event_step: Step-Event
    :action_ifvariable: if "produktart" smaller than 1
    :action_begin:
    :action_variable: Variable: produktart Wert: 1
    :action_end:
    :action_ifvariable: if "produktart" equal to 1
    :action_begin:
    :action_sprite: Change into Sprite "korn"
    :action_end:
    :action_ifvariable: if "produktart" equal to 2
    :action_begin:
    :action_sprite: Change into Sprite "fisch"
    :action_end:
    ... etc.

    ----------

    :event_mouse: Left-Pressed
    Für Objekt "Cursor": if "sprite_index" equal to "cursor_plus"
    :action_begin:
    :action_variable: Variable: produktart Wert: +1 (relative)
    :action_end:
    Für Objekt "Cursor": if "sprite_index" equal to "cursor_minus"
    :action_begin:
    :action_variable: Variable: produktart Wert: -1 (relative)
    :action_end:


    Das wäre jetzt so mein Vorschlag, wie es in etwa funktionieren könnte.
    Ich weiß, es ist D&D und daher sicher etwas unprofessionell. :pinch:

    Aber es könnte klappen! :D

    - MfG. DarkViper
  • Erstmals vielen Dank für eure umfangreichen Antworten, bin gerade dabei das ganze umzusetzen. Scheint auch super zu funktionieren, eine Frage die ich noch hätte: Kann ich mit der draw_text-Funktion auch Texte in verschiedenen Farben ausgeben? So könnte ich erreichen, dass das jeweils angewählte Wort im Text wie im alten Vorbild in rot geschrieben wird.

    MfG
  • Strainer schrieb:

    Erstmals vielen Dank für eure umfangreichen Antworten, bin gerade dabei das ganze umzusetzen. Scheint auch super zu funktionieren, eine Frage die ich noch hätte: Kann ich mit der draw_text-Funktion auch Texte in verschiedenen Farben ausgeben? So könnte ich erreichen, dass das jeweils angewählte Wort im Text wie im alten Vorbild in rot geschrieben wird.

    MfG


    Jop geht mit:

    GML-Quellcode

    1. draw_set_color();

    In klammern kommt dann eins davon:
    Spoiler anzeigen
    c_aqua
    c_black
    c_blue
    c_dkgray
    c_fuchsia
    c_gray
    c_green
    c_lime
    c_ltgray
    c_maroon
    c_navy
    c_olive
    c_purple
    c_red
    c_silver
    c_teal
    c_white
    c_yellow

    mfg Death
  • Hi
    Ja man kann die Textfarbe ändern mit folgenden Befehlen

    draw_set_color(col)
    Setzt die Farbe, die von nun an zum Zeichnen verwendet wird.

    draw_text_transformed(x,y,string,xscale,yscale,angle)
    Zeichnet den String an der angegebenen Position genau wie oben, aber horizontal und vertikal mit den angegebenen Werten skaliert und um den Winkel angle Grad gegen den Uhrzeigersinn gedreht.

    Gruss
    Drachen
    :)
  • Danke, draw_set_color habe ich natürlich schon entdeckt, meine Frage ist eher ob ich die Farbe innerhalb eines Strings von draw_text ändern kann. Das heißt ich müsste jeweils nur einzelne Worte der Zeile

    draw_text(512,y+60,string(global.produktion1written)+ string(global.worker) + ' Arbeitern auf 4 Feldern.')


    Hierbei müssten nur einzelne Worte des Strings ""Erzeugt Weizen mit " in anderer Farbe(rot) geschrieben werden, was zusätzlich noch wie der Cursor flexibel geändert werden sollte.



    Die Sache mit den Cursorn und der Veränderung der Produktion hat allerdings sehr gut funktionert, vielen Dank nochmal dafür, wen es interessiert hier die Version an der ich es getestet habe. Ich habe allerdings keine fixen Rechtecke definiert, da die Wortlänge zwischen den einzelnen Produkten doch relativ stark variiert. Ich befürchte allerdings, dass diese Methode bei der großen Anzahl an später möglichen Strings problematisch werden könnte.

    Deshalb überlege noch eine Berechnung mithilfe von string_length durchzuführen, wofür ich aber einen anderen Font brauchen würde, da der jetztige nicht wirklich vorhersehbar ist (das große W hat um vieles mehr Pixel als das große F, nur so als Beispiel). Dies könnte mir die Arbeit ersparen, für jeden neuen String neue Werte für mouse_x und mouse_y auszulesen und diese abzufragen.

    Hier das aktualisierte Projekt: Download .

    MfG