Go-Statistik Programm

Naja, die Main "tut" ja schon etwas, nen Text ausgeben :p

Ich finde immer noch, du könntest ein "Hello from GoStatistics!" hinzufügen... das einen begrüßt :p

Aber mit dem Linken von Bibliotheken bzw. Abhängigkeiten von DLLs unter Windows, kann ich dir trotzdem nicht helfen.

Aber da wird noch einiges mehr an DLLs dazukommen ;) - Spätenstens wenn die GUI und andere Libs dazukommen ;)
 
  • Thread Starter Thread Starter
  • #42
Aber mit dem Linken von Bibliotheken bzw. Abhängigkeiten von DLLs unter Windows, kann ich dir trotzdem nicht helfen.

Aber da wird noch einiges mehr an DLLs dazukommen ;) - Spätenstens wenn die GUI und andere Libs dazukommen ;)
Leider.
Aber es soll ja bestenfalls für alle Plattformen normal nutzbar sein. Das kann ja eigentlich nicht so schwierig sein, die nötigsten Funktionen, die aus einer Standard-Lib gebraucht werden zu "extrahieren" und dann mit reinzuwerfen. Das hat doch sicherlich schon jemand gelöst. Kann doch nicht so ein Krampf sein ...

Naja ich hoffe ja, dass sich hier der eine oder andere dann auch freiwillig um sowas kümmert. Das geht leider weit über mein Verständnis von dem Kram hinaus.
 
Kram.... :D

Das mußt du mal lernen.... aber es ist keine Raketenentwicklung. ;)

Nur ist die Frage was der Compiler leisten kann bzw. der Linker.

Unter Linux ist das relativ einfach, ich installiere mir eine GUI-Lib und hab die defakto an Board, unter Windows sieht das anders aus.... aber mach dir keinen Kopf, das wird sich alles später herauskristalisieren ;)

Jetzt erst mal "Hello World!" :cool:
 
  • Thread Starter Thread Starter
  • #44
Ich habe jetzt neben Cygwin noch MinGW+MySys installiert.
Compilieren geht.
Laufen tut das Programm aus der Comandozeile raus auch - braucht zwar ne ganze Weile aber da weiß ich auch nicht, wieso. Und wenn man es so per Doppelklick starten will geht das Fenster halt direkt wieder zu, weil es halt wirklich nicht viel tut.

Bin mit der Lösung erstmal zufrieden, dass ich nun einfach mehrere Compiler-Umgebungen besitze. Eigentlich ist MinGW ja auch nur ein minimalistischer Teil von Cygwin, der (eigentlich) weniger kann. Aber auch wenn in Cygwin die entsprechenden MinGW Compiler nutze, macht der da nicht wirklich mit. Total seltsam. Aber damit ist der Bereich des Themas für mich abgehagt.
 
Du mußt es auch von der Kommandozeile aus öffnen, vorher kann es gar nicht viel tun, ist ja keine Interface-Loop.

Aber in der Kommandozeile sollst du trotzdem einen Rückmeldung bekommen. ;)

Aber was "besser" ist, kann ich dir nicht sagen.... nur solltest du nicht all zu viel umstellen und bei etwas bleiben :)
 
  • Thread Starter Thread Starter
  • #46
Aber in der Kommandozeile sollst du trotzdem einen Rückmeldung bekommen. ;)
Ja der braucht halt einige Sekunden aber danach steht die tolle Zeile Text da. Danach ist das Programm logischerweise bereits beendet. Macht halt "nix" :D
 
Ich bin im meinem Buch gerade bei:

"Lokale und globale Variablen"
"Felder und Zeichenketten"
"Strukturen, Unions und Aufzählungstypen"
"Modulare Programmierung"...

Also, du bist mir eigentlich um einiges was C++ voraus, lieber @Roin ;)

Deßhalb kann ich gar nicht sooo viel machen.... ich weiß auch noch nicht wie man die Datenstrukturen nutzt.... ;)
 
  • Thread Starter Thread Starter
  • #48
Ich habe mich nie an einem Buch hergehangelt. Ich habe fleißig Google gefragt und dann immer drauf losgeschrieben.
Wenn man allgemein mit Objektorientierter Programmierung vertraut ist sollte das an sich nicht so schwierig sein. Im Zweifel sagt einem der Compiler auch, wo man was falsch gemacht hat und dann sucht man wieder bei Google. :D

Aber wie du ja selber bereits von einigen Posts angemerkt hast: Wir haben keine Eile. Wenn man hierbei noch was lernen kann ist das gut. Wenn es morgen fertig ist auch - aber es ist dadurch nicht besser als wenn es in einigen Wochen / Monaten fertig ist.

Das ist ein Freizeitprojekt und so soll es auch behandelt werden.
 
Schön das DU das so siehst, als Projektleiter.... :D - Aber ich denke auch, wir haben ja keinen Zeitdruck und sind in keiner Competition....

Lieber sorgfältig, als das hinterher geschriehen wird, weil etwas nicht funktioniert.

Ich wünschte mir auch gerade, das ich dir etwas mehr unter die Arme greifen könnte, aber ich hab schon noch Probleme alle Befehle deiner Klassen zu deuten :D
 
  • Thread Starter Thread Starter
  • #50
Ich wünschte mir auch gerade, das ich dir etwas mehr unter die Arme greifen könnte, aber ich hab schon noch Probleme alle Befehle deiner Klassen zu deuten :D

Dann ist es wohl doch angebracht, dass ich bereits jetzt Kommentare dranschreibe.
Dann kann man dabei vielleicht noch was lernen ;-)
 
Wäre definitiv gut, wenn du kommentieren würdest, Getter und Setter Prinzip sind mir bekannt, aber wenn je ausführlicher um so besser.

Wenn du noch Entwicklerkommentare hinzufügen willst, wieso weßhalb dies und das, tu das ruhig auch - schaden kann es nicht. :)
 
  • Thread Starter Thread Starter
  • #52
So. Alle bisherigen Methoden haben dann jetzt ein kleines Kommentar bekommen das kurz zusammenfasst, was diese Methode macht. Teilweise sind die Methoden auch nur vorsorglich geschrieben, weil es vermutlich Sinn macht diese später zu nutzen. Wann und wo wird sich zeigen. Wenn man sie nicht braucht sind sie nicht im Weg und sie waren schnell von der Hand geschrieben.
 
Klasse :T
Ich verwende übrigens Clion von jetbrains, was CMake verwendet und habe daher zumindest rudimentäre Kenntnisse... :D.
 
  • Thread Starter Thread Starter
  • #57
Also aktueller Stand:
Es gibt die vier, bisher erwähnten, Klassen: Coordinate, Turn, Group und Board.

Ein paar Funktionen sind bisher nur Dummy-Funktionen, da ich mir noch keine Gedanken über die Logik gemacht habe, wie man beispielsweise Nachbaren einer Gruppe ermitteln will oder ähnliches.
Diese sind relativ deutlich zu erkennen oder, falls sie vermutlich nur sehr kurs ausfallen würden, mit einem entsprechenden todo Kommentar versehen.

Sonst sind alle Funktionen relativ einfach kommentiert. Wenn sich da jemand auch an Kommentaren beteiligen möchte, gerne. Ich schreibe die relativ simple runter, damit da überhaupt etwas dran steht. Das geht bestimmt auch besser.

Und damit gehe ich dann auch mal in den "Feierabend". :beer:
 
Hey,
verlinke doch das Github-Projekt im Startpost.
Ggf. auch (dann für später) eine Art Versionsnotiz im Startpost, also: "TODO: ... DONE: ..." usw., dann ist das ganze besser überschaubar.
 
  • Thread Starter Thread Starter
  • #59

Ganz grob habe ich das mal gemacht. Bezüglich Grafischer Oberfläche und Statistiken muss sich erstmal jemand finden, der generell das machen möchte. Dann kann man die Aufgaben genauer auflisten und schauen, was wie zu tun ist.

--- [2017-08-14 23:29 CEST] Automatisch zusammengeführter Beitrag ---

  • Coordinate Klasse um Funktion erweitern, die die eigenen Nachbarn ermitteln kann. Nachbarn sind nur horizontale oder vertikale Nachbarn.
    • Zu vorherigem Punkt: Möglicherweise sollte die Coordinate Klasse statisch die Grenzen des Spielfeldes kennen, damit nur valide Nachbarn ermittelt werden.

Für wie sinnvoll haltet ihr das?
Ich wollte jetzt mal in der Klasse Coordinate ein getNeighbours() schreiben. Vorerst lasse ich dabei einfach alle theoretischen Nachbarn zurückgeben. Allerdings wäre es dann im nächsten Schritt sinnvoll, dass man nur direkt valide Nachbarn zurück gibt. Oder?
 
Für wie sinnvoll haltet ihr das?
Ich wollte jetzt mal in der Klasse Coordinate ein getNeighbours() schreiben. Vorerst lasse ich dabei einfach alle theoretischen Nachbarn zurückgeben. Allerdings wäre es dann im nächsten Schritt sinnvoll, dass man nur direkt valide Nachbarn zurück gibt. Oder?

Valide im Sinne von, wenn wir bei x = 0, y = 0 sind, geht es nur nach 1,0, 0,1, 1,1 - wenn du das mit Valide meinst, also sollte vielleicht schon eine Logik dahinter stecken, das wir nicht an -1, 0 einen Nachbarn haben können und uns innerhalb der Grenzen des Spielsfelds bewegen.

Allerdings, vielleicht sollte man die "Board" (Spielfeld)-Klasse ansprechen, um die Dimensionen des Spielfeldes zu bekommen bzw. die Grenzen zu ermitteln.
Spontan würde ich aber auch diese Prüfung in die "Coordinate" Klasse legen, da dort eben mit Koordinaten gearbeitet wird. Das Spielfeld müßte im Grunde ja nur seine Dimensionen bekanntgeben.

Eine Frage zum Code habe ich aber auch gerade, ich gehe da gerade mal durch, was macht das hier?

[src=c++]Coordinate Coordinate::getBottomNeighbour()
{
Coordinate bottomNeighbour(getX(), getY() + 1);

return bottomNeighbour;[/src]

Ich weiss wir fragen hier eine Koordinate ab die an "x" (aktuelle Coordinate) und "y + 1" liegt... ? (Bzw. wo im Code passiert das?)

Aber ich glaube das geht nicht so einfach bzw. könnte das falsch sein?

Sagen wir, das Spielfeld wäre 7 Felder breit und 7 Felder hoch "Array[7][7"], wenn ich (x, y!) "0,0" anspreche, entspricht das dem Feld auf 0,0 (links oben) - logisch, will ich jetzt aber das darunter liegende Element haben, liege ich doch bei "0, 1" - also dem Element auf Index x + (y * 6)... - oder?

Was ich meine, das Array ist ja so aufgebaut (eindimensional):
[
0,1,2,3,4,5,6,
7,8,9,10,11,12,13..,
14,15...
21...
28....
..48]

Also haben wir an der ersten Stelle "Links oben", die zweite Spielfeldreihe liegt doch dann aber bei Index 7 bis 12 ?

Denkfehler?, oder muss ich mir die Spielfeld Klasse noch einmal anschauen, wie dort die Felder aufgebaut sind? :o
 
Zuletzt bearbeitet:
Zurück
Oben