probleme mit zusammenrechnen

  • GM 7

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

  • probleme mit zusammenrechnen

    Hi,
    ich habe ein Problem beim Zusammenrechnen von zweierlei werten.
    es ist etwas komplizierter. hier der code

    GML-Quellcode

    1. {
    2. xwert = ds_grid_value_x(global.wgrid,1,1,10,10,global.rad);
    3. ywert = ds_grid_value_y(global.wgrid,1,1,10,10,global.rad);
    4. ds_grid_set(global.wgrid,xwert+1,ywert,(ds_grid_get(global.wgrid,xwert,ywert) + (1)));
    5. }


    zur Erklärung: Ich möchte den wert von global.rad in meinem grid um 1 erhöhen. Allerdings nicht da wo der Name des Rades steht sondern da wo die Anzahl des Rades steht, nämlich eine Spalte darunter.
    Naja es kommt ja im Prinzip nur auf die letzte Zeile an. Ich bekomme immer diesen Error
    " Wrong type of arguments to +."
    Warum?
    Der folgende Code, ein paar Zeilen weiter unten klappt einwandfrei.

    GML-Quellcode

    1. ds_grid_set(global.wgrid,3,1,(ds_grid_get(global.wgrid,3,1) - (1)));


    Ich bin kurz vorm Verzweifeln :headtouch:

    Danke schonmal

    Gruß Terra
  • Wie wärs erstmal, statt den Wert global.rad im grid zu suchen, die x und y Werte schon davor einfach in 2 globale Variablen zu stecken?
    global.radX = 0
    global.radY = 3

    und das hier

    GML-Quellcode

    1. (ds_grid_get(global.wgrid,xwert,ywert) + (1))

    könnte auch besser einfach global.rad+1 sein.
    Dann noch überlegen, ob global.rad nicht vielleicht ein string ist? Weil der Error hört sich nach sowas an.
    "das war meine letzte flamewar PM an dich ."
  • ja global.rad ist ein string. Das sollte aber doch eigentlich keine Auswirkungen haben, da ich ja nicht mit global.rad rechne.
    xwert und ywert sind der platz wo sich global.rad im grid befindet. xwert+1, ywert ist der platz wo steht, wie oft ich global.rad besitze. Das möchte ich um 1 verringern, da bringt es mir auch nichts wenn ich global.rad +1 mache. Ich glaube du hast mich da ein bisschen missverstanden, oder?
  • Du rechnest sehr wohl mir global.rad. Schließlich liegt der Wert, den du abfragst (und zu 1 addierst) auf x = xwert, y = ywert, was wiederum vorher als die Position von global.rad definiert wurde.

    Dieser Code:

    GML-Quellcode

    1. (ds_grid_get(global.wgrid,xwert,ywert) + (1))

    verheißt (wenn mindestens eine der Zellen mit global.rad belegt ist) nichts anderes als:

    GML-Quellcode

    1. (global.rad + 1)
  • Es geht auch darum, deinen Code einfacher zu machen, denn ds_grid_value_x muss erst suchen und es ist nicht 100% gegeben, dass er auch wirklich das ausgibt, was du gerne hättest, wenn zB 2 Stellen den gleichen Wert haben...
    Wenn du aber ein global.radX hättest, dann wäre auch viel klarer, was gemeint ist. Auch für dich später, falls du den Code später einmal nochmal analysieren musst, aber nicht mehr genau weist, was das ist, oder wenn du das grid veränderst, und du zufällig den Wert von global.rad einfügst, dann haste ein Problem, und du weist nicht mehr, dass du irgendwo im Code ein ds_grid_value_x hast, das genau von diesem Wert abhängig ist, dass dieser Wert einmalig ist...

    global.rad ist das selbe wie ds_grid_get(global.wgrid,xwert,ywert), und da haben wir auch dein problem.
    du rechnest global.rad + 1 und das geht nicht weil rad ein string ist.
    ds_grid_set(global.wgrid,xwert+1,ywert,(ds_grid_get(global.wgrid,xwert,ywert) + (1)));
    Ich weis ja nicht genau was de willst, aber wenn global.rad ein string ist, der nur eine Zahl beinhaltet, könnteste es ja so machen:

    GML-Quellcode

    1. {
    2. xwert = ds_grid_value_x(global.wgrid,1,1,10,10,global.rad);
    3. ywert = ds_grid_value_y(global.wgrid,1,1,10,10,global.rad);
    4. ds_grid_set(global.wgrid,xwert+1,ywert,(ds_grid_get( string(real(global.rad)+ 1))); //ds_grid_get(global.wgrid,xwert,ywert) == globel.rad
    5. }
    "das war meine letzte flamewar PM an dich ."
  • vielen dank für die antworten.
    ich habe meinen fehler gefunden.

    GML-Quellcode

    1. ds_grid_set(global.wgrid,xwert+1,ywert,(ds_grid_get(global.wgrid,xwert+1,ywert) + (1)));

    so muss es aussehen.
    ihr habt recht, ich habe mit global.rad gerechnet, genau das wollte ich aber nicht. ich wollte mit der Zahl im feld xwert+1,ywert rechnen. und ich habe einfach hinter dem 2. xwert das +1 vergessen :wacko:
    Ok nun hake ich das thema erstmal als fertig ab, ich werde mir aber deine vorschläge zur vereinfachung vornehmen :)

    Gruß Terra