Objekt buchstaben oder zahl zufügen

  • GM 8

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

  • Objekt buchstaben oder zahl zufügen

    Hallo

    Habe folgende Frage:

    Ich möchte dass ein objekt sozusagen eine zahl ist also Ein objekt soll eine zahl von 100 sein so ähnlich wie ein highscore denn wenn jetzt ein anderes objekt irgendwo gegen knalt soll von dem Zahlen objekt z.b. 10 abgezogen werden.

    Jetzt meine frage wie kann ich sowas machen ohne denn Highscore und ohne die Leben Funktion?
    Meine Webseite: jesoftmedia.de
  • Steht ja da. Im Create Event

    GML-Quellcode

    1. Objekt_Zahl = 100;


    EDIT: Und ich würde Variablen nicht unbedingt mit Objekt_ beginnen. Sind ja keine Objekte. Nimm vlt "points" stattdessen oder "var_score" oder sowas. Aber das ist unwichtig.
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.
  • In dem du ihr einen Wert zuweist.
    Im normal Fall tut man dies im Createvent.
    Du musst bedenken, dass die Variable nur lokal existiert.
    Du kannst also auf direktem Wege nur innerhalb der Instanz, in welcher du die Variable definierst auch auf sie zugreifen.
    Wenn du nur eine Instanz des Objektes im room platziert hast, kannst du auch mit obj_name.variablenname auf die Variable von einem anderen Objekt drauf zugreifen.
    Oder du hängst ein "global." vor den Namen, sowohl bei dem definieren, als auch beim abfragen. So kannst du auch von jedem Objekt darauf zugreifen.
  • Ok Leider verstehe ich das mit denn variablen noch nicht vieleicht könnte jemand mal einen link zum lernen oder so reinschreiben?

    Denn wenn ich das so mache wie ich es verstanden habe dann ist im code ein fehler im anhang der code.
    Dateien
    • Beispiel gmk.zip

      (23,45 kB, 235 mal heruntergeladen, zuletzt: )
    Meine Webseite: jesoftmedia.de
  • Stop Stop Stop.
    So einfach geht das nicht per Variablen.

    Erstmal @Variablen:

    Variablen kann man gut als Häuser erklären. Stell dir vor, du sitzt Zuhause und ein Kollege will zu dir kommen, weiß jedoch nicht wo du wohnst. Was machst du?
    Natürlich du gibst ihm deine Adresse.

    Eine Variable ist nichts anderes. Nur das die Adresse für uns Variablennamen (um sich diese leichter zu merken, der PC arbeitet intern mit Zahlen als Adressen) sind. Das heißt

    GML-Quellcode

    1. Notizen = 5;

    Macht nichts anderes als, dass die Variable Notizen, falls es sie vorher noch nie gab, nun erstellt wird, und die 5 dort einzieht.

    Um die 5 nun zu besuchen, musst du nur noch ihre Adresse wissen, also nur noch den Variablennamen. Indem du Notizen schreibst, kommst du nun in den folgenden Code immer an die 5 dran, und kannst sie ggf. weiterverarbeiten.

    Wichtig dabei: Das ganze ist case-sensetive, also wird Groß- und Kleinschreibung beachtet. Damit wäre also: Notizen eine völlig andere Adresse als notizen. und nOTIZEN ist was völlig anderes als NoTiZeN usw..

    Auch wichtig ist: Du kannst mit einer Variable natürlich erst dann Arbeiten, wenn der Computer sie schon kennt, oder könntest du jemanden sagen wo du wohnst, wenn du dies selbst gar nicht weißt? Deswegen sollte man alle (nicht lokalen) Variablen immer im Create Event bekannt geben (initialisieren). Also musst du :event_create: => :action_code: und dann beispielsweiße die kleine Code stelle von oben einfügen, welche die Variable für das Objekt (! andere Objekte können erstmal (ohne weitere Operationen) nicht an die gleiche Variable dran, und kennen diese nicht) bekannt gibt. Das Objekt ist also sogesehen die Straße, in welcher die ganzen Häuser (Variablen) platz finden. Der D&D Befehl ist :action_variable: den du wahrscheinlich vorher immer benutzt hast.

    Ich denke das wichtigste kannst du dir in den YYG-Tutorials aneingenen, oder du liest, und arbeitest das Tutorial hier auf der gm-d von Windapple durch (Link).

    Wie schon oben angedeutet, geht das natürlich nicht ganz so einfach. Eine Variable ist kein Objekt! Eine Variable kann Eigenschaften des Objektes beschreiben, für Fallunterscheidungen und soweiter benutzt werden. Aber nicht einfach -10 und das Objekt ist 1/10 Kopf-Kürzer.

    Du musst das ganze in ein Verhältnis zueinander "programmieren". Wieder ein "ach so tolles" Beispiel was mir grade einfällt: Du willst dein Haus, da es für die zu klein ist, um 1/10 vergrößern, aber indem du einfach sagst "Los werd 1/10 größer", wird dein Haus natürlich nicht einfach von selbst größer. ^^

    So und nun zweites @Problem:
    Da ich aus dein Example auch nicht recht schlau werde, kann ich dir dort ehrlich gesagt nicht wirklich weiter helfen. Ich denke mal du willst dort wo der Spieler auf den Balken trifft, den Balken "ausradieren". Wenn ja, dann würde sich das über surfaces machen lassen, jedoch wäre das wahrscheinlich zuviel des guten.

    Sorry wenn der Beitrag als Spam gilt, wollte aber möglichst nochmal Versuchen das mit den Variablen zu erklären.

    Mfg.,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • Erst einmal Danke werde mir die anleitung und das toturial mal anschauen aber vieleicht hilft dir ja wenn ich sage was genau ich machen wollte

    Also ich wollte machen das ich ein objekt habe welches auch in einem raum gezeichnet wird und dieses objekt soll als highscore dienen also dem objekt soll eine zahl gegeben werden z.b. 100 und wenn jetzt das auto gegen die wand fährt soll 10 abgezogen werden und am ende nach dem mann z.b. geparkt hatt soll das Objekt mit denn anfangs 100 auf einer anderen seite gezeigt werden.
    Meine Webseite: jesoftmedia.de
  • Yo,das hab ih auch schon probiert aber irgendwie nicht geschafft (bin selber GML Noob ^^ )
    Versuchsmal mit:

    Im Create Event vom Auto

    GML-Quellcode

    1. var_leben=100


    Im Collisions Event

    GML-Quellcode

    1. var_leben-=10


    Im Draw Event (mach nen neues objekt namens text oder so und mach dann für diesen code applies to text)

    GML-Quellcode

    1. draw_text=var_leben


    So habe ichs versucht genauso funzt es nicht,denn der text bleibt immer 100? (komischerweise)
    musst halt rumprobiern..
    MfG Flozzel
    Ich hasse Game Maker ( :gmlove: )
  • Also ich hab mir dein Example nicht angeschaut, aber ich kann dir sagen, was du machen musst:

    Im Create machst du

    GML-Quellcode

    1. hp = 100;
    2. showtext = 0;

    und im Collision Event mit deiner Wand

    GML-Quellcode

    1. hp -= 10;

    Das showtext gibt an, ob deine Variable hp angezeigt werden soll (0 = nicht zeigen, 1 = zeigen)

    Eventuell kannst du noch reintun

    GML-Quellcode

    1. if (hp <= 0) {
    2. show_message("Du hast dein Auto zu Schrott gefahren!");
    3. room_restart();
    4. }


    Das bewirkt, dass wenn man keine Lebensenergie mehr hat eine Meldung angezeigt wird, dass dein Auto kapuut ist und dass der Raum neugestartet wird. Schau vlt. die Funktionen in der Hilfe nach.

    Dann eben wenn du das Auto eingeparkt hast:

    Falls das auf Berührung funktioniert eben einfach Kollisionsevent benutzen und dort reinmachen:

    GML-Quellcode

    1. showtext = 1;


    Oder wenn das den Ort und die Geschwindigkeit überprüft:

    GML-Quellcode

    1. if (place_meeting(x,y,obj_parkplatz) && speed == 0) {showtext = 1;}

    Das überprüft, ob an der Stelle des Autos (x,y) sich ein Parkplatz befindet und ob die Geschwindigkeit 0 beträgt (also das Auto still steht).

    und im Draw Event:

    GML-Quellcode

    1. if (showtext) {draw_text(4,4,string(hp));}


    Ich hoffe ich konnte helfen :) Falls du nicht ganz mitkommst schau in der Hilfe noch oder frag einfach :)
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.
  • @Fozzel´s GML Code
    Anstatt das was in deinem Draw-Event stand muss das hier rein sonst kannst du das alte lassen:

    GML-Quellcode

    1. draw_text=(x,y,string(var_leben))
    2. //Drawt den Text an die Position des Objekts!


    Und wenns zertört werden soll:

    GML-Quellcode

    1. instance_destroy()
    2. show_text("Leider hast du dein Auto zerstört! Deine Punktzahl: "+string(var_leben))
    3. //Hier werden die restlichen Leben angezeigt "var_leben" kannst du durch jede beliebige Variable austauschen! Falls du willst das das Spiel erneut abgespielt wird setze diesen Code ein wenn nicht Lösche ihn raus.
    4. game_restart()


    EDIT:
    @Lightning der Draw-Event Code von dir ist irgendwie komisch, probier das mal:

    GML-Quellcode

    1. if showtext=1
    2. {draw_text(4,4,string(hp))}

    Ich würde erstmal Lightning´s Code ausprobieren mit diesem Draw-Event Code dann müsste das gehen!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Rohkar ()