Raus aus der Konsole
-
CJosef schrieb:
Lymogry schrieb:
Ich hatte gehofft, ein Fenster zu haben, dort meine floats beliebig einzutragen, dann per Knopfdruck eine Ausgabe zu bekommen.
Weißt du schon, unter welchem Betriebssystem das laufen soll?
Es gibt für verschiedene Betriebssysteme verschiedene GUI APIs.
Einige GUI APIs können aber auch Cross Platform.Ähm ja... ich hab Windows7 und es sollte auf meinem PC laufen.

Ich kompiliere zurzeit mit Cygwin, bisher lief jedes Programm auch unter Linux. Ist mir persönlich aber nicht wichtig. Ich brauch hinterher nur den fertigen Ausdruck.

-
Lymogry schrieb:
Objektorient zu programmieren heißt, dass man Objekte (Instanzierungen von Strukturen in C) und Funktionen, die diese bearbeiten, hat.
Ich hab mal verkettete Listen implementiert. Das waren Structs mit Pointern. Und ich hatte Fkten die ein Element hinzufügen, löschen, die Liste sortieren, usw konnten.
DAS heißt das also?
Dann hat C++ noch eine benutzerfreundliche Art, dass man die Eigenschaften "vererben" kann. Ich weiß nicht wirklich, was es bedeutet. Versuche das gerade mit meinem C wissen zu dechiffrieren.

Vererbung steht für eine ist-ein-Eigenschaft.
Ein Mensch ist ein Säugetier.
Deshalb erbt die Klasse (C++-Struktur) Mensch alle Eigenschaften, die ein Säugetier auch hat und kann zusätlich noch neue definieren.
Aber falls dich OOP wirklich interessiert, solltest du ein Buch lesen; ich kann das nicht so gut erklären.
Nein, OpenGL und Direct3d (heißt der 3D-Teil so? :p) geben die möglich 3D-Objekte in einem Fenster zu zeichnen. Das Fenster (keine Konsole!) musst du selber erstellen, entweder mit der WinAPI oder mit externen Bibliotheken (CSFML, Allegro,...).
Das Allegro Tutorial hab ich jetzt mal überflogen. Dort wird die Grafikausgabe auch mit Allegro erledigt. Wenn ich das Fenster mit Allegro erstelle, dann wechsel ich auf OpenGl und Direct3D und kann das ganze in 3D ausgeben. Aber ohne 3D wäre ich auch mit Allegro glücklich?
Ich weiß noch nicht, was Allegro kann oder nicht kann.
Ja, du hast dann 3D (Weiß zwar nicht genau die OpenGL-Schnittstelle, sollte aber eigentlich eine geben (gehe ich einfach mal von aus)).
Ich bin grad dabei, Allegro5 zu installieren. Im Tutorial wird das in Visual Basic verwendet. Ist Cygwin auch in der Lage das zu verwenden, oder muss ich mir auch Visual Basic zulegen?
Allegro ist plattformunabängig.
Genauere Installationshinweise (auch für andere Compiler) gibt es hier: http://wiki.allegro.cc/index.php?title=Allegro_5#Installing_and_Building_Allegro_5Fragen über Fragen ........ sorry ...

Nicht schlimm.

-
Jetzt versuche ich immernoch, Allegro unter Cygwin zum Laufen zu bringen ....
Ich hab mir von http://alleg.sourceforge.net/wip.html die Version 5 runtergeladen. Aber ich weiß nicht, wohin mit den Daten. Der Inhalt sieht zb ganz anders aus als in der Installationsanleitung aus dem Youtube Tutorial.
Für Cygwin hab ich diese Anleitung gefunden und befolgt:
http://alleg.sourceforge.net/stabledocs/en/build/mingw32.html
Dafür hab ich aber nur die Datei dx70_mgw.zip von der alleg.sourceforge.net benutzen müssen.Nun kompiliere ich einen Testcode mit #include <allegro.h>
Cygwin gibt zurück, dass allegro.h nicht gefunden werden kann.
Der Bash gcc -v gibt aber keine Fehlermeldung ...Hier hab ich einen Screenshot aus meinem Cygwin hochgeladen: http://up.picr.de/14029456ek.png
Für die Konsole kompiliere ich immer mit
gcc -Wall -pedantic -o main.exe main.c
falls ich den Linker brauche, muss ich nur weitere xyz.c hinzufügen. Diese drei Befehle waren also völlig ausreichend für mich.
Jetzt soll ich '-mno-cygwin' mitverwenden, aber cygwin beachtet den Flag nicht... (siehe Screenshot).... du meine Güte ....

-
Richtige Seite: http://alleg.sourceforge.net/download.html
Deine Links sind hauptsächlich für ältere Versionen von Allegro.
-
Lymogry schrieb:
Gegeben werden mehrere floats, diese enthalten Längen, Winkel oder auch Kurveneigenschaften. Gezeichnet werden sollen sie nach einem bestimmten Algorithmus, dabei sollen auch neue Punkte als Schnittpunkte entstehen und damit soll weitergezeichnet werden.
Ich möchte einen Maßstab mitführen, also sollte das passend skalierbar sein, ohne dass alles neu berechnet werden muss. Es muss noch gedruckt werden und dabei kann die Größe des Bilder die Größe eines DinA4 Blattes übersteigen, also muss noch passend zugeschnitten werden, aber das ist dann ein anderes Thema.Die Implementierung dieser Aufgabenstellung bedingt keine OOP. Jede klassische bzw. neumodische Programmiersprache sollte sowas können, und da du C schon kannst...
Lymogry schrieb:
Ich weiß jetzt nicht, ob ich auf C++ umsteigen soll und mich mich in die Objektorientierung umarbeiten soll. Hab bereits mitbekommen, dass Grafik und C++ sich besser vertragen als Grafik und C.
Quatsch.
Lymogry schrieb:
Aber eigentlich ist es ja nur Geometrie.
Richtig erkannt, und geometrische/mathematische Algorithmen kann nahezu jede gängige Programmiersprache erledigen, s.o.
Lymogry schrieb:
Wäre ein Umstieg Kanonen auf Spatzen?
Oder kann ich das in C realisieren?Ja. Ja.
Um es mal zusammenzufassen: Für C gibt es etliche Bibliotheken für alle möglichen Anwendungsfälle und natürlich auch für grafische Ausgaben, oftmals sind die auch noch Opensource o.ä. und kosten nichts.
Wenn du dich auf eine bestimmte Plattform (bei dir wohl Windows) beschränken kannst, ist die Auswahl sogar noch weitaus größer.
OOP ist keine Bedingung für grafische Ausgaben.Ein anderer Weg wäre vielleicht auch, sich einer Hostanwendung zu bedienen (weil die z.B. die grafischen Ausgaben schon erledigt und quasi als Frontend arbeitet) und diese via existenter C-Schnittstelle mit selbstberechneten Daten zu versorgen, du könntest also deine bisherigen C-Quellcodes wiederverwenden.
MATLAB (als Studentenversion kostenfrei) wäre da zu nennen, da du wohl weniger mit Spielen sondern mit mathematischen Aufgaben zu tun hast.
D.h. aber natürlich auch wieder, dass du primär dieses neue Frontend erstmal beherrschen musst, d.h. dessen API/Quasiprogrammiersprache erlernen musst. Aber du bist eben offen zu C, da sehr viele solcher Frameworks eher C als C++ Schnittstellen anbieten, wenn sie denn überhaupt welche anbieten.
-
Wutz schrieb:
OOP ist keine Bedingung für grafische Ausgaben.
Aber es macht insbesondere GUIs um einiges einfacher. Glücklickerweise ist OOP keine Bedingung, C nicht verwenden zu können (siehe Gtk+).
-
Es gibt Fortschritte bei Cygwin und Allegro 5...
Ich befolge nun die Readmes aus dem Allegro5 Archiv
allegro-5.0.9.zip von http://alleg.sourceforge.net/download.html:1. Aufgabe (das sagt die README aus Allegro5)
cmake installieren: http://www.cmake.org (README von cmake:)
$ ./bootstrap2. Aufgabe (README_make aus Allegro5)
Allegro5 im Cygwin Ordner entpacken. Einen neuen Ordner 'Build' erstellen. Mit cygwin in diesen Ordner wechseln und dann
$ cmake ..
Er hat gemeckert, dass ich libFlAC, libdump, libvorbis nicht habe .. hab sie aber noch nicht runtergeladen (könnte das den Fehler unten erklären?!)3. Aufgabe
Allegro erstellen (im selben Build Ordner)
$ make
$ make installZum Ende hin bin ich diesem Tutorial gefolgt: http://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Debian
(obwohl ich auf Windows7 mit Cygwin bin!)Erstes Kompilieren: gcc -Wall -pedantic -o main.exe main.c
........ er meckert nicht mehr, dass die Header Datei fehlt .... uuuh ein spannender Moment.
Dafür jede Menge Fehler im Testcode:
#include <allegro5/allegro.h> int main(){ int x=0,y=0; allegro_init(); install_keyboard(); set_color_depth(16); set_gfx_mode( GFX_AUTODETECT, 800 , 600, 0, 0); while(key[KEY_ESC]==0) { textprintf_ex(screen, font, x, y, makecol(255, 255, 255), makecol(0, 0, 0), "Hallo Welt!"); } return 0; } END_OF_MAIN();Den Code hab ich von http://www.c-programmieren.com/Allegro-Tutorial.html
Der benutzt wohl eine ältere Allegro Version. Sind die Funktionen unter Allegro 5 etwa nicht mehr aktiv?!?
Kann ich mir eigentlich nicht vorstellen ...Also .. warum kompilliert er das nicht ...?
-
Ein noch minimaleres Beispiel:
#include <stdio.h> #include <allegro5/allegro.h> int main(int argc, char **argv){ ALLEGRO_DISPLAY *display = NULL; display = al_create_display(640, 480); al_destroy_display(display); return 0; }In Cygwin kompiliert:
$ gcc -Wall -pedantic -o main.exe main.c undefined reference to '_al_create_display' undefined reference to '_al_destroy_display' collect2: ld gab 1 als Ende-Status zurückAber die Header wird eingebunden?!
Was passiert hier? Warum klappt das nicht??... langsam geht mein Latein zu ende

-
Der Code mit END_OF_MAIN() geht, wie du schon sagtest, nicht mehr mit Allegro 5.
Dein anderer Code sollte funktionieren.
Du musst noch die Lib-Dateien in den Linker Settings hinzufügen, so weiß der Compiler nur, dass es eine Funktion al_create_display gibt, aber nicht was sie macht.
-
Hey Nathan,
ja danke!
Nathan schrieb:
Du musst noch die Lib-Dateien in den Linker Settings hinzufügen, so weiß der Compiler nur, dass es eine Funktion al_create_display gibt, aber nicht was sie macht.
Ja. Das hab ich jetzt auch gefunden:
17. This won't compile just yet. MAke sure to include the allegro library files as shown below:
Click Project->Build Options->Linker Settings. Click Add. Click the "..." box.
Navigate to "C:\codeblocks\MinGW\lib" and select "liballegro.dll.a".
Keep the path as relative, or not, it depends on what you prefer if the locations of the file changes in the future.https://www.allegro.cc/forums/thread/606041
Aber ich kann das nicht mit Cygwin linken .... ???
Dazu hab ich das hier gefunden und bereits befolgt: http://alleg.sourceforge.net/stabledocs/en/build/mingw32.html
bringt nichts.
-
Wo hast du denn die lib-Dateien abgespeichert?
Genau diesen Ort gibst du in den Linkersettings an.
-
Nathan schrieb:
Wo hast du denn die lib-Dateien abgespeichert?
Genau diesen Ort gibst du in den Linkersettings an.Wenn ich nur wüsste wie .....
ich suche schon seit Stunden und finde nichts.

Die libs hab ich unter cygwin/lib und unter usr/local/lib
Sind das die Linker Settings?
export ALLEGRO_USE_CYGWIN=1 export MINGDIR=/usr/local export CPATH=/usr/local/include export LIBRARY_PATH=/usr/local/lib
-
Soweit ich das weiß (und ich kenn mich mit Cygwin nicht aus), hast du nur gesagt, wo die Datein sind, nicht welche dazu kommen sollen.
Nutzt du eine IDE, wenn ja welche?
-
Hmm .. welche dazu kommen sollen...
Ich hab Allegro mit make und cmake quasi 'installiert'. Da hab ich einen neuen Ordner Build erhalten. Dadrin sind einige neue dlls erschienen, die heißen liballegro_xyz.dll, und noch vieles mehr. Das alles ist in dem Cygwin Ordner. Einiges hab ich auch in die Cygwin Bib per Hand kopiert.
Ich benutz keine IDE .....
Code in einem Editor (damit es bunt und übersichtlich ist, hab ich CodeLite) dann mit Cygwin kompilieren. Cygwin tut nur so als wäre ich auf Linux unterwegs.
Aber ich bin nicht auf Linux, ich hab Windows7. Und ich kenne mich mit Linux nicht aus. Ich hab immer nur die Befehle
gcc -Wall -pedantic -o main.exe main.c
benutzt ..... Damit hatte ich keine Probleme bisher.Cygwin Installation geht auch vollautomatisch: http://cygwin.com/install.html
die Setup Datei lädt die Pakete runter, die man haben will und mehr muss man nicht machen!
Allegro wird da nicht angeboten, also muss man das von Hand hinzufügen.Ansonsten hat mich cygwin immer sehr verwöhnt, ich musste mich um nichts kümmern.

Und wenn man C kompiliert, bekommt man in Cygwin immer seeeeeeehr genaue und verständliche Warnungen/Fehler angezeigt. Bin damit immer gut gefahren und eigentlich sehr zufrieden..... so langsam werd ich verrückt von ....

-
Hast du auch einen Ornder lib?
Mit Dateien wit liballegro_xyz.a?
Eine heißt monolith.
Die fügst du mit -l in der Befehlszeile hinzu.
-
Eine monolith Datei hab ich nicht ....

Wird auch nichts in der Windows Suche gefunden.
Ich wollt schon mal Danke sagen, dass du mir so bereitwillig hilfst!
Find ich klasse. Ich komme hier schon gar nicht mehr zurecht... ^^
-
Lymogry schrieb:
Ich benutz keine IDE .....
Du hast Windows und frickelst mit Cygwin rum?
Mensch Jung, mach dir das Leben nicht unnötig schwer.
http://www.microsoft.com/visualstudio/deu/products/visual-studio-express-products
-
CJosef schrieb:
Du hast Windows und frickelst mit Cygwin rum?
Das wird bei uns an der Uni so geschätzt.

Ich komme mit cygwin nicht mehr weiter .....

So ... Visual Studio also..
Und garantierst du mir, dass ich Allegro mit Visual Studio 2010 zum Laufen bekomme?
Das muss ich mir jetzt auch erstmal runterladen (Visual Basic 2010 hab ich jetzt). Ist der Compiler direkt C fertig, oder muss ich da noch was tun??Dann zu Allegro:
Im Videotutorial zur Installation
http://www.youtube.com/watch?v=98hTrHen7IA&list=PL9333715188CD7669
hat der Kerl 3 Ordner: Bin Include und Lib
Ich hab keins davon ... und weiß auch immer noch nicht, wo die herkommen sollen ...... schaut doch: http://alleg.sourceforge.net/download.html
Ich schreibe lieber geschlechtsneutral, dann bekommt man eher ne Antwort, aber ich oute mich mal jetzt als weiblich.
Hiiiiilfeeee .... "Jungfrau in Nöten"
-
-
...