Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
skript:bewegungen [2016/05/19 13:55] fbonowski angelegt |
skript:bewegungen [2018/05/09 18:12] (aktuell) d.golovko |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Simulation von Bewegungen ====== | ====== Simulation von Bewegungen ====== | ||
+ | Wir machen eine Zeichnung, die unseren Roboter darstellen soll, und lassen sie bewegen. Unser "Roboter" sieht so aus: | ||
+ | |||
+ | |||
+ | {{:skript:robot-sketch.png?70|}} | ||
+ | |||
+ | |||
+ | Programm, welches den Roboter vorwärts bewegen und drehen lässt. Version mit globalen Variablen ohne Klassen: | ||
+ | |||
+ | <code java> | ||
+ | int radius = 25; // Radius des Roboters | ||
+ | float xPos = 300; // x-Position des Roboters | ||
+ | float yPos = 200; // y-Position des Roboters | ||
+ | float angle = 0; // Richtung des Roboters | ||
+ | |||
+ | void setup() { | ||
+ | size(600, 400); | ||
+ | } | ||
+ | |||
+ | void draw() { | ||
+ | clear(); | ||
+ | drawRobot(); | ||
+ | move(4); | ||
+ | turn(0.1); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * Zeichnet den Roboter | ||
+ | */ | ||
+ | void drawRobot() { | ||
+ | ellipse(xPos, yPos, radius*2, radius*2); | ||
+ | // *2, weil die ellipse-Funktion den Diameter verwendet | ||
+ | line(xPos, yPos, xPos + radius * cos(angle), yPos + radius * sin(angle)); | ||
+ | // Linie zwischen dem Roboterzentrum und dem Roboterrand in die Bewegungsrichtung | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * Bewegt den Roboter nach vorne in seine Richtung | ||
+ | */ | ||
+ | void move(float distance) { | ||
+ | xPos = xPos + distance * cos(angle); | ||
+ | yPos = yPos + distance * sin(angle); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * Rotiert den Roboter | ||
+ | */ | ||
+ | void turn(float angleDiff) { | ||
+ | angle = angle + angleDiff; | ||
+ | } | ||
+ | </code> |