Beiträge von Akeshihiro

    Wtf, dann penn ich schon xD Naja, mal schauen ^^


    Vergiss die Formel gleich wieder, die stimmt nur bis zu einem gewissen Zeitpunkt. Hatte den Testbereich grad etwas erhöht und hab gesehen, dass es dann ab nem bestimmten Punkt nicht mehr hinhaut ... Aber egal, macht nix ^^ Dann hier der Generator, natürlich in Java ^^


    Ausgabe bei 10x5:

    Code
    1. |14||19||24||29||34||39||43||46||48||49|
    2. | 9||13||18||23||28||33||38||42||45||47|
    3. | 5|| 8||12||17||22||27||32||37||41||44|
    4. | 2|| 4|| 7||11||16||21||26||31||36||40|
    5. | 0|| 1|| 3|| 6||10||15||20||25||30||35|


    Zum Generieren der Werte hab ich in dem Fall mal einen Generator hinzugefügt, der alles liefern kann und man somit nicht auf die bloßen Zahlen beschränkt ist.

    Also den Generator der Matrix hab ich. Ich frage mich allerdings, ob man das nicht auch irgendwie einfacher machen kann ... Sollen die Felder on-the-fly generiert und hinzugefügt werden oder liegen die bereits vorher in einer Liste und müssen nur noch entsprechend dem Algorithmus an die richtige Stelle verfrachtet werden. Im Moment läuft die Sache so ab, dass der Generator links unten anfängt und dann nach rechts wandert, dabei aber diagonal nach links oben läuft. So, wenn ich mir jetzt aber anschaue, wie die Zahlenwerte da entstehen, dann folgen die einem bestimmten Muster. Egal, ob in x oder in y-Richtung, es ist immer gleich. Es beginnt bei einem bestimmten wert, und dann kommt ein weiterer Wert. Wenn man jetzt die Differenz der beiden Werte nimmt und ihn inkrementiert und zum zweiten Wert draufaddiert, dann hat man den nächsten Wert und das geht so weiter.


    Also im Grunde genommen irgendwie sowas:

    Code
    1. Xi = Xi-1 - Xi-2 + Xi-1


    Solten die zu platzierenden Felder also bereits existieren und einfach nur in einer Liste rumfliegen, dann könnte man entsprechend ein 2-dim. Array mit den Indezes befüllen. Die Indezes zu berechnen ist leichter als das "Wandern".


    Hoffe, jemand versteht, was ich da getippt hab o.O

    In Groovy wäre es das:

    Die Höhe und Breite bei den Sprüngen sind eigentlich ok, wobei die Breite etwas weniger sein könnte, weil über zwei leere Plätze ohne Probleme zu hüpfen ist vielleicht etwas viel.


    Das mit .NET fällt sofort auf, das ist einfach so. Jede Sprache hat ihre Konventionen, an die man sich zwar nicht halten muss, aber sollte, denn die meisten tun es und lesen die Codes auch entsprechend. Wenn man dann einen Code vor der Nase hat, der sich nicht an die Konventionen hält, dann wird das Lesen oft schwer, nicht weil man es nicht kann, sondern weil es nicht zur Sprache passt und der Kopf das verweigert. Einige Konventionen für Java findest du hier: klick


    Das gilt natürlich für alle Sprachen. Jemand, der eine .NET-Sprache verwendet, der wird auch sofort sehen, wenn jemand etwas zwar in .NET geschrieben hat, aber nicht die üblichen Konventionen eingehalten hat, z.B. weil es Java-Stil ist oder auch was ganz anderes, C-Code z.B. hat auch einen sehr markanten Charakter.


    EDIT:
    Hier mal die gesamte offizielle Liste der Java-Konventionen: klick
    Ich kenn die auch nicht auswendig und niemand hält sich zu 100% dran, aber es sollte eine Richtlinie sein.

    Achso ... Ja, mag sein, dass es sowas gibt, aber glaub mir, das hilft dir wenn überhaupt nur bei kleinen Projekten. Bei größeren Projekten wäre das vollkommen irrelevant, weil man selbst mit kurzen Bezeichnern nix verstehen wird. Und wer die Codes mit einer IDE auseinander nehmen wird, der wird sowieso Refactoring einsetzen, wodurch dann vollkommen egal ist, wie lang die generierten Namen sind.


    Es ist nicht unmöglich den Originalcode zu rekonstruieren, keine Frage. Die Frage ist eher, wie viel Aufwand und Zeit man bereit ist dafür zu investieren. Selbst bei kleinen Programmen wird das schon ordentlich Aufwand brauchen und je größer und komplexer das Projekt, desto schwieriger wird es auch. Hinzu kommt auch noch, dass ein guter Obfuscator nicht nur Umbenennungsmaßnahmen durchführt, sondern auch die Abläufe verändern kann, z.B. simple Anweisungen wieder weiter verschachteln oder auslagern in andere Methoden oder sogar Klassen. Was auch ein gutes Feature ist, ist das Einschleusen von unnützem Code, der für die Anwendung absolut keine Bedeutung hat, aber das weiß der "böse Bube" ja nicht und wird versuchen auch das zu verstehen, was auch wieder Zeit frisst. Der Sinn dahinter ist nicht, dass man das Programm dadurch komplett verstümmelt, sondern dass man den Leuten, die versuchen es zu analysieren, versucht die Lust daran zu nehmen, indem man es ihnen so schwer wie nur möglich macht und irgendwann lohnt es sich einfach nicht mehr. Minecraft ist so ein Beispiel. Das will ich gar nicht rekonstruiren, da sitzt man Monate dran, das lohnt sich überhaupt nicht.

    S3cret
    Was meinst du mit Struktur?


    Zum Game: Keine Ahnung, wie ich das nennen soll, aber der "Flow" ist nicht flüssig oder wie auch immer. Kommt einem alles irgendwie künstlich vor, z.B. die Sprünge sind bissl langsam finde ich. Und ich habe es irgendwie geschafft mehrere Kisten in einander zu schieben bzw. fallen zu lassen. Und es gab nen Game Over obwohl mir nix auf den Kopf gefallen war. Und die Kisten verschieben sich zu hackelig, eine saubere kurze Animation wäre da schicker.


    Und auch wenn das hier nicht hingehört, aber der Quellcode sieht nicht nach Java aus, sondern nach .NET. Wenn ihr schon eine andere Sprache verwendet, dann haltet euch bitte auch an die sprachenüblichen Konventionen, das hat schon seine Gründe. Und dass da einige Sachen leicht merkwürdig sind, brauch ich ja nicht zu sagen, das weißt du ja schon ^^

    Was willst du deobfuscaten? Es gibt keine Verweise mehr auf die Originalnamen der Symbole, die sind alle weg. Nen Obfuscator geht einfach über alle Symbole (Variablen, Methoden, Klassen, ...) drüber und benennt die um, mehr nicht.


    Unzippen + Dekompilieren, mehr muss man doch nicht tun =O


    An sich richtig, aber irgenwdie auch nicht. Man bekommt nicht den Original-Code zurück, denn es ist sehr wahrscheinlich, dass der Compiler Optimierungen vorgenommen hat. Und wenn da ein Obfuscator drüber gegangen wär, dann würde man nur Buchstabensalat bekommen.

    Und was soll dieser Rassismus schon wieder? Was hat die Nationalität mit der Sache zu tun? Dumme Menschen gibt es überall, auch Einheimische hier sind doof wie Brot und legen sich mit jedem an. Das ist keine Frage der Nationalität, das ist ein grundsätzliches Phänomen und überall vertreten.

    Es ist egal, wo man wohnt. Jeder kann seine Stimme abgeben, wie er es für richtig hält und keiner, der volljährig ist, wird für ne Minderjährigendisco stimmen. Einige machen das vielleicht mit Absicht, aber sicher nicht alle ...

    Wer macht eigentlich mit was mit, wenn man mal fragen darf? Nur so aus Interesse, weil das was ich vor hatte, werd ich wohl nicht hinbekommen in der Zeit ... Nein, die Zeit wird nicht erhöht, würde auch nix bringen, weil das große Tool Monate fressen wird.