Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Projekt für die Schule (https://www.delphipraxis.net/158714-projekt-fuer-die-schule.html)

Julie92 28. Feb 2011 07:35

Delphi-Version: 2006

Projekt für die Schule
 
Hey, ich brauche unbedingt eure Hilfe!
Wir müssen für die Schule ein Programm schreiben, in dem wir einen Kreis erstellen müssen, der sich bewegt und dabei vllt auch noch zappelt. Der Kreis darf aber nur eine Linie sein, also darf nicht ausgemalt sein. Wir sollen den Kreis als Klasse erstellen. Alles soll im Rahmen der objektorientierten Programmierung laufen und wir sollen dann dazu einen Vortrag machen. Ich hab keine Ahnung was ich machen soll, aber ich muss dieses Jahr Informatik unbedingt einbringen.:oops:
Ich hoffe ihr könnt mir helfen..
Vielen Dank schonmal im Voraus für die Hilfe.:wink:

Sherlock 28. Feb 2011 07:37

AW: Projekt für die Schule
 
Tja, dann fangen wir mal von vorne an:

Was ist ein Kreis? Wie definiert sich ein Kreis? Mit welchen Methoden hast du bisher etwas in Delphi gezeichnet?

Sherlock

Julie92 28. Feb 2011 07:44

AW: Projekt für die Schule
 
Also wir haben bis jetzt mit den Methoden Verschwinden, Erscheinen und Bewegen gearbeitet. Es ist also ein Programm entstanden mit 3 Buttons, in dem ein Kreis erscheint, den man bewegen kann und der dann wieder verschwindet. Wir sollen das Programm so ändern, dass man mehrere Kreise bewegen kann, die nicht weiß im innern sind. Der Kreis besteht also nur aus der Linie. Das kann man iwie über den Winkel ( mit Sinus oder Kosinus) programmieren, wie genau weiß ich aber nicht..

DeddyH 28. Feb 2011 07:53

AW: Projekt für die Schule
 
Du solltest Dir überlegen, welche Eigenschaften und Methoden so ein Kreis hat/haben muss. Das bringst Du erst einmal zu Papier, wenn dieses Gerüst dann Deiner Meinung nach vollständig ist, kannst Du es als Klasse programmieren.

Julie92 28. Feb 2011 08:11

AW: Projekt für die Schule
 
Über die Eigenschaften von dem Kreis (Radius,Winkel...) und die Methoden weiß ich bescheid, ich hab nur keine Ahnung wie ich sie umsetzen soll.:|

DeddyH 28. Feb 2011 08:45

AW: Projekt für die Schule
 
Wie sieht denn Dein bisheriger Quelltext aus?

HeZa 28. Feb 2011 15:27

AW: Projekt für die Schule
 
Hallo,

zeig Mal das Programm mit Verschwinden, Erscheinen und Bewegen. Dann wissen wir auf welchem Niveau Ihr euch bewegt.

Zitat:

Zitat von Julie92 (Beitrag 1084781)
Also wir haben bis jetzt mit den Methoden Verschwinden, Erscheinen und Bewegen gearbeitet.


Julie92 2. Mär 2011 19:04

AW: Projekt für die Schule
 
Ja das kann ich aber erst am Montag früh machen weil wir nur da Informatik haben und wir nur dann Zugriff auf das Programm haben.

himitsu 2. Mär 2011 21:04

AW: Projekt für die Schule
 
Zitat:

Zitat von Julie92 (Beitrag 1084781)
Also wir haben bis jetzt mit den Methoden Verschwinden, Erscheinen und Bewegen gearbeitet.

Irgendwie tut mir es in den Augen weh.

Ist jetzt nicht die Schuld von Julie, sondern eher vom Lehrer.

Soooo schwer ist Pascal nun auch nicht, als daß man unbedingt mit dieser "überalterten" und sprachlich vergewaltigten Bibliothek arbeiten muß. :?:
Vorallem da Dieses auch noch als "leichte" Lehrsprache entwickelt wurde.

Welches dann nur Probleme bereitet, da wir schwerer helfen können, da von uns kaum einer diese Code-Bibliothek kennt und man es auch schwerer hat, wenn man dann mal "richtig" programmieren möchte.

hans ditter 2. Mär 2011 21:32

AW: Projekt für die Schule
 
@Himitsu
wie jetzt? das ist sogar eine eigene Bibliothek?:shock::pale: Unglaublich...:?

Müsst ihr den Kreis denn wirklich komplett neu erfinden oder dürft ihr vorhandene Methoden benutzen?

LG; hans ditter

himitsu 3. Mär 2011 00:57

AW: Projekt für die Schule
 
Ja, sowas wurde mal vor Jahren "erschaffen", um es Schülern noch einfacher zu machen ... ist quasi ein Framwork, welches viele Delphifunktionen kapselt und hinter deutschen Bezeichungen versteckt.
Leider ist es manchmal nicht unbedingt leicht verständlich, was sich hinter soeiner Funktion wirklich versteckt, wenn man die entsprechende Lib nicht kennt.
Und im Gegenzug können wir schlechter Tipps geben, da wir ja nicht wissen wie die von uns empfohlene Funktion oder Komponente denn darin eventuell heißen könnte.

Hide oder Visible:=False > Verschwinden
Show oder Visible:=True > Erscheinen
Left und Top > Bewegen

Nja, dann mal sehn was Julie uns am Montag presentiert.

fkerber 3. Mär 2011 01:27

AW: Projekt für die Schule
 
Hi,

Zitat:

Zitat von hans ditter (Beitrag 1085474)
wie jetzt? das ist sogar eine eigene Bibliothek?:shock::pale: Unglaublich...:?

Jepp, so ist es.
Nennt sich "Stifte und Mäuse (SuM)" und scheint es für zig Programmierspracehn (u.a. eben auch Delphi) zu geben.


LG, Frederic

Luckie 3. Mär 2011 05:45

AW: Projekt für die Schule
 
Ich hoffe, der Entwickler dieser Bibliothek wurde danach gezwungen ein Office Paket damit zu programmieren. :evil:

Thom 3. Mär 2011 06:01

AW: Projekt für die Schule
 
Zitat:

Stifte und Mäuse wurde als Konzept zur Einführung in die objektorientierte Programmierung entwickelt. Strukturelle Restriktionen und die Art des Einsatzes lassen erhebliche Zweifel aufkommen, ob es noch für einen zeitgemäßen Einführungsunterricht brauchbar ist.
Da.

Julie92 7. Mär 2011 07:02

AW: Projekt für die Schule
 
Den Quelltext gibts weiter unten.

-187- 7. Mär 2011 07:04

AW: Projekt für die Schule
 
Verwende bitte die Delphi Tags um Code zu posten. Diesen Code möchte so sicherlich keiner lesen^

Julie92 7. Mär 2011 07:05

AW: Projekt für die Schule
 
Wir sollen den Kreis erstmal setzen, und dann mit der Hintergrundfarbe ausfüllen damit nur noch die Linie zu sehen ist. Wir sollen den Kreis "zappeln" lassen, indem wir immer wieder den Mittelpunkt um ein kleines Stückchen verschieben.
Vielen Dank schonmal für die ganze Hilfe.:)

Julie92 7. Mär 2011 07:13

AW: Projekt für die Schule
 
Wie funktioniert das mit den Delphi Tags? Tut mir Leid, bin hier neu..

-187- 7. Mär 2011 07:36

AW: Projekt für die Schule
 
Editier den Beitrag und markier den Code. Dann klickst du auf den Delphi Helm...

In etwa so:

Code:
[DELPHI]HIER DEIN CODE[/DELPHI]

Julie92 7. Mär 2011 07:37

AW: Projekt für die Schule
 
Delphi-Quellcode:
unit Rund2;

interface

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

type
  TKreis = class
  private
    x, y, Durchm: Integer;
  public
    constructor Create (xx,yy,dd: Integer);
    procedure Erscheinen;
    procedure Bewegen;
    procedure Verschwinden;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  Kreis: TKreis;

implementation

{$R *.DFM}

constructor TKreis.Create (xx,yy,dd: Integer);
begin
  x := xx; y := yy; Durchm := dd;
end;

procedure TKreis.Erscheinen;
begin
  Form1.Canvas.Ellipse (x, y, x+Durchm, y+Durchm);
end;

procedure TKreis.Bewegen;
var i: Integer; Quelle, Ziel: TRect;
begin
  for i := x-5 to Form1.ClientWidth-Durchm-x-5 do
  begin
    //Kopieren einer Figur an einen anderen Platz
    Quelle := Rect(i,  y-5, i+Durchm+5, y+Durchm+5);
    Ziel  := Rect(i+1, y-5, i+Durchm+6, y+Durchm+5);
    Form1.Canvas.CopyRect(Ziel, Form1.Canvas, Quelle);
    sleep (10); //Pause
  end;
end;

procedure TKreis.Verschwinden;
begin
  Form1.Refresh; //Form1 erneuern
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Kreis := TKreis.Create (30,30,180);
  Canvas.Brush.Color := clWhite; // ansonsten Grau
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Kreis.Erscheinen;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Kreis.Bewegen;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Kreis.Verschwinden;
end;

end.

-187- 7. Mär 2011 07:39

AW: Projekt für die Schule
 
Du hättest deinen ersten Beitrag nur editieren brauchen. Jetzt haben wir die hässlichen Code immernoch im Thread :)

Deep-Sea 7. Mär 2011 08:57

AW: Projekt für die Schule
 
Wäre es nicht besser, TKreis von TGraphicControl abzuleiten und dann natürlich auf dessen eigenen Canvas zu zeichnen anstatt fix auf den der "Form1"?! :shock:

Nachtrag:
Wenn man den Kreis nicht ausgefüllt haben möchte, setzt man nicht Canvas.Brush.Color auf irgend etwas sondern statt dessen Canvas.Brush.Style auf bsClear.

roboter202 7. Mär 2011 09:21

AW: Projekt für die Schule
 
Hallo,

Also da hast du ja schon fast alles was du brauchst du musst nun nur dafür sorgen das es etwas RANDOM wird am besten du machst dir einen Timer und generierst zuerst einen Integer im beriech von 0-2.

Delphi-Quellcode:
i := Random(3) ;
Nun ordnest du verschieden Integern verschiedene Funktionen zu

Bsp
Delphi-Quellcode:
case i of
  0 : TKreis.Erscheinen ;
  1 : TKreis.Bewegen ;
  2 : TKreis.Verschwinden;
end;
Oder wenn ihr das noch nicht kennt kannst du auch ne If-Abfage machen
Delphi-Quellcode:
If i = 0 then TKreis.Erscheinen ;
If i = 1 then TKreis.Bewegen ;
If i = 2 then Kreis.Verschwinden;
So und um einen "hohlen" Kreis zu erzeugegen
Delphi-Quellcode:
  Kreis := TKreis.Create (30,30,180);
  Canvas.Brush.style := bsclear ;
(Nur wenn die Hintergrundfarbe des Fensters clBtnFace ist )

Gruß Christian

Deep-Sea 7. Mär 2011 09:25

AW: Projekt für die Schule
 
Zitat:

Zitat von roboter202 (Beitrag 1086388)
So und um einen "hohlen" Kreis zu erzeugegen
Delphi-Quellcode:
  [...]
  Canvas.Brush.Color := clBtnFace;

*auf meinen vorherigen Post zeig* :roll:

roboter202 7. Mär 2011 09:37

AW: Projekt für die Schule
 
Zitat:

Zitat von Deep-Sea (Beitrag 1086391)
Zitat:

Zitat von roboter202 (Beitrag 1086388)
So und um einen "hohlen" Kreis zu erzeugegen
Delphi-Quellcode:
  [...]
  Canvas.Brush.Color := clBtnFace;

*auf meinen vorherigen Post zeig* :roll:

Habs erst nachher gesehen deine Lösung ist besser :thumb:

Julie92 7. Mär 2011 18:49

AW: Projekt für die Schule
 
Also bewirkt Random das Zappeln des Kreises? Wo muss ich diesen Teil in meinen Quelltext einfügen?
Danke :)

-187- 7. Mär 2011 18:52

AW: Projekt für die Schule
 
In Delphi gibt Random eine Zufallszahl im Bereich 0 <= X < Range zurück. Wird der Parameter Range nicht angegeben, liefert Random einen Real-Wert im Bereich

0 <= X < 1.

Um den Zufallszahlengenerator zu initialisieren, rufen Sie Randomize einmal auf oder weisen der Variablen RandSeed vor dem Aufruf von Random einen Wert zu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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