AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Lego Logo für Arme" - Brauche Hilfe

Offene Frage von "Juggy D"
Ein Thema von Juggy D · begonnen am 20. Okt 2008 · letzter Beitrag vom 21. Okt 2008
 
Juggy D

Registriert seit: 18. Okt 2007
29 Beiträge
 
#1

"Lego Logo für Arme" - Brauche Hilfe

  Alt 20. Okt 2008, 17:42
Hallo,

wir behandeln grad das Thema theoretische Informatik. Und ich kommt damit irgendwie nicht klar (zumnidest nicht mit den ganzen Automaten).

Also wir sollen das Programm "Lego Logo für Arme" erstellen, ich habs auch schon teilweise raus.
W steht für wiederholung, v für vorwärts, r für "nach rechts"/winkel und die zahl für anzahl der pixel.
Also man gibt z.B. "w4(v100r90)" ein und es wird ein rechteck gezeichnet. Mit dem Programm, das ich erstellt habe geht das auch (da ich für die befehle einzelne Edit Felder genommen habe).
Doch wie sieht das ganze aus, wenn ich da z.b. "w4(w7(v100r90)r10)" eingeben möchte. Ich kann da ja nicht unzählige Edit Felder hinmachen für mehrere w's und r's. Habt ihr eine idee? Bzw. wie ist es möglich, aus einem einzigen Editfeld heraus die w's mit der zahl der pixel und die r's mit der zahl der pixel voneinander zu trennen bzw. zeichnen zu lassen.
Meine jetzige version sieht halt so aus:

Delphi-Quellcode:
unit UersterVersuch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    BStart: TButton;
    EVorwaerts: TEdit;
    EWinkel: TEdit;
    LVorwaerts: TLabel;
    LWinkel: TLabel;
    Shape1: TShape;
    EWiederhol: TEdit;
    LWiederholung: TLabel;
    procedure BStartClick(Sender: TObject);
    procedure drehe(Winkel:real);
    procedure gehe(Schritte:real);


  private
    { Private-Deklarationen }
  public

    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  x1, y1, alpha: real;

implementation

{$R *.dfm}

procedure TForm1.drehe(Winkel:real);
begin
    alpha:=alpha-Winkel*PI/180;
end;

procedure TForm1.gehe(Schritte:real);
  var x2,y2:real;
  begin
    Form1.Canvas.MoveTo(round(x1),round(y1));
    x2:=x1+Schritte*cos(alpha);
    y2:=y1-Schritte*sin(alpha);
    Form1.Canvas.LineTo(round(x2),round(y2));
    x1:=x2;
    y1:=y2;
  end;


procedure TForm1.BStartClick(Sender: TObject);
var i, z: integer;
begin
  x1:=300;
  y1:=300;
  z:= Strtoint(EWiederhol.Text);

    for i:=1 to z do
      begin
        gehe(strtofloat(EVorwaerts.Text));
        drehe(Strtofloat(EWinkel.Text));
      end;
end;

end.
Wäre für jede Hilfe dankbar.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz