Suche Lazarus Grafikturtle

Antworten
okeoke5
Beiträge: 3
Registriert: Mi 11. Jun 2014, 14:42

Suche Lazarus Grafikturtle

Beitrag von okeoke5 »

Ich suche schon länger nach einer Lazarus Grafikturtle und habe keine gefunden.
Sie sollte einfach Befehle können.

Mfg okeoke5

P.S. Ich bin nicht sehr erfahren in Lazarus/ Delphi

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Suche Lazarus Grafikturtle

Beitrag von gocher »

Für Delphi: http://www.hsg-kl.de/faecher/inf/materi ... turtle.php kannst Du nach FP portieren!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Suche Lazarus Grafikturtle

Beitrag von Mathias »

Ich hatte mal eine kleine Turtle-Bibliothek geschrieben, vieleicht hift dir dies weiter. Die Winkel-Daten würde ich noch von Integer auf einen Real-Typ abändern.

Code: Alles auswählen

unit Turtles;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, ComCtrls, GradForm;
 
const
  Pi2 = Pi * 2;
 
type
  TTurtle = object
    constructor Init(DC : HDC);
    procedure PenDown;
    procedure PenUp;
    procedure ForWd(l : Integer);
    procedure SetPos(x, y : Integer);
    procedure SetHeading(w : Integer);
    procedure SetHeadingLeft(w : Integer);
    procedure SetHeadingRight(w : Integer);
  private
    Winkel : Real;
    PenPos  : record
      x, y : Real;
    end;
    Down : Boolean;
    PaintDC : HDC;
  end;
 
implementation
 
constructor TTurtle.Init;
begin
  PaintDC := DC;
  Winkel := 0;
  Down := True;
  PenPos.X := 0;
  PenPos.Y := 0;
end;
 
procedure TTurtle.PenDown;
begin
  Down := True;
end;
 
procedure TTurtle.PenUp;
begin
  Down := False;
end;
 
procedure TTurtle.ForWd;
var
  x, y : Real;
begin
  x := Cos(Winkel) * l + PenPos.X;
  y := Sin(Winkel) * l + PenPos.Y;
  if Down then begin
    MoveToEx(PaintDC, Round(PenPos.X), Round(PenPos.Y), nil);
    LineTo(PaintDC, Round(x), Round(y));
  end;
  PenPos.X := x;
  PenPos.Y := y;
end;
 
procedure TTurtle.SetPos;
begin
  PenPos.X := x;
  PenPos.Y := y;
end;
 
procedure TTurtle.SetHeading;
begin
  Winkel := w / 360 * Pi2;
end;
 
procedure TTurtle.SetHeadingLeft;
begin
  Winkel := Winkel + w / 360 * Pi2;
end;
 
procedure TTurtle.SetHeadingRight;
begin
  Winkel := Winkel - w / 360 * Pi2;
end;
 
begin
 
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Suche Lazarus Grafikturtle

Beitrag von corpsman »

Mein Programm L System nutzt ebenfalls eine Turtle Engine, hier kannst du auch gleich rekursive Strukturen Zeichnen lassen...
--
Just try it

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Suche Lazarus Grafikturtle

Beitrag von Komoluna »

Oh, dann bin ich also nicht der einzige, der eine Turtleengine geschrieben hat...
(Meine Turtle kann aber ähnlich wie die von corpsman auch Turtlecode interpretieren:
--Standart Turtlecode
F: Nach vorne und zeichen
f: Nach vorne ohne zeichnen
+: Nach Rechts drehen
-: Nach Links drehen

--Mein erweiterter Turtlecode
a90: Den Drehwinkel von +/- auf 90° (oder jeden anderen) Wert festlegen
x50: Die Bewegungslänge von F/f auf 50px (oder jeden anderen) Wert festlegen
)
Falls interesse besteht, einfach Bescheid geben.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Suche Lazarus Grafikturtle

Beitrag von Mathias »

corpsman hat geschrieben:Mein Programm L System nutzt ebenfalls eine Turtle Engine, hier kannst du auch gleich rekursive Strukturen Zeichnen lassen...

Super Programm. :)

Ich habe ein kleiner Schönheits-Fehler endeckt, bei Fliesskommazahlen-Eingabe wird bei mir nur ein '.' akzeptiert. Meine Ländereinstellung ist auf CH.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Suche Lazarus Grafikturtle

Beitrag von corpsman »

*g* danke, wie du an der Caption sehen kannst ist das Tool uralt und noch aus Delphi Zeiten, ich such mal den source, wenn er sich halbwegs brauchbar nach Lazarus Portieren läst, dann stelle ich ihn online.
--
Just try it

okeoke5
Beiträge: 3
Registriert: Mi 11. Jun 2014, 14:42

Re: Suche Lazarus Grafikturtle

Beitrag von okeoke5 »

Kann mir jemand das komplette Programm schicken. Würde es mir gerne mal angucken. Bin sehr unerfahren in Lazarus.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Suche Lazarus Grafikturtle

Beitrag von Mathias »

okeoke5 hat geschrieben:Kann mir jemand das komplette Programm schicken. Würde es mir gerne mal angucken. Bin sehr unerfahren in Lazarus.

Google doch mal ein bischen, da wirst du viele fertige Lösungen finden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

okeoke5
Beiträge: 3
Registriert: Mi 11. Jun 2014, 14:42

Re: Suche Lazarus Grafikturtle

Beitrag von okeoke5 »

Nein habe ich nicht.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Suche Lazarus Grafikturtle

Beitrag von corpsman »

Na spätestens auf meinen Post hin, hättest du es bei meiner Homepage versuchen können, und wärst fündig geworden...
--
Just try it

Antworten