Forum: PC-Programmierung conway game of life


von Mark (Gast)


Lesenswert?

Hallo,
wir haben in der uni das spiel conway game of life mit c++ programmiert.
Dazu haben wir verschiedene Buttons eingefügt (z.B. um die Schnelligkeit 
zu ändern), verschiedene anzeigen und natürlich das Feld usw. 
programmiert. Das hat auch spass gemacht und hat auch funktioniert. 
Leider war es so, dass wir das mit einem uni-internen programm erstellt 
haben, wo das Programm ansich schon mehrere sachen kann und die benutzte 
Bibliothek konnte auch schon sachen.
So konnten wir im Programm schreiben DrawLine(x1,y1,x2,y2,...) und es 
wurde je nach input-parameter die linie gezeichnet.

Jetzt möchte ich das ganze gerne zu hause auch machen. Dazu habe ich mir 
Visual Studio 2015 besorgt.
Allerdings stehe ich jetzt vor dem Problem, dass wenn ich eine neues 
Projekt starte, gar nichts da ist.

Um leicht anzufangen, würde ich gerne zunächst einfach ein Fenster mit 
einem Button erstellen, welcher mir dann eine Linie zeichnet (damit habe 
ich ja schon fast alles was ich brauche (bis auf die Logik des Spiels))

Mal lese ich, dass ich QT brauche, einige sagen GTK sei besser und 
andere wxWidets.  Anders mal lese ich aber, dass ich auch gar nichts von 
den sachen brauche.

Was brauche ich alles dafür?
und wie fange ich so ein Projekt an? (IN der Uni war ja schon immer 
alles inkludiert und Dateien mit entsprechenden Funktionen vorhanden).


Bin über jeden Tipp, Hilfe, Tutorials usw. sehr dankbar.
Mark

von Rolf M. (rmagnus)


Lesenswert?

Um auch mal was zum Thema zu sagen:

Mark schrieb:
> Leider war es so, dass wir das mit einem uni-internen programm erstellt
> haben, wo das Programm ansich schon mehrere sachen kann und die benutzte
> Bibliothek konnte auch schon sachen.

> Jetzt möchte ich das ganze gerne zu hause auch machen. Dazu habe ich mir
> Visual Studio 2015 besorgt.

Ich finde es - entgegen manch anderem hier - sehr löblich, dass du dich 
nicht mit dem zufrieden gibst, was dir von der Uni vorgekaut wird, 
sondern dich etwas tiefer damit beschäftigen willst.

Mark schrieb:
> Mal lese ich, dass ich QT brauche, einige sagen GTK sei besser und
> andere wxWidets.  Anders mal lese ich aber, dass ich auch gar nichts von
> den sachen brauche.

Du brauchst ein sogenanntes GUI-Toolkit. Das ermöglicht es dir, Fesnster 
und Buttons und andere typische GUI-Elemente zu erzeugen und für dein 
Programm passend einzustellen. Außerdem kannst du damit auch deine 
Linien zeichnen.
Qt, GTK und wxWidgets gehören zu den GUI-Toolkits. Jedes davon kann 
genutzt werden für das, was du vor hast. Was davon man nimmt, ist 
letztendlich Geschmackssache.

> Was brauche ich alles dafür?
> und wie fange ich so ein Projekt an? (IN der Uni war ja schon immer
> alles inkludiert und Dateien mit entsprechenden Funktionen vorhanden).

Schau dir für dein gewähltes Toolkit die Tutorials an. Da wird 
eigentlich alles gezeigt, was du für dein Vorhaben brauchst.

Noch jemand schrieb im Beitrag #4602770:
> Heiko schrieb:
>> Es macht mich auch immer wieder ganz gefühlsduselig, wenn ich sehe, was
>> wir hier alle zusammen leisten.
>
> Lese ich richtig? "Wir hier alle zusammen"? Das sollte doch wohl heißen:
> "die anderen außer mir".

Ich fürchte, dass er tatsächlich glaubt, dass sein gegen die Forenregeln 
verstoßendes Hassposting irgendwem was bringt.

von Georg (Gast)


Lesenswert?

Mark schrieb:
> Allerdings stehe ich jetzt vor dem Problem, dass wenn ich eine neues
> Projekt starte, gar nichts da ist.

Was um alles in der Welt soll denn da sein ausser einem leeren Projekt? 
Mit der Entwicklungsumgebung kann man schliesslich ALLES programmieren, 
soll der PC etwa erraten, was du für ein Programm erstellen möchtest und 
bereits alles einsetzen was du nicht kannst?

Georg

von Rainer V. (rudi994)


Lesenswert?

Mark schrieb:
> conway game of life mit c++ ... benutzte Bibliothek
> So konnten wir im Programm schreiben DrawLine(x1,y1,x2,y2,...)

Auf die Idee mit den Linien bin ich noch garnicht gekommen. Conway's GoL 
war bei mir immer als ASCII-Grafik oder im Grafikmodus mit Pixeln.

Heiko schrieb:
> Benutze die Fenster- und Grafikfunktionen des Betriebsystems

Mark schrieb:
> habe ich mir Visual Studio 2015 besorgt.

Falls das nicht klappt, nimm CodeBlocks inkl. MinGW-Setup und dann geht 
es hier weiter: 
https://msdn.microsoft.com/en-US/library/windows/desktop/ff818516(v=vs.85).aspx

Allerdings ist das mit WinAPI für Neulinge sehr aufwändig!

Heiko schrieb:
> allgemeine Grafikprogrammierung unter C++ ... Dazu gehören
> Framebuffer, Linien-, Kegelschnitt-, 3D-Grafikalgorithmen

Habe ich für 2-dimensionale Zellularautomaten wie GoL nie gebraucht. Vor 
allem auf den Kegelschnitt konnte ich gut verzichten :)

von Programmiersprachentheaterintendant (Gast)


Lesenswert?

> Benutze die Fenster- und Grafikfunktionen des Betriebsystems,

Böser Tipp, gaaaanz böser Tipp!

GUI-Toolkits kommen und gehen zwar wie schlechte Kleidermode, aber ihr 
Zweck ist genau die Betriebssystemanbindung so zu abstrahieren dass Dein 
Programm -Verfügbarkeit des GUI-Toolkits vorausgesetzt- auch auf 
anderen/künftigen Betriebssysteme kompilierbar sein sollte.
Ja, die GUI-Toolkitwahl ist eher Geschmackssache: krall Dir eins und 
arbeite Dich da rein. Beim Einarbeiten in ein nächstes hast dann 
zumindest etwas zum vergleichen.

Ja, GUI-Toolkits können nicht alle Feinheiten und Spezialfälle der 
systemnativen Grafiksubsysteme brücken, sie wollen eher die 08-15 Fälle 
bequemer machen.

Du kannst Dich immernoch in späteren Runden durch dass GUI-Toolkit 
durchtauchen bis runter, gar unter die Betriebssystemebene, um zu 
verstehen wie tatsächlich die Pixel ausgewählt werden um z.B. eine 
Kreislinie am Bildschim zu sehen.

Eine Alternative ist m. M.n, in SVG einzusteigen.
Die "Abstraktion" ist dann nicht "direkt" der Bildschimspeicher sondern 
das Browserfenster (FF). Der Vorteil ist dann dass das Gezeichnete vom 
Browser aus gleich gedruckt (auch als PDF Datei gespeichert) werden 
kann.

von Programmiersprachentheaterintendant (Gast)


Lesenswert?

OT: wenn ich PLOT10 und Tek40xx in die Runde werfe, klingelts noch 
bei Jemandem?
;-)

von MaWin (Gast)


Lesenswert?

Mark schrieb:
> So konnten wir im Programm schreiben DrawLine(x1,y1,x2,y2,...) und es
> wurde je nach input-parameter die linie gezeichnet.
> Jetzt möchte ich das ganze gerne zu hause auch machen. Dazu habe ich mir
> Visual Studio 2015 besorgt.
> Um leicht anzufangen, würde ich gerne zunächst einfach ein Fenster mit
> einem Button erstellen, welcher mir dann eine Linie zeichnet (damit habe
> ich ja schon fast alles was ich brauche (bis auf die Logik des Spiels))
>
> Mal lese ich, dass ich QT brauche, einige sagen GTK sei besser und
> andere wxWidets.  Anders mal lese ich aber, dass ich auch gar nichts von
> den sachen brauche.
>
> Was brauche ich alles dafür?

Nichts ausser VS2015. Windows kann DrawLine etc. Bei Linux bräuchtest du 
eine der genannten Graphiklibraries.
Bei Windows musst du dich bloss entscheiden welche: WinAPI, MFC, D2D. 
DrawLine war wohl WinAPI.

von c-hater (Gast)


Lesenswert?

Rainer V. schrieb:

> Allerdings ist das mit WinAPI für Neulinge sehr aufwändig!

Ach watt, das ist absolut simpel. Nur nicht gerade sehr schnell, wenn 
man es so simpel implementiert, wie es möglich ist.

Allerdings: Wenn man es so schnell implementiert, wie es möglich ist, 
ist es wirklich nicht mehr simpel.

Der klassische Konflikt: je einfacher die Programmierung einer Sache, 
desto mehr Abstraktionsebenen liegen darunter und desto langsamer ist 
das Ergebnis.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.