Entwickler-Ecke
Freeware Projekte - Matrix Uhr
>M@steR< - Mi 17.12.08 15:35
Titel: Matrix Uhr
Gelöscht
JayEff - Mi 17.12.08 17:03
was die schriftart betrifft, findet sie sich in diesem meinem thread:
http://www.delphi-forum.de/viewtopic.php?t=33889
Die Zeichen dieser Schriftart kriegt man durch diese Funktion:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function letter: Char; begin case random(3) of 0: result:=char(random(10)+48); 1: result:=char(random(26)+65); 2: result:=char(random(4)+97); end; end; |
Ohne Garantie; ich war jung und dumm (Ich habe gerade erstmal vor jedem aufruf von "Random" die "Randomize" entfernen müssen. vor *jedem einzelnen* :mrgreen: .)
Nettes Gimmik! Vielleicht könnte man das ganze noch Zufälliger aussehen lassen, im Augenblick scheint es wie eine schräge Welle herunter zu laufen. Auch ist die Uhr etwas schwer erkennbar, was aber vielleicht durch mehr Zufälligkeit verbessert werden könnte :zustimm:
crncpz - Mi 17.12.08 17:06
ganz nett umgesetzt (ich glaub ich muss mir den film mal wieder ansehen :P )
aber
1) warum braucht die uhr 99% CPU Auslastung?
2) warum hört die uhr auf zu laufen wenn das fenster nicht aktiv ist?
jaenicke - Mi 17.12.08 17:20
crncpz hat folgendes geschrieben : |
aber
1) warum braucht die uhr 99% CPU Auslastung? |
Das ist bei mir nicht so, die hat durchgehend 0%. Hmm, Pentium 1? :P
Nein, im Ernst, das wird wohl an der Umsetzung liegen, weshalb vermutlich auch das...
crncpz hat folgendes geschrieben : |
| 2) warum hört die uhr auf zu laufen wenn das fenster nicht aktiv ist? |
...auftritt. Was nicht so schön ist.
Sieht aber ganz schön aus.
jakobwenzel - Mi 17.12.08 17:46
Titel: Re: Matrix Uhr
>M@steR< hat folgendes geschrieben : |
| PS: Ja ich baue villeicht noch einen Matrixzeichensatz ein. |
Die Originalzeichen sind hauptsächlich spiegelverkehrte
Katakana [
http://de.wikipedia.org/wiki/Katakana] und normale Zahlen.
Warum machst du die Uhr nicht größer?
passiv - Mi 17.12.08 17:54
crncpz hat folgendes geschrieben : |
| 1) warum braucht die uhr 99% CPU Auslastung? |
weil du einen single-core-prozessor hast? :D bei mir frisst er nur ca 50%, was am dualcore liegt ...
kA wie
jaenicke das macht :gruebel: ...
jaenicke - Mi 17.12.08 17:58
Ok, ich sehs, jetzt sinds 90%...
Der ProcessExplorer hatte es vermutlich nicht aktualisiert als ich zurück gewechselt war und ich hab nicht lange genug gewartet.
Irgendwas ist an der Umsetzung falsch.^^
hui1991 - Mi 17.12.08 18:02
Bei so einer hohen Auslastung (bei mir 25% wegen QuadCore)
müsste ja das Bild praktisch mit PaintBox/Image gezeichnet werden.
Blos würde das verwendet werden, würde ja das auch im inaktiven zustand weiterlaufen.
Bei der kleinen Auflösung müsste das programm ca. 10% (20% bei Dual-Core und 40% bei Single-Core) nehmen auch wenn der Prozessor es zeichnet. FPS muss halt begrenzt sein.
Vielleicht ist es ja auch das Problem, vielleicht läuft das Programm auf 100 FPS?
Aber so find ich das Programm nicht schlecht. ^^
>M@steR< - Mi 17.12.08 19:37
Gelöscht
Martok - Mi 17.12.08 19:46
Also bei mir läuft das ohne nennenswerte CPU-Nutzung und auch wenn das Form nicht aktiv ist.
Nur etwas schwer abzulesen ist sie schon, die Uhr. Wie war das? Den Code zu lesen ist einfacher als direkt in die Matrix zu sehen. Naja, momentan ist selber auf die Uhr gucken noch einfacher^^
turboPASCAL - Mi 17.12.08 19:52
Vill. liegt die hohe Auslastung daran das er zwei Timer verwendet, pro CPU einen. Effectiv wird es erst ab vier CPU's und aufwärts. :mrgreen:
@>M@steR<, ein Timer Reicht, den Rest kann man brechnen.
Der Timer Interval reicht mit 25-30 ms absolut um eine gute Animation zu bekommen.
Den Font solltest du in deinem Programmverzeichnis liegen haben und über AddFontResource( PCHAR( ExtractFilePath( ParamStr(0) ) + 'blabla.ttf') );laden.
>M@steR< - Mi 17.12.08 20:02
Gelöscht
jaenicke - Mi 17.12.08 20:58
>M@steR< hat folgendes geschrieben : |
Delphi-Quelltext 1: 2:
| AddFontResource(pchar(ExtractFilePath(ParamStr(0)) + 'Matrix Code Font.ttf')); SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); |
Schon ausprobiert. :( |
Du hast die Schriftart aber danach auch ausgewählt, oder?^^
Ich meine beim Edit z.B.
Edit1.Font.Name := 'Arial'; zum Beispiel.
Dude566 - Mi 17.12.08 21:02
Wie hast du das mit der Uhr gemacht? Hattest du dazu ne Anleitung, oder kannst du mal ein paar Dinge nennen die man dazu braucht und wissen sollte?
Webo - Mi 17.12.08 21:03
Was habt ihr alle für CPU-Auslastungen ? Schaut ihr etwa bei der CPU-Auslastung in % der gesamten Auslastung, oder wie ? Bei mir kommts auf 0%, auch wenns ein QuadCore ist, aber auf dem Laptop erziele ich das gleiche Ergebnis.
@Projekt: Find ich gut gemacht, nur könnten die Uhrzeitziffern größer sein, bzw. sich besser vom Rest abheben (vllt. Fett ?!), sowie, wie schon gesagt, dass die Uhr weiter läuft, auch wenn das Tool nicht das angewählte Fenster ist.
hui1991 - Mi 17.12.08 21:10
Webo hat folgendes geschrieben : |
| Was habt ihr alle für CPU-Auslastungen ? Schaut ihr etwa bei der CPU-Auslastung in % der gesamten Auslastung, oder wie ? Bei mir kommts auf 0%, auch wenns ein QuadCore ist, aber auf dem Laptop erziele ich das gleiche Ergebnis. |
Du hast etz 0% weil du die neue Version hast, die alte Version hatte die volllast gehabt. Die 1.1 hat die nicht mehr.
Außerdem wurde mit 1.1 auch der Fehler mit dem das er in Inaktiv aufhört zu rechnen auch schon behoben.
Das ist der Grund warum bei dir die 2 Probleme nicht da sind. ^^
Jetzt hab ich natürlich auch 0% ^^
jaenicke - Mi 17.12.08 21:13
Titel: Re: Matrix Uhr
Jetzt gefällts mir schon ganz gut und es funktioniert wunderbar, nur der Rand stört etwas, wie wärs mit einem Kontextmenü bei Rechtsklick zum Ein-/Ausblenden des Randes usw.?
Und schön wäre natürlich, wenn die Größe änderbar wäre. ;-)
Webo - Mi 17.12.08 21:14
hui1991 hat folgendes geschrieben : |
Du hast etz 0% weil du die neue Version hast, die alte Version hatte die volllast gehabt. Die 1.1 hat die nicht mehr.
Außerdem wurde mit 1.1 auch der Fehler mit dem das er in Inaktiv aufhört zu rechnen auch schon behoben.
Das ist der Grund warum bei dir die 2 Probleme nicht da sind. ^^
Jetzt hab ich natürlich auch 0% ^^ |
Ich hatte die alte Version, deshalb wurde ja auch bei inaktiv pausiert ...
Aber gut zu hören, dass das nun gefixt ist *schnell die neue runter lad*
Webo - Mi 17.12.08 21:17
Titel: Re: Matrix Uhr
jaenicke hat folgendes geschrieben : |
Jetzt gefällts mir schon ganz gut und es funktioniert wunderbar, nur der Rand stört etwas, wie wärs mit einem Kontextmenü bei Rechtsklick zum Ein-/Ausblenden des Randes usw.?
|
Das mit dem Rand fällt mir grad auch so auf, eigentlich könnte man da von Anfang an auf "bsnone" stellen, oder wenigstens dem User ein Kontextmenü dafür zu geben.
[Edit]: Hehe, mir fällt ja grad auf, dass nach längerer Laufzeit der Uhr, nicht mehr die Zeit, sondern >M@steR< eingeblendet wird, Easteregg :roll:
>M@steR< - Mi 17.12.08 21:31
Gelöscht
jaenicke - Mi 17.12.08 21:37
>M@steR< hat folgendes geschrieben : |
| ja klar habe ich das, aber das bringt mir auch nix wenn das Programm dadurch garnicht mehr startet XD. |
Hast du das SendMessage mal weggelassen?
Also bleibt es bei AddFontResource direkt hängen?
Webo - Mi 17.12.08 21:39
>M@steR< hat folgendes geschrieben : |
>M@steR< wird bei einem doppelclick eingeblendet ^^ ich konnte es einfach nicht lassen XD da der nahme auch genau 8 ziffern hatt. |
War das wohl nur Zufall, dass ich zum wieder aktivieren der Form mehrfach drauf geklickt habe und deshalb der Eindruck entand, dass das nach langer Zeit kam.
>M@steR< - Mi 17.12.08 21:40
Gelöscht
Martok - Mi 17.12.08 21:55
>M@steR< hat folgendes geschrieben : |
hey! cool!
wenn ich Send weglasse geht es!
Brauche ich das denn überhaupt? |
Ja, damit die andern Apps wissen dass es den jetzt gibt. Aber, wie uns die Win32-Hilfe sagt (*hust*), wartet SendMessage auf Bestätigung von allen Empfängern und ist deswegen für einen HWND_BROADCAST normalerweise nicht zu verwenden. PostMessage, dann sollte das gehen.
JayEff - Mi 17.12.08 21:59
Ja, diesen Fehler in dem Zweizeiler ist mir auch schon aufgefallen, ich hab die SendMessage weggelassen, da die Schriftart ohnehin nur von meinem Programm genutzt werden soll - bei Beenden des Programms wird der Font wieder rausgekickt - blöd, wenn er schon installiert war, da er dann deinstalliert wird; Das sollte einige User verwirren, schätze, daran sollte ich arbeiten :mrgreen:
(Es geht um meinen Guitar-Hero clon an dem ich arbeite, er ist schon fast fertig :D )
>M@steR< - Mi 17.12.08 22:24
Gelöscht
Martok - Mi 17.12.08 22:28
>M@steR< hat folgendes geschrieben : |
| Ich kann die Schrift zwar benutzen, nur dann kann nurnoch Neo die Uhr lesen. XD |
Nö, jeder bessere Operator kann das lesen ;)
>M@steR< hat folgendes geschrieben : |
| Und ich kann nicht beide benutzen weil die Paintbox dann anscheind bei jeder änderung einen refresh macht. |
Kann eigentlich nicht sein... so oder ähnlich müsste das gehen:
Delphi-Quelltext
1: 2: 3: 4:
| Font.Name:= 'Matrix'; TextOut('RandumStuff^^'); Font.Name:= 'Arial'; TextOut(Uhrzeit); |
jaenicke - Mi 17.12.08 22:30
JayEff hat folgendes geschrieben : |
| bei Beenden des Programms wird der Font wieder rausgekickt - blöd, wenn er schon installiert war, da er dann deinstalliert wird; Das sollte einige User verwirren, schätze, daran sollte ich arbeiten :mrgreen: |
Das ist so auch falsch... Nach einem Neustart ist die Schriftart ohnehin wieder deinstalliert sozusagen. Die wird nur für diese Windowssession installiert.
Mit AddFontResourceEx kann man die auch so installieren, dass sie erst gar nicht für andere Programme sichtbar ist.
>M@steR< - Mi 17.12.08 22:31
Gelöscht
>M@steR< - Do 18.12.08 23:41
Gelöscht
JayEff - Fr 19.12.08 00:56
>M@steR< hat folgendes geschrieben : |
ich habe es jetzt hinbekommen, mit einem canvas davor geht das :idea:
|
Logisch, aber das kommt davon, wenn Martok innerlich ein with benutzt! :mrgreen: (with Paintbox1.Canvas do begin ... end; dann hätte das auch geklappt wie er's hatte ;) )
Sieht gut aus, verbraucht bei mir nicht überragend viel Leistung, aber ruckelt/flimmert. DoubleBuffered := true; im Formcreate aufgerufen? Framerate mal erhöhen vielleicht ... ? :)
BenBE - Fr 19.12.08 08:36
JayEff hat folgendes geschrieben : |
| Sieht gut aus, verbraucht bei mir nicht überragend viel Leistung, aber ruckelt/flimmert. DoubleBuffered := true; im Formcreate aufgerufen? Framerate mal erhöhen vielleicht ... ? :) |
Ach was, sind alles nur Fehler in der Matrix ;-) Kann ich aber bestätigen.
Zudem ist das rieselnde Muster immer das gleiche. Ein wenig mehr Abwechslung wäre sicherlich sinnvoll. U.a. durch unterschiedlich schnell fallende Zeichen oder ein wesentlich größeres Display-Feld.
>M@steR< - Fr 19.12.08 12:17
Gelöscht
JayEff - Fr 19.12.08 12:45
>M@steR< hat folgendes geschrieben : |
Hmmm, bei mir flimmert nix. (Dual core :wink: )
Aber ich habe jetzt mal DoubleBuffered auf true gesetzt und die neue Version upgeloadet.
Probiert mal ob es immernoch flimmert. |
Wenn du mir erzählen willst, dass dein Programm meinen Core2Duo 2,2GHz auch nur annährend ausnutzt, wobei ich auch nicht glaube dass du in 2 Threads arbeitest wesshalb es seltsam wäre, wenn er mehr als einen Kern nutzt, dann fände ich das verdammt schlampig programmiert :mrgreen:
>M@steR< hat folgendes geschrieben : |
Das muster kann nicht immer gleich sein. Unmöglich. :shock:
Ich habe die Funktion von JayEff verwendet.
Das das so gleich aussiet liegt daran das der matrixzeichensatz nicht gerade viele Zeichen enthält. XD
|
Nicht um die Geschwindigkeit ging es mir dabei. Ich dachte, es würde schöner aussehen, wenn du zufällig auswählst, welche Spalte einen neuen Lauf anfängt anstatt von links nach rechts zu aktualisieren. Dabei solltest du natürlich darauf achten, dass alle spalten gleich oft aktualisiert werden: am besten schreibst du in ein array, welche spalten schon aktualisiert wurden und wählst aus den übrigen eine aus. wenn du die letzte spalte "losrennen" lassen hast, setzt du das array wieder zurück. Mal sehen wie die neueste version läuft ^^ ich editiere dann.
Edit: Flackert weniger. Ich erkenne gerade, dass du nicht so direkt von links nach rechts die reihen loslaufen lässt, aber dennoch immer das gleiche muster. die mittleren 3 von links nach rechts immer nacheinander, z.B.
>M@steR< - Fr 19.12.08 13:16
Gelöscht
JayEff - Fr 19.12.08 18:44
Flimmert wieder etwas...
Ok was den Zufall wann die reihen fallen betrifft: Du wählst also bei Programmstart aus, wie die Zeichenketten fallen sollen und dann bleibt das die ganze Laufzeit gleich, also genau das, was ich gesagt hab :mrgreen:
BenBE - Fr 19.12.08 19:29
JayEff hat folgendes geschrieben : |
Flimmert wieder etwas...
Ok was den Zufall wann die reihen fallen betrifft: Du wählst also bei Programmstart aus, wie die Zeichenketten fallen sollen und dann bleibt das die ganze Laufzeit gleich, also genau das, was ich gesagt hab :mrgreen: |
Und genau das würde ich gern geändert haben ;-)
Martok - Fr 19.12.08 19:41
Ihr müsst ein anderes Programm haben als ich...
Das einzige was immer gleich ist sind die y-Offsets der Laufdinger, der Rest ist mehr oder weniger Random....
hui1991 - Fr 19.12.08 21:32
Vielleicht bekommste du ja diese Exe irgendwie in den Bildschirmhintergrund von explorer.exe
Dann hat man endlich mal ein gescheiten Desktophintergrund.
BenBE - Fr 19.12.08 22:48
Das Flackern scheint bei mir jetzt weg zu sein, dafür hab ich bei der 1.4er Version gleich 2 Bugs entdeckt:
1. Siehe Anhang: Das Vergrößern\Verkleinern haut nicht so wirklich hin; durch entsprechendes Verändern des Fensters kann ich es soweit schaffen, dass die Uhrzeit nur noch Teilweise UND nicht mehr mittig angezeigt wird.
2. Die Art, in welcher die einzelnen Ketten zeitlich versetzt "runterfallen" sollte nicht nur beim Start variiert werden; wird sonst schnell langweilig.
3. Die gewählte Geschwindigkeit ist etwas zu hektisch. Was spricht dagegen, die Uhrzeit auch während des "Verglühens" eines Zeichens zu updaten? Bei den andren Zeichens machst Du's ja auch.
4. Im Gegensatz zur Original-Matrix ändern sich Zeichen in einer Kette viel zu hektisch (bei jedem Frame???) Hier solltest Du ein gewisses Delay einbauen.
5. Du solltest die Uhrzeit nicht vom linken oberen Rand aus ausrichten, sondern vom Zentrum des Fensters aus. Vereinfacht das Fixen von 1.
Zum Vergleich solltest Du Dir mal ZMatrix anschauen, das find ich richtig genial gemacht; besonders der "Hintergrund zu Matrix"-Effekt dort ist richtig genial.
Edit: Screenshot von ZMatrix ergänzt.
pyaarvishal - Di 10.03.09 16:46
können sie den dpr datei hochladen?
und die pas datei?
jaenicke - Di 10.03.09 16:50
Hallo und :welcome: in der Entwickler-Ecke!
Das Programm ist ja Freeware und nicht Open Source, insofern... ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!