AGB  ·  Datenschutz  ·  Impressum  







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

Random Tshape!

Ein Thema von Counter909 · begonnen am 18. Jan 2007 · letzter Beitrag vom 20. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#1

Random Tshape!

  Alt 18. Jan 2007, 20:01
moin


ich habe eine Frage:

ich habe eine Oberfläche mit mehreren Tshapes, die habe ich genommen, weil ich verschiedene Formen wollte (viereck,kreis,...), die ich alle jeweils auf ".visible:=false" gesetzt habe.
Nun möchte ich diese shapes durch einen Timer zufällig erscheinen lassen und wenn man darauf klickt, anschließend der nächste: aber alls zufällig, keine bestimmte reinfolge.

bis jetzt bekomme ich das eben nur so hin, dass nach einiger zeit EIN shape erscheint, klickt man drauf kommt der wieder. aber das liegt eben nur an dem random, was ich aber nicht inbekommen weil es ja heißt random(integer) und kein shape oder sonstiges und wenn ich shape als integer definiere, dann gibt es trotzdem immer ein konflikt


mfg
counter
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Random Tshape!

  Alt 18. Jan 2007, 20:03


ich würde das mit "case .. of" lösen, per random eine zahl 'ziehen' und jeder zahl eine form zum erscheinen zuordnen (case of).

hoffe es hilft
mfg zecke
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Random Tshape!

  Alt 18. Jan 2007, 20:27
oder vllt:
(FindComponent('Shape'+IntToStr(Random(9)+1)) as TShape).Visible := true;
Dominik
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#4

Re: Random Tshape!

  Alt 18. Jan 2007, 21:20
Zitat von zecke:
und jeder zahl eine form zum erscheinen zuordnen (case of).



hmmm. jeder zahl eine form zuordnen....genau so hab ich mir das vorgestellt
aber ich weiß net so genau wie ich das umsetzen soll..kommt am ende immer ein
konflikt wegen tshape und integer !!!


mfg
counter
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Random Tshape!

  Alt 18. Jan 2007, 23:28


Angenommen Du hast ein Shape TKreis und eins TStrich. Dann könntest Du beim case .. of 2 fälle setzen. Wenn bei random ne 1 rauskommt, setzt du einen booleanwert true, den anderen false. Danach brauchst Du nur noch fragen, welcher true ist und das jeweilge shape anzeigen.

denke, das ist nicht elegant, aber es funktioniert und das zählt bei mir immer

edit: ich hänge mal meine idee in code-form an.

als 1. im form.oncreate ein 'randomize;' hinein.

habe ich als globale variablen:
Delphi-Quellcode:
  kreis,strich : boolean;
  i : integer;
dann eine prozedur:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
i := random(2);
Case i of
  0 : kreis := true;
  1 : strich := true;
End;
If Kreis=true then
begin
// dein kreis shape
end else
If strich=true then
begin
// dein strich shape
end;
end;
entschuldige, wenn es nicht schön formatiert ist. wenn du eins gezeichnet hast, dann nicht vergessen die werte wieder auf false zu setzen, glaub ich

hoffe es hilft
mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Random Tshape!

  Alt 18. Jan 2007, 23:42
In den aufgeführten Beispiel von dominikkv müssen die Namen von TShape Shape1, Shape2, Shape3 usw. lauten, da FindComponent nach den Namen der Komponenten suchen tut. Z.B. mit Random(4) kannst du dann aber auch nur mit max 4 TSharpes arbeiten! Also die Namen Shape1, Shape2, Shape3 und Shape4.
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#7

Re: Random Tshape!

  Alt 19. Jan 2007, 15:49
ja ich denke deine antwort hat mir geholfen...

[das mit findcomponent werde ich sonst später versuchen]



aber zu dem case of: hab ich das dann richtig verstanden dass bei dir dann per zufall
der strich oder der Kreis ausgewählt wird ??? weil ich jetzt ja vor habe, einen von den 10 shapes
(die ja noch invisible sind) aufzurufen bzw visible zu machen.....nun hab ich es so gemacht :


Delphi-Quellcode:
begin
i := random(10);
Case i of
  0 : kreis1 := true;
  1 : kreis2 := true;
  2 : kreis3 := true;
  3 : kreis4 := true;
  4 : kreis5 := true;
  5 : kreis6 := true;
  6 : kreis7 := true;
  7 : kreis8 := true;
  8 : kreis9 := true;
  9 : kreis10 := true;
  10 : kreis11 := true;
  end;
  
If Kreis1=true then
begin
  shape1.Visible:=true;
end else
If kreis2=true then
begin
  shape2.Visible:=true;
end else
....

nun hab ich aber das problem, dass jedes mal nur der Kreis1 sichtbar wird...also das mit dem zufall klappt
noch net ganz...da muss also i.wie eine kleiner fehler drin liegen oder ??


mfg
counter
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Random Tshape!

  Alt 19. Jan 2007, 18:55
Bevor du Random aufrufen tust musst du randomize aufrufen!
Delphi-Quellcode:
begin
  randomize;//den Random Generator inizialisieren!
  i := random(10);
    Case i of
    0 : shape1.Visible:= true;
    1 : shape2.Visible:= true;
    2 : shape3.Visible:= true;
    3 : shape4.Visible:= true;
    4 : shape5.Visible:= true;
    5 : shape6.Visible:= true;
    6 : shape7.Visible:= true;
    7 : shape8.Visible:= true;
    8 : shape9.Visible:= true;
    9 : shape10.Visible:= true;
  end;
end;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Random Tshape!

  Alt 19. Jan 2007, 19:42
Zitat von bitsetter:
Bevor du Random aufrufen tust musst du randomize aufrufen!  randomize;//den Random Generator inizialisieren!
randomize besser ins oncreate der form packen

edit: 200 beitrag
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#10

Re: Random Tshape!

  Alt 20. Jan 2007, 14:43
jopp das funzt jetzt vielen dank dafür


kleine frage noch zum schluss
was ist denn die beste möglichkeit von einer prozedure zur anderen zu springen ?


mfg
counter
  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 05:24 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