variable if abfrage

  • Hi,

    Arbeite gerade an einem spiel und will da eine varriable if abfrage einbauen. habe versucht den anfang der if abfrage mit execute auszüfuhren ging aber nicht.

    if ????????? then
    bleibt gleich
    else
    bleibt gleich
    endif

    Einmal editiert, zuletzt von manuel6000 (16. Juli 2012 um 17:28)

  • habs beim script aber noch nicht und das mit execute habe ich weider weggetan so funktioniert es ja einwandfrei nur habe ich die anderne karten noch nicht eingebaut.

  • Nach aktuellem Informationsstand rate ich einfach mal, dass dein Problem folgendes ist:

    Du möchtest die Bedingung in der If-Abfrage variabel halten; eine Variable zum Beispiel soll den benötigten Operator (>, <, <>, >=, <=, =, ==) liefern.
    Nach meinem Wissensstand ist das in dieser Form unmöglich. Du kannst im Prinzip nur eine verschachtelte If-Abfrage benutzen oder eben eine Kombination aus Switch und If.

    Hoffe, dass ich dein Problem richtig verstanden habe.
    Gruß stay

    PS: Versuche bitte mal, deine Frage in verständlichem Deutsch zu formulieren und achte auf die Rechtschreibung - sonst ist das wildes Rätselraten.

  • ja genau das meine ich und die variablen die da vorkommen solten auch variable sein.

    dann muss ich halt jede if abfrage extra schreiben, da es so nicht geht.

  • Beispiel?

  • Spoiler anzeigen
    [autoit]

    $a = 'If $b = 5 and $c = "4" then'
    $b = 'If $y = "65" or $n = "5" then'
    execute($b)
    $t = 4
    $e= 5
    else
    $t = 3
    $e = ""
    endif

    [/autoit]
  • ... Das Beispiel.....
    Argh!

    $y ist nicht definiert -> Error.
    $a und $b bekommen Werte zugewiesen, die so oder so nicht genutzt werden.
    Bei der Deklaration von $a und $b würde dir der Interpreter auch nochmal ein paar Fehler schmeißen. Wenn schon so:

    [autoit]


    $a = "If $b = 5 and $c = '4' then"
    $b = "If $y = '65' or $n = '5' then"

    [/autoit]


    Und wieso setzt du Zahlen überhaupt in Anführungsstriche?:S

    lg chess

    Edit:
    Okay, du hast den Post editiert.

  • So macht man das...

    Spoiler anzeigen
    [autoit]


    $b = 5 ;6
    $c = "4"

    [/autoit] [autoit][/autoit] [autoit]

    $a = ($b = 5 And $c = "4")

    [/autoit] [autoit][/autoit] [autoit]

    If $a Then
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    $t = 4
    $e = 5
    Else
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    [/autoit] [autoit][/autoit] [autoit]

    $t = 3
    $e = ""
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • ja aber das geht mti solchen zeilen nicht mehr oder

    [autoit]

    If ($jump_2[$_player_move] < 15 And $jump[$_player_move] = True Or $jump_2[$_player_move] = 0) And ((_beetween($figur_y[$_player_move],355+10,380) (Or _beetween($figur_x[$_player_move],355,390) And $figur_y[$_player_move] >= 330)) Or (_beetween($figur_y[$_player_move],330 -10,346) Or _beetween($figur_x[$_player_move],-10,25) And $figur_y[$_player_move] <= 355) Or( $figur_y[$_player_move] <= 295 And _beetween($figur_x[$_player_move],-6,21) = False)) Then

    [/autoit]

    Edit:
    achso jetzt weiß ich was du meinst danke probiere es glecih mal

  • Eigentlich sind diese "logischen" Ausdrücke so zu verwenden, dass garkeine "IF/THEN"-Kaskaden entstehen....

    Spoiler anzeigen
    [autoit]

    If $b=5 and $c="4" Then
    $t = 4
    Else
    $t = 3
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;entspricht

    [/autoit] [autoit][/autoit] [autoit]

    $t= 3 + 1 * ($b=5 and $c="4")

    [/autoit]
  • das war doch nur ein besipiel ist für mein spiel gedacht und da sind die kollisionabfragen pro level ja immer einzigartig und sonst müsste ich immer die ganze if funkiton neu schreiben udn die ist 10 zeilen lang bei 20 karten wären dass 200 zeilen so sind es nur 60