Skip to content

Commit

Permalink
Merge pull request #32 from denkspuren/development
Browse files Browse the repository at this point in the history
Logo-Doku und -Beispiel ergänzt um Farbe und Strichstärke
  • Loading branch information
denkspuren committed Apr 16, 2024
2 parents 85be66e + 6f9ce3b commit 50e18a8
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 7 deletions.
41 changes: 34 additions & 7 deletions logo.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@
-------|----------
`penDown()` | Setze den Stift auf die Zeichenfläche (Anfangseinstellung)
`penUp()` | Hebe den Stift von der Zeichenfläche ab
`forward(`_distance_`)` | Bewege dich um _distance_ vorwärts
`backward(`_distance_`)` | Bewege dich um _distance_ rückwärts
`right(`_degrees_`)` | Drehe dich um die Gradzahl _degrees_ nach rechts
`left(`_degrees_`)` | Drehe dich um die Gradzahl _degrees_ nach links
`forward(double distance)` | Bewege dich um _distance_ vorwärts
`backward(double distance)` | Bewege dich um _distance_ rückwärts
`right(double degrees)` | Drehe dich um die Gradzahl _degrees_ nach rechts
`left(double degrees)` | Drehe dich um die Gradzahl _degrees_ nach links
`color(int red, int green, int blue)` | Setze Stiftfarbe mit den RGB-Farbanteilen _red_, _green_ und _blue_
`color(int rgb)` | Setze Stiftfarbe auf den kodierten RGB-Farbwert _rgb_
`lineWidth(double width)` | Setze Stiftbreite auf _width_
Mit diesen Kommandos wird die Schildkröte über die Zeichenfläche geschickt. Wenn man Abfolgen von diesen Kommandos programmiert, kann man teils mit sehr wenig Code interessante Zeichnungen erstellen.
Mit diesen Kommandos wird die Schildkröte über die Zeichenfläche geschickt und das Zeichnen gesteuert. Wenn man Abfolgen von diesen Kommandos programmiert, kann man teils mit sehr wenig Code interessante Zeichnungen erstellen.
> Wenn man die Befehle in der JShell zur Verfügung hat, benötigt man kein weiteres Wissen zu Logo. Man kann mit den Sprachkonstrukten von Java arbeiten.
Expand Down Expand Up @@ -117,6 +120,30 @@ void tree(Turtle turtle, double size) {
tree(turtle, 150);
// tree

Clerk.markdown("""
-- We are done!
Clerk.markdown(STR."""
## Beispiel 3: Es kommt Farbe ins Spiel
Mit Farbe wird die Welt bunter und interessanter, und die Strichstärke kann man ebenfalls für Effekte einsetzen. Im nachfolgenden Beispiel verblasst die Farbe zunehmend und die Strichstärke lässt allmählich nach.
```java
\{Text.cutOut("./logo.java", "// triangles")}
```
""");

// triangles
Turtle turtle = new Turtle(300,350);
void triangle(Turtle turtle, double size) {
turtle.forward(size).right(60).backward(size).right(60).forward(size).right(60 + 180);
}

for (int i = 1; i <= 36; i++) {
turtle.color(255,i * 256 / 37, i * 256 / 37);
turtle.lineWidth(1.0 - 1.0 / 36.0 * i);
triangle(turtle, 101 - 2 * i);
turtle.left(10).forward(10);
}
// triangles

Clerk.markdown(STR."""
-- Soviel möge als *Demo* vorerst genügen!
""");
38 changes: 38 additions & 0 deletions skills/RGB/RGB.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
enum RGB { // https://w3schools.sinsixx.com/css/css_colornames.asp.htm
AQUA(0x00FFFF),
BLACK(0x000000),
BLUE(0, 0, 255),
FUCHSIA(0xFF00FF),
GRAY(0x808080),
GREEN(0, 255, 0),
LIME(0x00FF00),
MAROON(0x800000),
NAVY(0x000080),
OLIVE(0x808000),
PURPLE(0x800080),
RED(255, 0, 0),
SILVER(0xC0C0C0),
TEAL(0x008080),
WHITE(0xFF, 0xFF ,0xFF),
YELLOW(0xFFFF00);

final int colorCode;

private RGB(int red, int green, int blue) { colorCode = color(red, green, blue); }
private RGB(int code) { this(red(code), green(code), blue(code)); }

static int color(int code) {
return color(red(code), green(code), blue(code));
}

static int color(int red, int green, int blue) {
return ((red & 0xFF) << 16) | ((green & 0xFF) << 8) | (blue & 0xFF);
}

static int red(int colorCode) { return (colorCode & 0b11111111_00000000_00000000) >> 16; }
static int green(int colorCode) { return (colorCode & 0b11111111_00000000) >> 8; }
static int blue(int colorCode) { return colorCode & 0b11111111; }

static String hex(int code) { return String.format("0x%06x", color(code)); }
String hex() { return hex(this.colorcode); }
}

0 comments on commit 50e18a8

Please sign in to comment.