[III] The Game Of Life

Irgendwie geht mir das nicht aus dem Kopf. Jetzt war mit Python zu langsam und ich habe mich seit meinem letzten Eintrag mit C++ beschäftigt. Zumindest was die Geschwindigkeit angeht, kann ich mich jetzt überhaupt nicht mehr beschweren. ;-)

Ich habe Borlands / Codegears Turbo C++ verwendet. Die grafische Oberfläche ist demnach auch mit der VCL gemacht. Irgendwie bereue ich diesen Schritt. Ich muss euch jetzt leider 2 DLLs mitliefern. Das gesamte Paket ist 1,38MB groß. ZIP-gepackt zum Glück nur noch 625kB. Ich werde wohl irgendwann mal eine andere Oberfläche benutzen. Kann doch nicht sein, dass ich für so ein bisschen Code gleich 1,38MB brauche.

Naja, mal zu den Dingen die das Teil momentan kann. Man kann das Spielfeld in Größe und Anzeige bearbeiten. Außerdem (im Gegensatz zur alten Konsolen Version) kann man die Felder des Spielfelds durch einfache Links- und Rechtsklicks bearbeiten. Man hat sogar die Möglichkeit das Spielfeld in eine Datei abzuspeichern und natürlich auch wieder zu laden. Außerdem sind noch ein paar Extras dabei, die einem die Bedienung erleichtern. Den Source-Code werde ich später einmal veröffentlichen.

Ihr könnt euch das Programm ja gerne mal anschauen. Ich denke ich werde daran noch weiter arbeiten, denn irgendwie macht mir das Spaß. ;-) Besonders das erwähnte Thema mit der Oberfläche will ich noch ändern. Vielleicht hinterlässt der ein oder andere ja mal ein wenig Kritik in Form eines Kommentars hier. Download:

zip The Game Of Life (625.18 KB, zip)

[II] The Game Of Life

So, ich habe das Ding jetzt von der Geschwindigkeit etwa verdreifacht. Außerdem noch ein wenig aufgeräumt und den Debug-Code entfernt. Noch ein paar Kommentare und eine Priese Dokumentation dazu und fertig ist’s. Wer sich mein Game Of Life gerne mal anschauen möchte hat hiermit die Gelegenheit. Downloadlink.  Oder einfach auf “more” klicken. Read more »

The Game Of Life

Heute bin ich auf das “Game Of Life” gestoßen. Auf den ersten Blick langweilig, ist das eigentlich eine total lustige Spielerei. Das Spiel hat ganz einfache Regeln. Es ist aufgebaut wie eine Art Schachfeld. Also ein 2-dimensionales Array. Jedes dieser Felder kann entweder tot oder lebendig sein. Tote und lebendige Felder unterscheidet man ganz einfach durch ihr aussehen. Nun verändert sich bei jedem Durchgang (Generation genannt) das Spielfeld mit Hilfe von ganz einfachen Regeln. Hat eine tote zelle genau 3 lebende Nachbarn, so wird das tote zu einem lebendem Feld. Hat eine lebende Zelle weniger als 2 lebende Nachbarn, so stirbt sie. Hat eine lebende Zelle genau 2 oder 3 Nachbarn bleibt sie lebendig. Hat eine lebende Zelle mehr als 3 lebende Nachbarn, so stirbt sie.

Nun kann man bei diesem Spiel sehr lustige Figuren beobachten, wenn man einfach mal einige beliebige (möglichst nah beieinander liegende) Zellen belebt. So können dabei Animationen entstehen und so lange weitergehen, bis alle Zellen wieder tot sind. Es kann aber auch passieren, dass das ganze in ein totales Chaos verfällt und selbst mach 1000en von Generationen immer noch alles drunter und drüber geht.

Aus reiner Langeweile und aus Interesse wie leicht sowas denn zu programmieren sei, habe ich mal mein eigenes Game of Life programmiert. Es ist in Python geschrieben und gibt seine Zellen bisher leider nur über die Konsole aus. Dazu ist es momentan auch noch sehr langsam, kann also bei mir nur so ca. 88 Generationen in 5 Sekunden berechnen. Ich werde es die nächsten Tage mal ein wenig optmimieren und dann auch hier mal reinstellen. Jetzt erstmal ein wenig ASCII-Art.

                    XX                              X              X      XX
                   X  X                            X X            X X   X XX
                    XX                             XX             X X  XXXXX
                                                                   X       X X
                                        XX                                 X  X
                                       X  X                                 XX
                                        XX
                                    XX                X
                    X               X X              X X
                    X               X                 XX                  XXX
                    X                                                    X   X
                                                            XX  XXXXX    X   X
                                                              XXX    X   X   X
                                                                XX XX     XXX
                                                            X     XX
                                                             X   XX
                             XX       XX                      X   X
                             XX       XX

Happy Birthday!

Ich habe es jetzt geschafft: mein erstes Projekt hat sich ein Jahr lang gehalten. Ich rede von meinem Freehoster iBitLive, den ich zusammen mit einem Freund “benefix” Anfang letzen Jahres geplant hatte. Schnell fanden sich 3 Coder (“muffin”, “massai” und “ProggerHouse“), mit denen wir ruck-zuck das Projekt programmierten. Ja. Und nun hat es sich schon ein Jahr lang gehalten. Hoffentlich hält es auch noch die nächsten Jahre. Ich für meinen Teil bin jedenfalls zuversichtlich. :)

Runde Ecken – wie Microsoft es tun würde

Ich bin eben beim google’n auf einen sehr interessanten Artikel von Microsoft gestoßen. Microsoft beschreibt darin, welche verschiedenen Möglichkeiten es gibt, in einer HTML-CSS-Seite sogenannte runde Ecken so gestalten.  Runde Ecken -  wer sich darunter nichts vorstellen kann, für den habe ich hier mal noch schnell ein Bild erstellt.

Der Artikel nochmal kurz und übersetzt zusammengefasst. Microsoft nennt als eine mögliche Methode zur Erstellen von runden Ecken, der Verwendung von 4 verschiedenen DIV-Containern. Diese Container stellen jeweils eine Ecke der Box dar. Folgendes hat bestimmt schon jeder mal gemacht.

Runde Ecken kompliziert gestalten
  1. <div class="box">
  2.   <div class="boxTL">
  3.     <div class="boxTR">
  4.       <div class="boxBL">
  5.         <div class="boxBR">
  6.           Mein Inhalt
  7.         </div>
  8.       </div>
  9.     </div>
  10.   </div>
  11. </div>

Ein erfahrender Entwickler erkennt sofort: Das ist scheiße. Ok, ich habe auch etwas übertrieben gearbeitet; so ist der äußerste DIV-Container eigentlich gar nicht nötig. Dennoch stehen dort mindestens 4 DIV, alle mit einem class-Attribut.

Leider ist es ziemlich schwer, eine wirkliche gute Lösung dafür zu finden. Die Mozilla Produkte haben zwar eine CSS-Eigenschaft -moz-border-radius, aber diese ist eben nicht in Microsoft Produkten anzutreffen. Eine schönere Möglichkeit ist nun die erweiterte Anwendung von CSS. CSS bietet ja auch die Möglichkeit, Elemente nach ihrer Verschachtelung zu formatieren. Das macht sich Microsoft zu nutze, was den Vorteil mit sich bringt, dass es ab sofort nicht mehr nötig ist, 4 Class-Attribute zu definieren, sondern nur noch eins. Obiger Code kann somit also auch so geschrieben werden:

Runde Ecken, schön gemacht
  1. <div class="box"><div><div><div>
  2.   Mein Inhalt
  3. </div></div></div></div>

Um meine Meinung besser teilen zu können, habe ich bei dem Code etwas geschummelt. So habe ich im ersten Code die eigentlich richtige (konsequente) Einrückung benutzt und hier mit der Einrückung etwas gespart. Ich bin von dieser Möglichkeit allerdings sehr angetan und werde sie in meiner nächsten Entwicklung wahrscheinlich auch verwenden. Achja, ich schreibe euch noch den CSS-Code dazu, falls Microsoft den Artikel verschieben, löschen oder ändern sollte.

CSS-Code um runde Ecken zu gestalten
  1. div.roundcorner2 {
  2.   width: 200px;
  3.   background: #FFFFFF url(TROuterBlue.gif) no-repeat top right;
  4. }
  5. div.roundcorner2 div {
  6.   background: transparent url(TLOuterBlue.gif) no-repeat top left;
  7. }
  8. div.roundcorner2 div div {
  9.   background: transparent url(BROuterBlue.gif) no-repeat bottom right;
  10. }
  11. div.roundcorner2 div div div {
  12.   background: transparent url(BLOuterBlue.gif) no-repeat bottom left;
  13.   padding: 15px;
  14. }

/me goes Heimkino

Vor lauter Langeweile habe ich mich nun endlich dazu durchgerungen, die 6 Lautsprecher in meinem Zimmer zu verteilen und an die Wand zu schrauben. Mit den gekauften 30 Meter Kabel noch schnell den Kabelsalat hinter dem Schreibtisch maximiert und an den DVD-Player angeschlossen. Und *schwupps*, eine wunderbare Soundqualität, verteilt auf 5 Lautsprecher und einem Subwoofer. So macht Filme gucken Spaß! :)

Jetzt habe ich mir noch bei einem einschlägigen Internet Kaufportal eine 5.1 Soundkarte bestellt und hoffe auf baldiges Erscheinen. Dann brauch ich nur noch einen gescheiten Verstärker und ich kann auch vom PC aus den genial Klang genießen. :)

Über Spam und Backups

Tja, da haben’s die Spam-Bots wohl geschafft. Ich habe vor kurzem mal wieder den Spam löschen wollen. Dabei entdeckte ich im Admin-Interface diesen einen Button ganz oben. Dieser markierte alle Einträge in der Liste der Kommentare. Was ich dabei nicht wusste: Dieser Button markiert alle Kommentare. Nicht nur die neuen. Tja – weg waren sie alle…

Halb so schlimm, dachte ich. Schließlich hab’ ich ja Backups hier. Denkste! Nix Backup! Ich habe für alles mögliche Backups hier. Von Ur-alten Projekten über Schulreferate bis zu den Urlaubsfotos, bei denen ich selbst nichtmal dabei war.

Jetzt muss ich mal sehen, ob ich eventuell noch ein Komplett-Backup finde, auf welchem der gesamte Server drauf ist. Vielleicht kann ich die Kommentare dann nochmal retten. Momentan sieht’s jedenfalls schlecht aus. :-(

Update: Pah. Das hätte mir ja auch mal jemand sagen können, dass WordPress die als Spam markierten Kommentare nicht löscht, sondern nur ausblendet. Wer das gleiche Problem hat, folgendes schafft Abhilfe:

Alle als 'Spam' markierten Kommentare wiederherstellen:
  1. UPDATE `wp_comments` SET `comment_approved` = '1'
  2.  
  3. UPDATE `wp_posts` SET `comment_count` = (
  4.   SELECT COUNT( * ) FROM `wp_comments` WHERE
  5.   `wp_comments`.`comment_post_ID` = `wp_posts`.`ID`
  6. )

Anschließend muss man seinen alten Spam dann aber löschen.

Pimp my DS #2

Es ist da: Mein kleines Spielzeug. *g* Wie erwartet kann man damit eine Menge lustiger Sachen anstellen. Die Software dafür lässt sich sogar sehr leicht selbst programmieren. Nichtmal ASM wird dafür benötigt. Eine tolle Gelegenheit um meine C-Kentnisse ein wenig zu erweitern. Falls es noch was interessantes dazu zu berichten gibt, werde ich mich umgehend wieder melden. ;-)

Pimp my DS #1

Gerade eben habe ich mir nun ein neues Spiel für meinen Nintendo DS bei Amazon bestellt. Nunja, Spiel ist falsch. In Wirklichkeit handelt es sich um dieses hübsche Teil hier. Damit soll es möglich sein, beliebige Programme (genannt Homebrews) auf dem DS auszuführen, ohne dabei immer wieder ein neues Spiele-Modul kaufen zu müssen. Dabei stehen die verschiedensten Homebrews zur Auswahl: Ein MP3-Player, ein Internet-Browser, ein Mini-Linux oder tausende kostenlose Spiele. Durch das eingebaute WLAN des Nintendo DS lässt sich also auch im Internet surfen. Mal sehen, was das Ding so taugt. Ich freue mich auf jeden Fall drauf. :-)

Network Notepad

Wer kennt das Programm “Network Notepad”? Ich kenne es seit heute und möchte gerne mal etwas darüber schreiben. Mit dem Programm kann man kinderleicht Netzwerk-Diagramme anfertigen. Das Programm ist Freeware und hat eine einfache, intiutive Bedienung. Hier mal ein kleiner Vorgeschmack. Es handelt sich um ein Diagramm meines Homenetzwerkes, wie es schon seit einigen Wochen ist.

Das schöne daran ist, dass es für direkten Gebrauch im Netzwerk geeignet ist. Das heißt, man kann für jedes Element im Diagramm eine IP festlegen und damit direkt vom Diagramm aus verschiedene Aktionen ausführen. So brauche ich lediglich ein Rechtklick auf das Router-Icon machen und auf “ping” klicken und schon öffnet sich ein Fenster, in welchem ich Pings zum Router sehen kann. Aktionen dieser Art gibt es mehrere, zum Beispiel Telnet oder im Browser öffnen. Auch ist es möglich selbst welche zu definieren, wie ich es zum Beispiel mit PuTTY getan habe.

Schaut euch das Programm mal an. Zu finden ist es unter http://www.networknotepad.com/

« Newer EntriesOlder Entries »