Erstes Spiel bzw. erste Grafikanwendung
-
Du wirst dich daran gewöhnen müssen, dass es fast nur Infos in englischer Sprache gibt.
-
Wenn es dir erstmal nur um die GrafikGrundlagen geht, kannst du ja auch mit der GDI anfangen. Da gibt' auch Sachen in Deutsch. Dann faellt es dir vielleicht leichter, mit anderen Dingen weiter zu machen (mit der GDI kann man aber auch einfache Spiele machen)
Wenn dir Englisch (noch) nicht so liegt, bringt es nicht viel, sich mit dieser Sprache in etwas zu stuerzen, was man noch gar nicht kennt.
-
Naja, mit dict.leo.org und google.de bewaffnet sollten die Tutorials für jeden machbar sein, der in der Schule mehr als 2 Jahre Englisch hatte.
Außerdem lernt man die Sprache nie, wenn man sich nicht damit beschäftigt.
-
so habe mich da mal ein bisschen reingelesen und acuh schon bisschen mit threads und dem mutex befehlen rumgespielt.
jetzt wollte ich gerade mal ein windows fenster starten, nur leider kann ich dieses nicht kompilieren .
er meldet immer folgende fehler :
1>sfml6.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: void __thiscall sf::Window::Display(void)" (?Display@Window@sf@@QAEXXZ)". 1>sfml6.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual __thiscall sf::Window::~Window(void)" (??1Window@sf@@UAE@XZ)". 1>sfml6.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall sf::Window::Window(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned long,struct sf::WindowSettings const &)" (??0Window@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KABUWindowSettings@1@@Z)". 1>sfml6.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z)". 1>MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_WinMain@16". 1>C:\Users\Heiner\Desktop\Programmieren\sfml6\Release\sfml6.exe : fatal error LNK1120: 5 nicht aufgelöste externe Verweise.muss ich beim anlegen des projektes irgendwas anderes auswählen ?bis lang habe ich immer eine Win32-Konsolenanwendung estellt und dann bei den Anwendungsbeispielen auch konselenanwendung ausgewählt und das ganze als leeres projekt gestartet. kann mir da jemand weiter helfen ?
gruß
-
Oder nimm doch einfach ne Grafikbibliothek.
- Ich hab in C++ mit Allegro angefangen (ist zwar ne C Lib aber macht ja nix ^^)
- Die Irrlicht Engine könntest du auch nehmen (hat aber meiner Meinung nach zu wenig 2D Funktionen, kann keinen richtige Kreis oder Ellipse zeichnen)
- Oder du nimmst eine relativ junge Engine, z.B. meine ^^
Die "SoftPixel Engine" bietet vor allem für 2D GrafikAnwendungen eine sehr komfortable Schnittstelle und ist sehr leicht zu nutzen (siehe hier: http://softpixelengine.sourceforge.net/)
Da gibt's auch ein 2D Tutorial: http://softpixelengine.sourceforge.net/sp_tutorial_1.htmlGruß Lukas
-
@Lukas:
Gut, dass SFML eine Grafikbibliothek ist. :p
Und für 2D Irrlicht zu empfehlen ist nah dran an grobem Unfug!@jontef:
Du solltest natürlich die benötigten Libs einbinden. Wenn du Visual Studio nutzest (die Fehlermeldung lässt das erschließen), solltest sie du in den Projekteinstellungen unter Linker->Input->Additional Dependencies einbinden. Für die Tutorials wären das also sfml-window.lib, sfml-graphics.lib und sfml-system.lib.Siehe auch http://www.sfml-dev.org/tutorials/1.3/start-vc.php
sfml-main.lib solltest du auch reinbringen, wenn du lieber mit "int main().." als mit "int WinMain(..)" starten willst. Siehe Fehlermeldung Zeile 5.
-
die dateien hab ich alle soweit auch eingebunden. habe es jetzt auch hinbekommen ohne fehler zu kompilieren, jetzt fehlt ihm aber beim starten die sfml-window.dll obwohl diese im visual studio ordner liegt. muss ich die noch wo anders hin kopieren ?
-
Wenn du aus dem Studio heraus startest, sollte sie im Projektverzeichnis liegen, d.h. neben dem Code, der Solution und den vcproj-Dateien.
Wenn du aus dem Explorer heraus starten willst, dann halt im gleichen Verzeichnis wie die EXE.
Gerüchten zufolge kann man VS auch beibringen, noch an anderen Punkten zu suchen, das habe ich aber auch noch nicht geschafft.
-
ich starte es aus vc heraus , die dll datei habe ich von hand darein kopiert aber der fehler besteht immer noch .
kann das irgendwie im zusammenhang mit vista64 stehen ? hoffe ja doch nicht denn bis lang hat immer alles geklappt
-
Hm, mit Vista64 habe ich nun gar keine Erfahrungen. Alternativ kopier die Dinger zur EXE und starte die per Explorer.
Werde mich aber mal informieren, das interessiert mich.
-
so das mit den fenster habe ich jetzt auch unter vista64 hinbekommen. hatte irgendwas zu tun mit den libarys die ich eingebunden hatte. musste die alle mit -s einbinden wie z.b. sfml-system-s.lib . wozu ist das "s" bzw "d" oder beides denn da? hab den sinn noch nicht so ganz verstanden.
desweiteren würde mich interessieren, warum ich die programme die ich geschriben habe, nicht auf anderen rechnern zum laufen bekomme wenn ich die "exe-datei" rüber kopiere. hat das nen grund? muss ich noch irgendwas umstellen ?
Gruß und vielen dank schonmal
-
Also, bei SFML ist es so, dass sämtliche Libs, die mit -s enden, statisch sind, d.h. deren Inhalt in die Exe mitreingelinkt wird. Die mit -d enthalten Debug-Informationen.
Was kommt auf anderen Rechnern für eine Fehlermeldung?
-
Wenn du wirklich Erfahrung in C++ hättest, würdest du nicht Tetris zu
Anfang schreiben wollen, dass ist ne ganz schöne Granate die de da vor
hast...
-
way schrieb:
Wenn du wirklich Erfahrung in C++ hättest, würdest du nicht Tetris zu
Anfang schreiben wollen, dass ist ne ganz schöne Granate die de da vor
hast...Was ist denn an tetris bitte schön so schwer?
-
mad_martin schrieb:
Also, bei SFML ist es so, dass sämtliche Libs, die mit -s enden, statisch sind, d.h. deren Inhalt in die Exe mitreingelinkt wird. Die mit -d enthalten Debug-Informationen.
Was kommt auf anderen Rechnern für eine Fehlermeldung?
also als fehlermeldung kommt z.b. "Der Prozedureinsprung "_ftol2" wurde in der DLL "msvcrt.dll" nicht gefunden". Manchmal stürzt das Programm auch einfach ab oder der Bildschirm bleibt schwarz.
desweiteren frag ich mich, wie ich das konsolenfenster, welches immer im hintergrund läuft, schließen kann?poste mal den Quellcode hier aber daran kann es ja eigentlich nicht liegen. Denke eher das es an der Libary liegt.
#include <SFML/Graphics.hpp> #include <iostream> int main() { sf::RenderWindow App(sf::VideoMode(800, 600), "SFML Shapes"); sf::Shape Kreis1 = sf::Shape::Circle(150, 150, 40, sf::Color::White, 10, sf::Color::Blue); sf::Shape linielinks = sf::Shape::Line(130,200,130,250,2,sf::Color::White,2,sf::Color::White); sf::Shape Rechteck = sf::Shape::Rectangle(100,100,700,500,sf::Color::Black,5,sf::Color::White); sf::String Text; Text.SetPosition(10,10); Text.SetText("Test"); Text.SetColor(sf::Color::White); Text.SetFont(sf::Font::GetDefaultFont()); float posx=150.0f; float posy=150.0f; float posxx=0.25f; float posyy=0.25f; while (App.IsOpened()) { sf::Event Event; while (App.GetEvent(Event)) { if (Event.Type == sf::Event::Closed) App.Close(); if(Event.Type == sf::Event::KeyPressed) { if (Event.Key.Code == sf::Key::F1) { sf::Image Screen = App.Capture(); Screen.SaveToFile("screenshot.jpg"); } if (Event.Key.Code == sf::Key::Add) { if(posxx>0) posxx=posxx+0.05f; if(posyy<0) posxx=posxx-0.05f; if(posyy>0) posyy=posyy+0.05f; if(posyy<0) posyy=posyy-0.05f; } if (Event.Key.Code == sf::Key::Subtract) { if(posxx>0) posxx=posxx-0.05f; if(posxx<0) posxx=posxx+0.05f; if(posyy>0) posyy=posyy-0.05f; if(posyy<0) posyy=posyy+0.05f; } } } App.Draw(Text); Kreis1.Move(posxx,posyy); posx=posx+posxx; posy=posy+posyy; if(posx>=650.0) posxx=posxx*(-1.0f); if(posx<=150.0) posxx=posxx*(-1.0f); if(posy>=450.0) posyy=posyy*(-1.0f); if(posy<=150.0) posyy=posyy*(-1.0f); App.Draw(Rechteck); App.Draw(Kreis1); App.Draw(linielinks); App.Display(); } return EXIT_SUCCESS; }way schrieb:
Wenn du wirklich Erfahrung in C++ hättest, würdest du nicht Tetris zu
Anfang schreiben wollen, dass ist ne ganz schöne Granate die de da vor
hast...Zu Tetris: Das ist ja auch nur ein Gedanke das es da mal drauf hinaus laufen soll und nicht das ich damit direkt anfangen will. steht da oben auch drin. Aber was du so schwer dran sein soll verstehe ich auch nicht. Aber gut, war ja auch nicht so die hilfreiche antwort
-
Also ich kann da nur SDL empfehlen für nen leichten / einfachen Einstieg ... Wenn ich hier seh das du 2 Seiten lang nur mit Fehlermeldungen zu kämpfen hast
Kannst dir ja mal hier SDL Tutorials anschauen wenn du magst: http://www.robsite.de/tutorials.php?tut=sdl die von Marius Andra sind sehr gut erklärt.Hatt mein 2Player Pong damit an einem WE geschafft

-
Ich würde Dir auch den SDL empfehlen. Leicht zu programmieren, und man hat schnell Erfolgserlebnisse rund um die Themen Grafik, Animation, Eventhandling etc.
Die Robsite Links haben mir auch geholfen. Imo ist das Wiki-Book sehr hilfreich, da dort auch SDL-TTF (Font-behandlung), SDL-Image und SDL-gfx behandelt werden.
-
[propaganda]
nimm sfml, vergiss sdl1!!!!!!!
[/propaganda]
-
Peppie schrieb:
Wenn ich hier seh das du 2 Seiten lang nur mit Fehlermeldungen zu kämpfen hast

Die Fehlermeldungen liegen nicht an der Bibliothek an sich, sondern an Vista64 + Visual Studio und DLL-Inkompatibilitäten.

Außerdem hat jontef geschrieben, dass er am liebsten C++ verwenden will. SFML ist rein in C++ geschrieben, deshalb eine gute Wahl. Unter dem Gesichtspunkt um Längen besser als SDL, was in C implementiert wurde.
Was den einfachen Einstieg angeht: Ich habe beides ausprobiert und finde SFML geeigneter (gerade, weil ich als C++-Programmierer daran gegangen bin, und nicht als C-Programmierer). Schaut euch mal die Tutorials an und dann sagt mir nochmal, der Einstieg wäre schwer.
@jontef:
So, zurück zu deinem DLL-Problem. Es scheint also, als ob du die vorgefertigten DLLs nicht nutzen könntest. Kann passieren, bei Vista64 sogar wahrscheinlich.Also musst du die DLLs neukompilieren. Ist kein Problem. Geh in deinen SFML-Ordner. Da drin liegt (wenn du das Komplettpaket heruntergeladen hast) ein Ordner "Build". Da drin wählst du den zu deiner Version von VS passenden Ordner aus und öffnest die passende "SFML.sln".
Nun wählst du aus der Menüleiste "Build - Batch Build" aus (keine Ahnung, wie das in der deutschen Version heißt, wahrscheinlich "Erstellen - Batch...". Hacken bei allen Items, die mit "sfml-" anfangen und Abfahrt.
Nach dem Buildvorgang sollten dann - wenn alle Ordnereinstellungen stimmmen, davon gehe ich aus - direkt die neuen DLLs genutzt werden.
Probier das mal aus und berichte von deinen Erfahrungen!
Gib SFML 'ne Chance, du wirst sehen, es lohnt sich!

-
ok habe alles so gemacht wie du es gesagt hast. hat auch alles einwandfrei geklappt. die anwendungen funktionieren jetzt auch so weit bei mir.
nur wie bekomme ich die anwendungen auf anderen rechnern zum laufen ? muss ich da etwas mit dazu kopieren ? reicht es nicht wenn ich debug.exe rüber kopiere und die dort starte ?
desweiteren wird bei mir immer ein dos fenster geöfnet sobald ich ein programm starte, ist es möglich dieses zu umgehen ?gruß und danke schon mal