Autor Beitrag
hgm83
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 31.07.04 18:21 
Hallo Helfer!!

Ich habe folgendes Problem:

Ich soll Punkte zufällig auf einer Leinwand erstellen. Die Leinwand habe ich schon erstellt. Leider weiß ich nicht genau wie ich den Befehl 'Random' anwenden muss, damit es mir die Punkte zufällig verteilt. Mein Quellcode sieht bis jetzt folgendermaßen aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
unit Punktemaler;

interface

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

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure PaintBox1Paint(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

function: random;

var
  Form1: TForm1;
  xm, ym: integer;

const
  r=10;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  with paintbox1 do
  begin
    canvas.pen.Color:=clblack;
    canvas.Brush.Color:=clwhite;
    canvas.Rectangle(0,0,300,300);
  end;
  with paintbox1.Canvas do
  begin
    ellipse(xm-r,ym-r,xm+r,ym+r);
    pen.Color:=clblue;
    brush.Color:=clblue;
  end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  close;
end;

end.


Wer kann mir weiterhelfen?? Danke!

Moderiert von user profile iconMotzi: Delphi-Tags hinzugefügt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 31.07.04 19:24 
´Was soll das function: random da oben im Quellcode? Kuckt dir in der Hilfe mal Random und Randomize an.
DelphiFreund
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 120

Win XP
D7 Enterprise
BeitragVerfasst: Sa 31.07.04 19:54 
Verwende die Delphi-Code-Funktion. Sieht besser aus.
Cybo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 87

Win 95/98/xp/NT Suse Linux
D7 Ent
BeitragVerfasst: So 01.08.04 00:54 
ausblenden Delphi-Quelltext
1:
2:
3:
randomize;
Punkt1:=random(Formname.Height);
Punkt2:=random(Formname.Width);


und nun noch einzeichen... fertig ist das ganze

Cybo

_________________
Ich öffnete, kompilierte und traute meinen Augen nicht.
hgm83 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 01.08.04 08:22 
Habe schon in der Hilfe gelesen, nur war das wenig aufschlussreich für mich. Habe mich jetzt mal an den Rat von Cybo gehalten und folgendes gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  begin
    randomize;  
    xm:=random(Form1.Height);
    ym:=random(Form1.Width);
    ellipse(xm-r,ym-r,xm+r,ym+r);
    pen.Color:=clblue;
    brush.Color:=clblue;
  end;


Jetzt kann ich ohne Probleme kompilieren, ABER:
Ich erhalte nur noch eine graue Programmoverfläche. Meine Buttons oder die paintbox sieht man nicht mehr.
Wie kann ich die random-Funktion [ähnlichmit random(0<=xm<300)] auf die paintbox größe begrenzen? Oder liegt das Problem woanders?

Danke

Moderiert von user profile iconMotzi: Delphi-Tags hinzugefügt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 01.08.04 08:58 
Hallo

Zitat:

Habe schon in der Hilfe gelesen, nur war das wenig aufschlussreich für mich.

warum nicht? englische hilfe :rofl: ?

Zitat:

ellipse(xm-r,ym-r,xm+r,ym+r);
pen.Color:=clblue;
brush.Color:=clblue;

Ich möchte mein Haus farbig streichen. Ich kaufe mir einen Eimer GrundFarbe und streiche mein Haus damit, nachdem ich mit dem Streichen fertig bin, tue ich die Abtönfarbe in meinen Farbeimer und wundere mich, warum mein haus trotzdem noch weiß ist :roll:.
Du mußt erst die Farben setzen und dann zeichnen ;).

Zitat:

xm:=random(Form1.Height);
...
Wie kann ich die random-Funktion [ähnlichmit random(0<=xm<300)] auf die paintbox größe begrenzen?

Gegenfrage: welchen parameter erwartet denn random? und wie ermittelt man die größe der paintbox?

mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
hgm83 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 01.08.04 09:18 
Hallo,
Hilfe sagt folgendes:

[size=9]Delphi-Syntax:

function Random [ ( Range: Integer) ];

Beschreibung

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.[/size]
Jetzt weiß ich zwar das ich irgendetwas mit Random machen muss, aber als Anfänger verwirrt mich zum Beispiel "Range".

Deshalb auch die Frage nach dem Wertebereich. Die Paintbox größe hat man ja vorher festgelegt, z.B. mit:
canvas.Rectangle(0,0,300,300)
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 01.08.04 09:25 
ist das so schwer zu vertehen, das random(300) dir werte von 0 bis 299 zurückgibt? Range gibt den Bereich an, wie es auch in der Hilfe steht.

Zitat:

Die Paintbox größe hat man ja vorher festgelegt, z.B. mit:
canvas.Rectangle(0,0,300,300)

damit legst du nicht die Größe der paintbox fest, du zeichnest nur ein Rechteck. Die Größe wird durch die width und height-Eigenschaft bestimmt.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
hgm83 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 01.08.04 09:46 
Alles klar,
danke für Tips&Verständnis. Es funktioniert jetzt!!
Cybo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 87

Win 95/98/xp/NT Suse Linux
D7 Ent
BeitragVerfasst: So 01.08.04 11:48 
bitte ;-)
achja und zu dem von Keldorn
Zitat:
ist das so schwer zu vertehen, das random(300) dir werte von 0 bis 299 zurückgibt? Range gibt den Bereich an, wie es auch in der Hilfe steht.

deswegen nutzt man ja auch meißtens die Funktion random(300)+1; das ergibt dann Zahlen von 1 bis 300. Nur ein Tipp, kann man imemr mal wieder brauchen

Cybo

_________________
Ich öffnete, kompilierte und traute meinen Augen nicht.