Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Würfel mit Shapes


Cano - Mo 02.06.08 15:14
Titel: Würfel mit Shapes
Wir sollen in der Schule einen digitalen Würfel erstellen. Könnte einer uns bitte helfen?
Ist sehr dringend.

Wir haben schon folgendes geschafft:
Unser Formular hat 6 Kreise und einen "würfeln"-Button und wenn man auf "würfeln" drückt sollte sich eigentlich ein Feld anders färben.
Was machen wir falsch?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var x: integer;
begin
  randomize;
      x:=random(6)+1;
   if x=1 then shape1.Brush.color:=clblack;
   if x=2 then shape2.Brush.color:=clblack;
   if x=3 then shape3.Brush.color:=clblack;
   if x=4 then shape4.Brush.color:=clblack;
   if x=5 then shape5.Brush.color:=clblack;
   if x=6 then shape6.Brush.color:=clblack;
    readln;
 end;


Aber irgendwie passiert nichts.
HILFE!!!!!!!!!!!!! :?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus VisualCLX (Component Library for Cross Platform) verschoben am Mo 02.06.2008 um 15:18
Moderiert von user profile iconNarses: Titel geändert.


platzwart - Mo 02.06.08 15:18

was genau geht da nicht?

und bitte den titel in was aussagekräftiges ändern...


Christian S. - Mo 02.06.08 15:19

Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien [http://www.entwickler-ecke.de/richtlinien.html]:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian


Jakob_Ullmann - Mo 02.06.08 15:19

Was meinst du mit einem digitalen Würfel?

PS: Es geht auch kürzer:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var x: integer;
begin
  randomize;
  x:=random(6)+1;
  TShape(FindComponent('Shape' + IntToStr(x))).Brush.Color := clBlack;
  readln;
end;


ZeitGeist87 - Mo 02.06.08 15:22

Hallo!

Na einen Würfel, der würfelt..am Computer..eben digital ;-)


platzwart - Mo 02.06.08 15:25

aber was soll dann das "readln"?!? und vlt auch die farbe der shapes bei jedem durchlauf zurücksetzen...


ZeitGeist87 - Mo 02.06.08 15:38

Das hat da drin nix verloren...


Jakob_Ullmann - Mo 02.06.08 16:05

Achso. Ich hab jetzt nicht an den Spielwürfel gedacht. Mehr daran, mit Canvas einen Würfel als Schrägbild zu zeichnen. :wink: Also zum Zeichnen: Am besten ohne Shapes


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  zufall: Integer;
begin
  randomize;
  zufall := random(6) + 1;
  Canvas.Pen.Color   := clBlack;
  Canvas.Brush.Color := clBlack;
  Canvas.Rectangle(10 + zufall * 3010030 + zufall * 30120); // Rechteck zeichnen
end;


Narses - Mo 02.06.08 16:23

Moin!

Ich schätze, das sind die Augen von dem Würfel (sollten dann allerdings 7 sein... :gruebel:), die dann halt passend gefärbt werden sollen. :idea:

cu
Narses


Jakob_Ullmann - Mo 02.06.08 16:35

Wieso sollten es sieben sein?


Nico72 - Mo 02.06.08 16:42

Na 6 am Rand und einer in der Mitte


Jakob_Ullmann - Mo 02.06.08 17:06

Achso. :shock: Dann vielleicht so?


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:
59:
60:
61:
62:
63:
var
  augen: array[1..61..7of Boolean;
  zufall, i: Integer;
begin
  // Erstens
  augen[1][1] := False;
  augen[1][2] := False;
  augen[1][3] := False;
  augen[1][4] := False;
  augen[1][5] := False;
  augen[1][6] := False;
  augen[1][7] := True;
  // Zweitens
  augen[2][1] := True;
  augen[2][2] := False;
  augen[2][3] := False;
  augen[2][4] := False;
  augen[2][5] := False;
  augen[2][6] := True;
  augen[2][7] := False;
  // Drittens
  augen[3][1] := True;
  augen[3][2] := False;
  augen[3][3] := False;
  augen[3][4] := False;
  augen[3][5] := False;
  augen[3][6] := True;
  augen[3][7] := True;
  // Viertens
  augen[4][1] := True;
  augen[4][2] := True;
  augen[4][3] := False;
  augen[4][4] := False;
  augen[4][5] := True;
  augen[4][6] := True;
  augen[4][7] := False;
  // Fünftens
  augen[5][1] := True;
  augen[5][2] := True;
  augen[5][3] := False;
  augen[5][4] := False;
  augen[5][5] := True;
  augen[5][6] := True;
  augen[5][7] := True;
  // Sechstens
  augen[6][1] := True;
  augen[6][2] := True;
  augen[6][3] := True;
  augen[6][4] := True;
  augen[6][5] := True;
  augen[6][6] := True;
  augen[6][7] := False;
  // Würfeln
  randomize;
  zufall := random(6) + 1;
  // Malen
  for i := 1 to 7 do
  begin
    if augen[zufall][i] = True then
      TShape(FindComponent('Shape' + IntToStr(i))).Brush.Color := clBlack
    else TShape(FindComponent('Shape' + IntToStr(i))).Brush.Color := clWhite;
  end;
end;


Narses - Mo 02.06.08 17:34

Moin!

user profile iconJakob_Ullmann hat folgendes geschrieben:
Achso. :shock: Dann vielleicht so?
Bischen aufwändig, oder? ;) Vorschlag: :idea:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
//  1   2
//  3 7 4
//  5   6
procedure TForm1.Button1Click(Sender: TObject);
  type
    TAugen = set of 1..6;
  const
    Stati: array[1..7of TAugen = ( [2..6],[4..6],[6],[6],[4..6],[2..6],[1,3,5] );
    Color: array[Boolean] of TColor = ( clWhite, clBlack );
  var
    Wurf, i: Integer;
begin
  Wurf := Random(6) +1;
  Button1.Caption := IntToStr(Wurf);
  for i := 1 to 7 do
    TShape(FindComponent('Shape'+IntToStr(i))).Brush.Color := Color[Wurf in Stati[i]];
end;
cu
Narses


Hidden - Mo 02.06.08 17:44

Der Threadsteller hat noch nicht einmal reagiert.. und ihr liefet fertige Quelltexte ab? :shock:


Narses - Mo 02.06.08 17:47

Moin!

user profile iconHidden hat folgendes geschrieben:
Der Threadsteller hat noch nicht einmal reagiert.
Nun, er hat immerhin um kurz nach 5 den Titel geändert... :?

user profile iconHidden hat folgendes geschrieben:
und ihr liefet fertige Quelltexte ab? :shock:
Tja, was soll ich dazu sagen, glücklich bin ich auch nicht drüber :| aber ich habe (und hätte) auch nicht damit "angefangen"... :P :lol:

Freut mich aber, dass jemand anders auch mal was dazu sagt! :zustimm:

cu
Narses


Hidden - Mo 02.06.08 18:04

Hi,


Delphi-Quelltext
1:
if augen[zufall][i] = True then                    

Bitte niemals auf Suche in der Entwickler-Ecke TRUE VERGLEICHen. Danke!

mfG,


Guenther A. - Mo 02.06.08 21:11

Wo werden den die anderen Punkte weiß gefärbt? (oder auch in anderer Farbe.)

Mein Ansatz wäre sinngemäß

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
gewuerfeltezahl:=....  
For Nr:= 1 to 6 do 
  begin
  if Nr=gewuerfeltezahl then
     .... black
  else
     .... white
  end;

Je nach Komponente für die gezeichneten Kreise wird dann auch noch ein invalidate oder einfache refresh gebraucht.

Gruß Guenther

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt und Frage aus dem Titel in den Text verschoben


GTA-Place - Mo 02.06.08 21:48

Das macht ja keinen Sinn, denn guck dir mal einen Würfel an. Da sind mehr als nur ein Punkt schwarz gefärbt (mit Außnahme der Eins natürlich ;-) ).


Cano - Di 03.06.08 14:06
Titel: gracias
Danke für die guten Vorschläge, aber wir verstehen das irgendwie nicht.

Wir wollten eigentlich, dass sich jeweils nur ein Kreis anders färbt, wenn wir auf "würfeln" drücken. Aber es funktioniert nicht.

Wir sind verzweifelt! :autsch:


ZeitGeist87 - Di 03.06.08 14:11


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var i: Integer;
begin;
 //Alle Shapes weiß
 for i:= 1 to 6 do
  TShape(FindComponent('Shape'+IntToStr(i))).Brush.Color:= clwhite;

 //Zufällige Zahl;
 x:= random(6)+1;

 //Shape anmalen
 TShape(FindComponent('Shape'+IntToStr(x))).Brush.Color:= clBlack;
end;


Cano - Mi 04.06.08 10:59

Aber irgendwie passiert da auch nicht mehr als vorher. :cry:


Christian S. - Mi 04.06.08 11:25

Dann zeig mal Deinen Quellcode, wie der aussieht. Dann kann man mal schauen, wo der Fehler ist.

Du hast bisher noch nichts zur Lösung Deines eigenen Problems beigetragen. Dieses Forum versteht sich eher als Hilfe zur Selbsthilfe und nicht als "wir machen Dir Deine Hausaufgaben".


Cano - Mi 04.06.08 11:33
Titel: RE:
Also wir haben jetzt 7 Kreise so wie ihr gesagt habt, aber mit keiner von euren Programmierungen klappt es.

Was machen wir denn nu noch falsch?


Narses - Mi 04.06.08 11:42
Titel: Re: RE:
Moin!

user profile iconCano hat folgendes geschrieben:
Also wir haben jetzt 7 Kreise so wie ihr gesagt habt, aber mit keiner von euren Programmierungen klappt es.
Was machen wir denn nu noch falsch?
user profile iconChristian S. hat folgendes geschrieben:
Dann zeig mal Deinen Quellcode, wie der aussieht. Dann kann man mal schauen, wo der Fehler ist.
Packt mal den Inhalt des Projekt-Ordners in ein ZIP-Archiv (aber ohne die EXE) und stell das hier als Anhang rein. Wie sollen wir helfen, wenn wir nicht wissen und ihr nicht verratet, wo genau das Problem ist? :nixweiss: "Geht nicht" ist eine sehr dürftige Fehlerbeschreibung... :roll:

cu
Narses


Cano - Do 05.06.08 17:01

Ja, machen wir, aber den Anhang können wir dann erst Montag ins Netz stellen, da wir vorher nicht an den Computer kommen.



Und noch mal zur Selbsthilfe bzw. "wir machen hier nicht eure Hausaufgaben"!
Wenn wir wüssten, wie das alles funktioniert, dann würden wir uns ja gerne selbst helfen.
Aber wir haben halt keine Ahnung davon.Also können wir uns nich helfe, deshalb haben wir hier nach hilfe gefragt.
Und wenn wir irgendeine sinnvolle Idee hätten, würden wir die euch auch mitteilen, aber die haben wir nicht.
Jede Idee die wir haben funktioniert erst recht nicht. :cry:


Sylvus - Do 05.06.08 17:14

Wollt 'ihr' 'uns' vielleicht veralbern?
Sonst würde mich mal interessieren, wer 'ihr' seid und wer von euch das Programm verlangt.
Ich hätte ja gedacht es wäre ein Lehrer, aber der hätte es bestimmt schon irgendwann mal erklärt, bzw. man könnte ihn um Hilfe fragen. Wenn mal allerdings während der Info-Stunden nur im Internet surft und dann von einem Forum verlangt seine Hausaufgaben zu machen UND diese dann nicht mal versteht, ist das schon ziemlich arm.
Tja ich bin auf Montag gespannt, wenn das Programm hochgeladen wird :P

Achso wie kann man in ein Forum schreiben: "Wir kommen bis Montag nicht an den Computer"??
Ich meine "wo" seid ihr den gerade? Oder besser warum schickt man sich das Programm nicht per Mail?
Also wenn ich an einem Programm arbeite und mir das so wichtig ist, dass ich sogar in einem Forum nachfrage, dann schick ich mir das auch gerne mal per Mail um zu Hause was dran zu machen...

Naja bis Montag, und sorry falls das etwas offtopic war...

hdgdl Sylvus


Christian S. - Do 05.06.08 17:19

user profile iconSylvus hat folgendes geschrieben:
Wollt 'ihr' 'uns' vielleicht verarschen?

Mäßige bitte Deinen Tonfall! :mahn:


Hidden - Do 05.06.08 18:27

user profile iconCano hat folgendes geschrieben:
Aber wir haben halt keine Ahnung davon. Also können wir uns nich helfen. [...]
Jede Idee die wir haben funktioniert erst recht nicht. :cry:
Hi,

Erstaunlich viele achten darauf, sich als besonders hilflos darzustellen.

Eine Theorie ist, dass sie einfach versuchen, fertigen Code "abzufischen" und dann hinterrücks lachen, wenn die Leute hier im Forum ihre Arbeit machen - glaube ich eigentlich nicht.

Die Alternative ist, dass dieses Verhalten instinktiv ist :gruebel: Naja wieauchimmer.

Ich kann euch jedenfalls den Tipp geben, dass das nicht zum Erfolg führt. Es gehört hier nämlich "nicht zum guten Ton", eure Hausaufgaben für euch zu machen. Vielmehr mit euch. Wenn wir sie für euch machen, haben wir euch nächstes Mal wieder "am Hals" :wink:

Da auch wir nicht unbedingt arbeitsliebend sind( :lol: ), fordern wir schon ein gewisses Maß an Eigenanteil.

Was ist also zu tun :?:

Die Beschreibung sollte also exakt sein, nicht "geht nicht ... verstehen nicht ... hier Quelltext".

Ich habe jetzt ein wenig Zeit aufgebracht, um euer Problem zu lösen. Bitte bringt ihr jetzt auch ein wenig Zeit auf und geht nochmal alles durch(sobald ihr es vor euch habt). Dann sind wir der Lösung schon ziemlich nahe :wink: Es handelt sich nämlich hier um ein Kommunikationsproblem; wir müssten nur genau wissen, was eigenlich genau passieren soll und, was passiert. Dann sagen wir euch schon, was ihr euch genauer ansehen solltet.

mfG,


Jakob_Ullmann - Do 05.06.08 18:53

user profile iconHidden hat folgendes geschrieben:

Delphi-Quelltext
1:
if augen[zufall][i] = True then                    

Bitte niemals auf Suche in der Entwickler-Ecke TRUE VERGLEICHen. Danke!

Ich hab das Problem weder in dem Thread (den hab ich übrigens schon gelesen) noch jetzt verstanden. Es funktionieren beide Varianten (ich hab's extra nochmal ausprobiert, dasselbe Ergebnis), warum soll man dann nicht auf True vergleichen!?

Moderiert von user profile iconNarses: Zitat gekürzt


Narses - Do 05.06.08 19:06

Moin!

user profile iconJakob_Ullmann hat folgendes geschrieben:
warum soll man dann nicht auf True vergleichen!?
Das diskutieren wir bitte nicht in diesem Thread, sondern in dem anderen! Danke. ;)

cu
Narses


Cano - Mo 09.06.08 13:13

Hätten wir einen Lehrer, der uns hilft und uns vorher alles erklärt hätte wäre es ja nicht so schlimm.Aber er hat erlich gesagt auch keine Ahnung von der Materie!!!! :evil:

Wir würden uns ja gerne zu Hause damit beschäftigen, aber wir haben delphi nich auf unseren Computer und so können wir das nur in der Schule machen. :cry:

Na ja hier ist die zip-Datei:(Wir haben aber die Datei schon nach einer eurer Variante verändert.:zwinker: )


Narses - Mo 09.06.08 14:27

Moin!

user profile iconCano hat folgendes geschrieben:
Hätten wir einen Lehrer, der uns hilft und uns vorher alles erklärt hätte wäre es ja nicht so schlimm.Aber er hat erlich gesagt auch keine Ahnung von der Materie!!!! :evil:
Schon klar, ich wundere mich auch jedesmal, dass Lehrer heutzutage überhaupt noch in der Lage sind, verständliche Worte artikulieren zu können... :roll:

user profile iconCano hat folgendes geschrieben:
Wir würden uns ja gerne zu Hause damit beschäftigen, aber wir haben delphi nich auf unseren Computer und so können wir das nur in der Schule machen. :cry:
[url]http://www.turboexplorer.com[/url]

user profile iconCano hat folgendes geschrieben:
Na ja hier ist die zip-Datei:(Wir haben aber die Datei schon nach einer eurer Variante verändert.:zwinker: )
Hatte ich nicht was von "ohne die EXE" erzählt? :gruebel:

Nunja, jedenfalls scheint ihr komplett keinen Plan zu haben, was ihr da tut. Deshalb :arrow: Delphi-Crash-Kurs von Christian S. [http://www.delphi-library.de/topic_Crashkurs+Delphi_37446.html]

Konkret zu dem Problem, warum das c&p nicht geklappt hat:
Macht mal einen Doppelklick auf dem Button auf Form3. Was passiert? Richtig, es wird ein (neuer!) Ereignishandler angelegt, der überhaupt nix mit dem kopierten Code zu tun hat, weil:

Delphi-Quelltext
1:
procedure TForm3.TButton1Click(Sender: TObject);                    

ihr da ein "T" vor den Methodennamen gesetzt habt (warum auch immer).

Was tun? Den Code aus dem Forum in den richtigen Button-Handler kopieren, dann klappt´s auch mit dem Abschreiben. ;)

cu
Narses


Nowo - Di 10.06.08 19:53

Ich habe da mal eine Komponente gesehn.
Für solche kleinen animationen, würfel etc.
Ich schau mal ob ich die noch finde


Jakob_Ullmann - Di 10.06.08 20:09

Die Würfel-Kompo ist bestimmt keine große Hilfe, die Schüler sollen ja nicht lernen, nur Fremdkomponenten zu nutzen, sondern auch Code selber zu schreiben.