From 2878f1e34c2c2e19d5b7f6fd368dbf9ec0c6277f Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Mon, 15 Dec 2025 00:36:33 +0100 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D1=83=D1=8E=20=D0=B3=D0=BB=D0=B0=D0=B2=D1=83?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BD=D0=B8=D0=BC=D0=B0=D1=82=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2/8_turtle/core/build.gradle" | 5 + .../core/src/net/caraus/turtle/Turtle.java" | 154 +++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 "\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/build.gradle" create mode 100644 "\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/src/net/caraus/turtle/Turtle.java" (limited to 'Занимательное программирование/2/8_turtle/core') diff --git "a/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/build.gradle" "b/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/build.gradle" new file mode 100644 index 0000000..c2fa637 --- /dev/null +++ "b/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/build.gradle" @@ -0,0 +1,5 @@ +[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' + +sourceSets.main.java.srcDirs = [ "src/" ] + +eclipse.project.name = appName + "-core" diff --git "a/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/src/net/caraus/turtle/Turtle.java" "b/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/src/net/caraus/turtle/Turtle.java" new file mode 100644 index 0000000..ff7fc99 --- /dev/null +++ "b/\320\227\320\260\320\275\320\270\320\274\320\260\321\202\320\265\320\273\321\214\320\275\320\276\320\265 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/2/8_turtle/core/src/net/caraus/turtle/Turtle.java" @@ -0,0 +1,154 @@ +package net.caraus.turtle; + +import java.util.ArrayList; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Sprite; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.Stage; +import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; +import com.badlogic.gdx.scenes.scene2d.ui.SelectBox; +import com.badlogic.gdx.scenes.scene2d.ui.Skin; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.scenes.scene2d.ui.TextField; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; +import com.badlogic.gdx.utils.ScreenUtils; + +public class Turtle extends ApplicationAdapter { + SpriteBatch batch; + Texture img; + TextButton goButton; + TextButton moveButton; + TextButton applyButton; + HorizontalGroup container; + Stage stage; + TextField textField; + SelectBox selectBox; + Sprite turtle; + int turtleX = 110; + int turtleY = 110; + boolean isDrawing = false; + ShapeRenderer shapeRenderer; + ArrayList beginnings = new ArrayList(); + ArrayList endings = new ArrayList(); + + @Override + public void create () { + batch = new SpriteBatch(); + img = new Texture("turtle.png"); + turtle = new Sprite(img); + + stage = new Stage(); + stage.getViewport().getCamera().position.y = 20; + stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false); + Gdx.input.setInputProcessor(stage); + container = new HorizontalGroup(); + container.setFillParent(true); + stage.addActor(container); + + Skin skin = new Skin(Gdx.files.internal("skin/clean-crispy-ui.json")); + + textField = new TextField(null, skin); + container.addActor(textField); + + selectBox = new SelectBox(skin); + selectBox.setItems("Oben", "Unten", "Links", "Rechts"); + container.addActor(selectBox); + + goButton = new TextButton("Zeichnen", skin); + goButton.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) + { + isDrawing = true; + } + }); + container.addActor(goButton); + + moveButton = new TextButton("Bewegen", skin); + moveButton.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) + { + isDrawing = false; + } + }); + container.addActor(moveButton); + + applyButton = new TextButton("Anwenden", skin); + applyButton.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) + { + try { + int value = Integer.parseInt(textField.getText()); + + if (isDrawing) { + beginnings.add(new Vector2(turtleX, turtleY)); + } + switch (selectBox.getSelected()) { + case "Oben": + turtleY += value; + break; + case "Unten": + turtleY -= value; + break; + case "Links": + turtleX -= value; + break; + case "Rechts": + turtleX += value; + break; + default: + break; + } + if (isDrawing) { + endings.add(new Vector2(turtleX, turtleY)); + } + } catch (NumberFormatException e) { + } + } + }); + container.addActor(applyButton); + + shapeRenderer = new ShapeRenderer(); + shapeRenderer.setColor(0, 0, 0, 1); + } + + @Override + public void render () { + ScreenUtils.clear(1, 1, 1, 1); + + stage.act(Gdx.graphics.getDeltaTime()); + stage.draw(); + + shapeRenderer.begin(ShapeType.Filled); + + for (int i = 0; i < beginnings.size(); ++i) { + shapeRenderer.rectLine(beginnings.get(i), endings.get(i), 5); + } + + shapeRenderer.end(); + + batch.begin(); + + turtle.setPosition(turtleX, turtleY); + turtle.draw(batch); + + batch.end(); + } + + @Override + public void dispose () { + batch.dispose(); + img.dispose(); + stage.dispose(); + shapeRenderer.dispose(); + } +} -- cgit v1.2.3