This site requires JavaScript, please enable it in your browser!
Greenfoot back

Pointifix's Comments

Back to Pointifix's profile

mhhmm was mir jz eig noch aufgefallen ist, dass, wenn man bedenkt was für eine starke dritte attacke der magier hat, und das er bei jeden normalen schuss den gegner einfrirrt, dann kann man den archer durchaus lassen, also die aufteilung passt
setRotation(angle); //Wobei angle der berechnete winkel von vorhin ist. Die Rotation hat hier keinen einfluss auf die bewegung, nur auf die grafische drehrichtung. Mit Math.atan2() hab ich mich nicht verschrieben, atan2 heist nur das es 2 argumente annimmt, also Math.atan2(double,double); das is das selbe wie Math.atan(double / double); nur das du dir das dividiert sparst.
generell, sofern du willst das andere benutzer deinen source code sehen können, würde ich diesen mithochladen, da dir schneller bei problemen geholfen werden kann und vorallen, damit andere neue benutzer aus hochgeladenen scenarien lernen können und sich sachen abkucken können, is ja schließlich ne lernplattform ;)
und nein, smooth mover hat kein turnTowards(double,double); :P du kannst ja einfach nachkucken was da drinnen ist :)
mit highscoreliste meinte ich deinen highscore screen, den hab ich schon bei einem anderen greenfoot scenario gesehen, haste denn abgekuckt? ;) Um Winkelfunktionen in java verwenden zu können, einfach import java.lang.Math; importieren, die funktionsaufrufe kannst du dir hier ankucken: http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html zb.: angle = Math.sin(value); Um Akteure "flüßig" zu bewegen geben ich denen immer 2 werte. Einmal den move_x anteil und einmal den move_y anteil (beides simple double variablen), mit denen kann ich dann einfach (bei Smooth-Mover) setLocation(getExactX()+move_x,getExactY()+move_y); machen um sie zu bewegen, anstatt move() zu verwenden. Naja und um die move_x und move_y anteile zu verändern ganz normale winkel-funktions-mathematik verwenden, meistens sind das eh nur math.sin und math.cos die du brauchst um den x und y anteil zu errechnen. Falls das zu "geschwollen" erklärt war hier ein kleines bsp um bei deiner gegner klasse die bewegung zu errechnen.: double angle = Math.atan2(player_x - getExactX(),player_y - getExactY()); move_x = Math.cos(angle) * speed; move_y = Math.sin(angle) * speed; Wobei angle der winkel zwischen spieler und gegner ist und speed die geschwindigkeit des gegners (also sozusagen die hypotenuse aus move_x und move_y). Sollte was nicht funktionieren von dem was ich geschrieben habe kannst du auch gerne den code mithochladen (einfach bei share das häkchen bei "publish source code" reinmachen) und ich kuck mir das an sofern ich helfen kann ;) mfg, Pointifix
thehe look at my highscore^^
noch ein paar kleinigkeiten die mir aufgefallen sind ;) (ja ich weiß bin kritisch) Bei den Hindernissen werden die gegner immer wieder zurückgesetzt was bewirkt das sie sozusagen flimmern oder wie auch immer, auf jeden fall kannst du das verhindern in dem du die wandüberprüfung direkt nach dem move befehl setzt, sodass er direkt zurückgesetzt wird bevor er erneut gezeichnet wurde. Die Geschoße (Pfeile und co.) sind keine Akteure der klasse Smooth Mover, du hast sie schätzungsweise nur mit turnTowards und dem normalen move befehl zur bewegung gebracht, dazu gibt es ne bessere lösung, die klasse Smooth Mover kannst du einfach oben bei "Edit" unter "Import Class" hinzufügen und dann die geschoße als unterklasse dazu machen. Wenn das geschafft ist kannst du sämtliche funktionen aus smooth mover verwenden, darunter hat jeder ateur dann eine genauere Position (normalerweise sind X und Y int werte, bei smooth mover sind es double werte) dadurch bewegt sich jeder unteractor von smooth mover viel flüßiger, da der befehl move dann move(double) lautet und nicht mehr move(int). Auch würde ich nicht den turnTowards befehl verwenden, da er nur einen Int wert für den Winkel liefert, am besten einfach die koordinaten des spielers mit denen der Maus subtrahieren und den winkel (in float oder double) der hypotenuse berechnen. Das ist eine variante, die andere wäre mit einem move_x und move_y zu arbeiten und den Pfeil oder was auch immer mit SetLocation(double,double) zu bewegen, dadurch erreichst du eine höhere genauigkeit der flugbahn ;) Der ganze aufwand sollte eig nur dazu gut sein, dass ein pfeil wirklich dort ankommt, wo ich geklickt habe, und nicht etwas daneben, das führt nämlich dazu, wie mir bei dir aufgefallen ist, das man gegner an gewissen position (also wenn sie in gewissen winkel auf dich stehen) nicht treffen kannst, ohne dich zu bewegen ;) mfg, Pointifix
Ah ich sehe du hast ne highscore liste eingefügt ;D noch gar nicht bemerkt, sehr nett nur leider koppiert nicht ? ;) Müsst dich halt mal mit der Greenfoot UserInfo Api befassen ;)
nette sache, ich finde bei dir passt das zusammenspiel aus programmierqualität und grafisches können sehr gut, sofern du die grafiken alle selber machst? Wenn ja hoffe ich für dich im besitz von einem CS zu sein, ohne photoshop geht bildbearbeitung heutzutage nicht mehr ;D