Allegro "von..bis.."-funktion



  • Hey Leute

    Ich bin neu hier hoffe das ist der richtige Breich.

    Ich habe vor ein paar Wochen mit c++ programmieren Angefangen
    Als kompiler benutze ich Dev-c++ und lib's eigentlich nur Allegro

    Mein Problem ist das ich beim Bedingungen der if-funktion viele einzelne Punkte angeben muss. Hier zur veranschaulichung:

    if (z==3 && x==50 && y==y1 ||
    z==3 && x==50 && y==y1+1 ||
    z==3 && x==50 && y==y1+2 ||
    z==3 && x==50 && y==y1+3 ||
    z==3 && x==50 && y==y1+4 ||
    z==3 && x==50 && y==y1+5 ||
    z==3 && x==50 && y==y1+6 ||
    z==3 && x==50 && y==y1+7 ||
    z==3 && x==50 && y==y1+8 ||
    z==3 && x==50 && y==y1+9 ||
    z==3 && x==50 && y==y1+10 ||
    z==3 && x==50 && y==y1+11 ||
    z==3 && x==50 && y==y1+12 ||
    z==3 && x==50 && y==y1+13 ||
    z==3 && x==50 && y==y1+14 ||
    z==3 && x==50 && y==y1+15 ||
    z==3 && x==50 && y==y1+16 ||
    z==3 && x==50 && y==y1+17 ||
    z==3 && x==50 && y==y1+18 ||
    z==3 && x==50 && y==y1+19 ||
    z==3 && x==50 && y==y1+20 ||
    z==3 && x==50 && y==y1+21 ||
    z==3 && x==50 && y==y1+22 ||
    z==3 && x==50 && y==y1+23 ||
    z==3 && x==50 && y==y1+24 ||
    z==3 && x==50 && y==y1+25 ||
    z==3 && x==50 && y==y1+26 ||
    z==3 && x==50 && y==y1+27 ||
    z==3 && x==50 && y==y1+28 ||
    z==3 && x==50 && y==y1+29 ||
    z==3 && x==50 && y==y1+30 ||
    z==3 && x==50 && y==y1+31 ||
    z==3 && x==50 && y==y1+32 ||
    z==3 && x==50 && y==y1+33 ||
    z==3 && x==50 && y==y1+34 ||
    z==3 && x==50 && y==y1+35 ||
    z==3 && x==50 && y==y1+36 ||
    z==3 && x==50 && y==y1+37 ||
    z==3 && x==50 && y==y1+38 ||
    z==3 && x==50 && y==y1+39 ||
    z==3 && x==50 && y==y1+40 ||
    z==3 && x==50 && y==y1+41 ||
    z==3 && x==50 && y==y1+42 ||
    z==3 && x==50 && y==y1+43 ||
    z==3 && x==50 && y==y1+44 ||
    z==3 && x==50 && y==y1+45 ||
    z==3 && x==50 && y==y1+46 ||
    z==3 && x==50 && y==y1+47 ||
    z==3 && x==50 && y==y1+48 ||
    z==3 && x==50 && y==y1+49 ||
    z==3 && x==50 && y==y1+50 ||
    z==3 && x==50 && y==y1+51 ||
    z==3 && x==50 && y==y1+52 ||
    z==3 && x==50 && y==y1+53 ||
    z==3 && x==50 && y==y1+54 ||
    z==3 && x==50 && y==y1+55 ||
    z==3 && x==50 && y==y1+56 ||
    z==3 && x==50 && y==y1+57 ||
    z==3 && x==50 && y==y1+58 ||
    z==3 && x==50 && y==y1+59 ||
    z==3 && x==50 && y==y1+60 ||
    z==3 && x==50 && y==y1+61 ||
    z==3 && x==50 && y==y1+62 ||
    z==3 && x==50 && y==y1+63 ||
    z==3 && x==50 && y==y1+64 ||
    z==3 && x==50 && y==y1+65 ||
    z==3 && x==50 && y==y1+66 ||
    z==3 && x==50 && y==y1+67 ||
    z==3 && x==50 && y==y1+68 ||
    z==3 && x==50 && y==y1+69 ||
    z==3 && x==50 && y==y1+70 ||
    z==3 && x==50 && y==y1+71 ||
    z==3 && x==50 && y==y1+72 ||
    z==3 && x==50 && y==y1+73 ||
    z==3 && x==50 && y==y1+74 ||
    z==3 && x==50 && y==y1+75 ||
    z==3 && x==50 && y==y1+76 ||
    z==3 && x==50 && y==y1+77 ||
    z==3 && x==50 && y==y1+78 ||
    z==3 && x==50 && y==y1+79 ||
    z==3 && x==50 && y==y1+80 ||
    z==3 && x==50 && y==y1+81 ||
    z==3 && x==50 && y==y1+82 ||
    z==3 && x==50 && y==y1+83 ||
    z==3 && x==50 && y==y1+84 ||
    z==3 && x==50 && y==y1+85 ||
    z==3 && x==50 && y==y1+86 ||
    z==3 && x==50 && y==y1+87 ||
    z==3 && x==50 && y==y1+88 ||
    z==3 && x==50 && y==y1+89 ||
    z==3 && x==50 && y==y1+90 ||
    z==3 && x==50 && y==y1+91 ||
    z==3 && x==50 && y==y1+92 ||
    z==3 && x==50 && y==y1+93 ||
    z==3 && x==50 && y==y1+94 ||
    z==3 && x==50 && y==y1+95 ||
    z==3 && x==50 && y==y1+96 ||
    z==3 && x==50 && y==y1+97 ||
    z==3 && x==50 && y==y1+98 ||
    z==3 && x==50 && y==y1+99 ||
    z==3 && x==50 && y==y1+100 )
    {
    z=2;
    }
    z ist die richtung aus der mein Ball kommt und x und y die koordinaten des Mittelpunktes.

    Gibt es einen Befehl das ich schrieben kann if (....y==y1+1 bis 100) ?
    Das würde mir viel Arbeit ersparen. 😃 Teilweise gebrauche ich schon Exel um zeit zu Sparen
    Schonmal danke für eure hilf
    mfg
    Megawurrrm


  • Mod

    Nicht dein ernst, oder? Du kannst auch auf kleiner und größer vergleichen.

    if (z==3 && x==50 && y >= y1 && y <= y1 + 100)
    


  • Super code 😉

    Es gibt nicht nur operator ==, sondern auch >, <, >= und <=. Versuch mal die zu verwenden. Dann dürfte das alles mit 4 Bedingungen lösbar sein.

    Außerdem solltest Du Klammern verwenden, um das ein bisschen übersichtlicher zu machen. (Damit könnte man selbst nur mit operator== wesentlich kürzeren Code als deinen erzeugen):

    if ((z==3 && x==50) && (y==y1 || y==y1+1 || ...))
    

    Bitte Code-Tags verwenden. Und mit Allegro hat das nichts zu tun.

    Edit: SeppJ war schneller^^



  • Das kenne ich sagar
    Danke für die schnelle hilfe



  • Also mal weg von C++, brauchst du glaub ich einen mathematischen Tipp. Du redest von einem Spiel nehme ich an, also willst du sowas wie einen Aufprall oder ähnliches einbauen?
    Jetzt weißt du ja schon mal, dass es mehrere Operatoren gibt, aber vielleicht lässt sich dein Problem auch ganz leicht mit ein paar kleinen Trigonometrischen Funks realisieren, anstelle von "wenn von da, dann prall so ab; wenn von da, ..."



  • Klingt gut aber was ist eine Trigonomische .... ? Das kann ich zur not Googeln
    Wäre aber nett wenn du kurtz schreibst wie ich diese benutze 🙂



  • Netter Code. Ich hab auch mal so programmiert.^^

    Trigonometrische Funktionen: http://de.wikipedia.org/wiki/Trigonometrische_Funktion



  • Megawurrrm schrieb:

    Klingt gut aber was ist eine Trigonomische .... ? Das kann ich zur not Googeln
    Wäre aber nett wenn du kurtz schreibst wie ich diese benutze 🙂

    Winkelmathematik allgemein 😉

    Einfallwinkel = Auswallwinkel (Abprallen) etc..



  • Gerade das habe ich (sogar gestern) noch Programmiert. Ist relativ einfach, nur muss man schon in der 9./10. Klasse gewesen sein, damit das einigermaßen mühelos von Statten geht 😉



  • ich bin in der 11 und habe bald mathe leistungskurs und das schlimmste ist ich steh komplett auf dem schlauch ^^
    habe mir das jetzt mal angeguckt und ausprobiert ich glaube das ist im endefeckt zu viel aufwand weil ich echt nur von 3 wänden und einer stange abprallen lasse ich mache so eine art BrokeBreaker
    Vielen dank für eure schnelle hilfe hat mir viel stoff zum handeln gegeben 🙂



  • Megawurrrm schrieb:

    ich bin in der 11 und habe bald mathe leistungskurs und das schlimmste ist ich steh komplett auf dem schlauch ^^
    habe mir das jetzt mal angeguckt und ausprobiert ich glaube das ist im endefeckt zu viel aufwand weil ich echt nur von 3 wänden und einer stange abprallen lasse ich mache so eine art BrokeBreaker

    Kannst du den LK noch abwählen? Wenn du die Winkelgeschichten Ende der 10. Klasse noch mit solchen Abfragekaskaden löst, obwohl du > und <-Operatoren kennst, wirst du in dem LK nicht viel Spaß haben...



  • das meinte ich nicht mach dir keine sorgen ich habe mir den ausgesucht und komme gut kla - eher habe ich probleme mit demanwenden in einem programm ich habe keine dreiecke und nicht die möglichkeit tan sin oder cos zu benutzen kann höchstens die katheten durch die hypotenuse teilen.
    habe keinen programmier Unterricht -.- habe mir das alles selber beigebracht das mit den <> ist peinlich kann abe rmal passieren



  • Megawurrrm schrieb:

    nicht die möglichkeit tan sin oder cos zu benutzen kann höchstens die katheten durch die hypotenuse teilen.

    Ähh bitte? Sicher, dass du keine Schwierigkeiten mit Mathe hast? Die Funktionen findest du im <complex> -Header, und bis auf Tangens (ich nehm deine Aussage ganz wörtlich: kannst du Katheten durch Katheten teilen?) kannst du dann doch Problemlos alle Winkelfunktionen anwenden (vergiss nicht, dass das Ergebniss im Bogenmaß zurückgegeben wird).


  • Mod

    Hacker schrieb:

    Die Funktionen findest du im <complex> -Header

    Naja. Guck mal noch mal genau nach, welche Funktionen dort zu finden sind und welche nicht.



  • SeppJ schrieb:

    Hacker schrieb:

    Die Funktionen findest du im <complex> -Header

    Naja. Guck mal noch mal genau nach, welche Funktionen dort zu finden sind und welche nicht.

    Das hier sagt was ich meine... 😕

    (Edit nach endlosen Versuchen die Leerzeichen beizubehalten)


  • Mod

    Hacker schrieb:

    SeppJ schrieb:

    Hacker schrieb:

    Die Funktionen findest du im <complex> -Header

    Naja. Guck mal noch mal genau nach, welche Funktionen dort zu finden sind und welche nicht.

    Das hier sagt was ich meine... 😕

    (Edit nach endlosen Versuchen die Leerzeichen beizubehalten)

    SeppJ schrieb:

    Guck mal noch mal ⚠ genau ⚠ nach, welche Funktionen dort zu finden sind und welche nicht.

    Meine Güte, was ist denn mit dir heute wieder los? Irgendwie fehlt wohl 314159265358979, um dich zu beschäftigen und dich vom "Helfen" abzuhalten.



  • http://www.cplusplus.com/reference/std/complex/ schrieb:

    The complex library implements the complex class to contain complex numbers in cartesian form and several functions and overloads to operate with them
    [...]
    Transcendentals overloads:
    cos
    [...]



  • Schön, dass es die Funktionen auch in cmath gibt. Werde ich jetzt diesen Header einbinden? Ist doch mit Templates viel schöner.



  • Hacker schrieb:

    Sicher, dass du keine Schwierigkeiten mit Mathe hast?

    Ja ich bin mir sicher - danke für deine hilfe aber ich glaube nicht das ich mehr haben möchte.

    An die anderen helfer auch meinen besten dank



  • Megawurrrm schrieb:

    Hacker schrieb:

    Sicher, dass du keine Schwierigkeiten mit Mathe hast?

    Ja ich bin mir sicher

    Haha, ich meinte eher dass du gerade den Sinus und Kosinus des entsprechenden Winkels durch das Teilen der Gegen-, bzw. An-Kathete durch die Hypothenuse bekommst.


Anmelden zum Antworten