AGB  ·  Datenschutz  ·  Impressum  







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

Pyramide zeichnen

Ein Thema von me2u · begonnen am 15. Mär 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
me2u
(Gast)

n/a Beiträge
 
#1

Pyramide zeichnen

  Alt 15. Mär 2007, 20:22
Hi,

ich soll in Informatik eine (möglichst große) Pyramide in Delphi zeichnen.

Ich hab das jetzt auch soweit, dass pro Zeile immer mehr Sternchen (meine Pyramidenbauteile ) dazukommen, jedoch geht das nur in eine Richtung und man müsste eben noch Leerzeichen einfügen, dass der oberste Punkt der Pyramide genau in der Mitte ist.

http://www.directupload.net/images/070315/Gg2uDMTn.jpg

Das ist mein Problem, denn ich weiß absolout nicht wie es geht. Ich habe zwar schon mit einer zweiten FOR Schleife expeimentiert, aber dann hatte ich es genau andersrum, also dass die Pyramide pro Zeile am Anfang immer mehr Leerzeichen bekommt.

Hier mal mein Code, soweit ich ihn für durchschaubar halte ^^

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    pnlTitel: TPanel;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var y : integer;
    i : integer;
    zeile : string;

begin
  y := 0;
  Memo1.Lines.Clear;
  while y < Memo1.Height do
    begin
      zeile := '';
      for i := 0 to (y div 15) do
        begin
          zeile := zeile + '*'
        end;

      Memo1.Lines.Add (zeile);
      y := y + 15;
    end;
end;

end.
Wenn ihr wollt, könnt ihr euch alle Delphi Dateien auch vom Webspace von mir ziehen: http://ironthunder.ir.funpic.de/Pyramide.rar

Hoffe, ihr könnt mir helfen.

Mit freundlichen Grüßen
me2u
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#2

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:26
Ändere einfach die Property "Aligment" auf Center, dann sind deine Sternchen in der Mitte... (und bilden auch eine Dreieck)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:31
Wenn du eine Pyramide zeichen willst, nimm dafür lieber ein TImage.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#4

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:34
Zitat von fLaSh11:
Ändere einfach die Property "Aligment" auf Center, dann sind deine Sternchen in der Mitte... (und bilden auch eine Dreieck)
hmm jo, stimmt eigentlich

Sieht jetzt so aus:

http://www.directupload.net/images/070315/5ko8uBZo.jpg

Das Problem ist nur, dass wir das ganze mit Schleifen lösen sollen. Das ist der Sinn der Übung. Wäre das privat und nur für mich, würde mir das ausreichen, da ich ja nur das Dreieck haben will. Aber mein Lehrer will wahrscheinlich eher die Schleife sehen.

Naja, hat noch jemand einen Vorschlag ? Wäre sehr nett !



Zitat von 3_of_8:
Wenn du eine Pyramide zeichen willst, nimm dafür lieber ein TImage.
Da kann man aber nicht die Zeilen einzeln ansteuern oder ? Also das man ein Sternchen mehr macht oder sowas. Liege ich da richtig ?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:48
Was meinst du mit "einzelnen Zeilen"? Du kannst die Höhe und Breite in Pixeln bestimmen und wenns dir Spaß macht kannst du die Pyramide auch aus einzelnen Quadraten aufbauen, wodurch du wieder einzelne "Zeilen" hast. Auf jeden Fall sieht das sehr viel schöner aus.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#6

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:49
Könntest du das mal bitte etwas konkreter auf mein Beispiel anwenden ?

also kann man da dann machen, dass ein Quadrat gezeichnet wird, dann eine Zeile weiter 2 Quadrate usw.
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#7

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:52
Zitat von me2u:
Aber mein Lehrer will wahrscheinlich eher die Schleife sehen.
Du hast in deinem Code doch eine While- und eine For-Schleife drin...?!

//Edit: Quote-Tag
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 20:56
Hi,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,x,y: Integer;
begin
  for i:= 0 to 200 do
  begin
    x:= 300 - i; // 300 ist die X Position der Spitze
    y:= 10 + i; // 10 ist die Y Position der Spitze
    Canvas.Pen.Color := RGB(random(256),random(256),random(256)); // wenn mans bunt haben will :P (randomize ins FormCreate!
    Canvas.MoveTo(x,y);
    Canvas.LineTo(x+i*2,y);
  end;
end;
vielleicht so ?

Ergänzung:

Und als komfortable Procedure:

Delphi-Quellcode:
procedure DrawPyramide(Canvas: TCanvas;const x,y,Height: Integer; Coloured: Boolean);
var i: Integer;
    fx,fy: Integer;
begin
  for i:= 0 to Height do
  begin
    fx:= x - i;
    fy:= y + i;

    if Coloured then
      Canvas.Pen.Color := RGB(random(256),random(256),random(256));

    Canvas.MoveTo(fx,fy);
    Canvas.LineTo(fx+i*2,fy);
  end;
end;

// Aufruf
DrawPyramide(Canvas,200,30,400,true);
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:02
StringOfChar?

i = 1 to zeilen

i-mal für die Sterne
und (zeilen - i)-mal für die Leerzeichen davor

Delphi-Quellcode:
for i := 1 to 30 do
  Memo1.Lines.Add(StringOfChar(' ', 30 - i) + StringOfChar('*', i));

alternativ deines mit den Strings
Delphi-Quellcode:
L := ' ';
S := '*';
Repeat
  Memo1.Lines.Add(L + S);
  S := S + '*';
  Delete(L, 1, 1);
Until L = '';
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
me2u
(Gast)

n/a Beiträge
 
#10

Re: Pyramide zeichnen

  Alt 15. Mär 2007, 21:28
Hab nochmal geguckt in der Aufgabenstellung. Also wir sollen das schon mit den Sternchen da machen.

Danke himitsu ! Habs jetzt zum Laufen bekommen. Es ist zwar nicht ganz gerade, aber ich denke das liegt an Delphi und nicht am Code.

Bei deiner zweiten Möglichkeit ist es etwas ungüngstig, dass die Größe von den Leerzeichen abhängt. Also wird nicht unbedingt das größtmögliche Dreieck "konstruiert". Man müsste irgendwie (y DIV 15) * ' ' rechnen können, aber das geht ja nicht oder ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz