wxWidgets Tutorial Part II: Spiel mit mir



  • Also ich hab gerade das Zipfile im Original runter geladen, und das kompiliert hier ohne Probleme.



  • Dieser Beitrag wurde gelöscht!


  • Ich verstehe grade nicht so ganz wie ich das Programm compilieren soll (also den runtergeladenen Beispielcode) steh da total auf dem Schlauch.

    Ich benutzte Linux (Ubuntu Intrepid) und den g++ compiler.
    tree in meinem tictactoe ordner gibt:
    .
    |-- Game
    | |-- FieldPanel.cpp
    | |-- FieldPanel.hpp
    | |-- GameLogic.cpp
    | |-- GameLogic.hpp
    | |-- GamePanel.cpp
    | |-- GamePanel.hpp
    | |-- SettingsDlg.cpp
    | \-\- SettingsDlg.hpp |\-\- TurnEvent.cpp |\-\- TurnEvent.hpp |\-\- app.cpp |\-\- app.h |\-\- main.cpp |\-\- main.h |\-\- settings |\-\- tictactoe.cbp |\-\- tictactoe.depend |\-\- tictactoe.layout-- wx_pch.h

    Sind also alle Dateien da.
    Compilieren tue ich mit:
    g++ main.cpp `wx-config --libs` `wx-config --cxxflags` -o prog

    aber er sagt er könne die GamePanel.hpp nicht finden, obwohl sie doch da ist??
    was ist falsch?



  • Vielleicht müssen sich alle Datein im selben Ordner befinden?



  • Also entweder ist ein Fehler im Programm selbst was ich mir allerdings bei einem Tutorial nicht vorstellen möchte oder es liegt an dem folgenden Fehler...

    Codeblocks couldnt parse wxs file because wxsmith is disabled...

    Nach diesem Fehler hab ich mich jetzt schon durch etliche Foren gekämpft aber nichts gefunden. Es wäre schön wenn von euch vll einer Rat wüsste achja die Fehler post ich auch mal

    ||=== TICTACTOE, Debug ===|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp||In member function 'void Game::FieldPanel::OnPaint(wxPaintEvent&)':|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: 'wxPaintDC' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: expected ';' before 'dc'|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|22|error: 'dc' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|26|error: variable 'wxPen pen' has initializer but incomplete type|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|35|error: variable 'wxPen pen' has initializer but incomplete type|
    ||=== Build finished: 5 errors, 0 warnings ===|

    Muss dazu sagen das ich noch nicht allzuviel Erfahrung mit wxwidgets habe da wir das Thema gerade begonnen haben. Aber auf diesen Fehler weiss unserer Programmierlehrer auch keinen Rat.

    Mit freundlichen Grüßen
    Tollmer



  • Konnte es auch problemlos kompilieren. Sieht gut aus! 🙂



  • Tollmer schrieb:

    Also entweder ist ein Fehler im Programm selbst was ich mir allerdings bei einem Tutorial nicht vorstellen möchte oder es liegt an dem folgenden Fehler...

    Codeblocks couldnt parse wxs file because wxsmith is disabled...

    Nach diesem Fehler hab ich mich jetzt schon durch etliche Foren gekämpft aber nichts gefunden. Es wäre schön wenn von euch vll einer Rat wüsste achja die Fehler post ich auch mal

    ||=== TICTACTOE, Debug ===|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp||In member function 'void Game::FieldPanel::OnPaint(wxPaintEvent&)':|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: 'wxPaintDC' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: expected ';' before 'dc'|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|22|error: 'dc' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|26|error: variable 'wxPen pen' has initializer but incomplete type|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|35|error: variable 'wxPen pen' has initializer but incomplete type|
    ||=== Build finished: 5 errors, 0 warnings ===|

    Muss dazu sagen das ich noch nicht allzuviel Erfahrung mit wxwidgets habe da wir das Thema gerade begonnen haben. Aber auf diesen Fehler weiss unserer Programmierlehrer auch keinen Rat.

    Also das sieht nach einem Problem mit den Pfaden aus.
    Überprüfe doch bitte ob deine Pfade zu wx korrekt sind.



  • Heyho leute also mit dem Pfaden müsste das ja eig stimmen weil einfache Proejekte funktionieren ja auch.Das Testprojekt von wxSmith funktioniert übrigens auch.Das ist iwie komisch^^

    aber dennohc einmal die Pfade die ich eingestellt habe:

    Settings->Compiler und Debuggersettings->Linker Settings->C:\Program Files\CodeBlocks\wxWidgets2.8\lib\gcc_dll

    Settings->Compiler und Debuggersettings->Search Directories->C:\Program Files\CodeBlocks\wxWidgets2.8\lib\gcc_dll

    Settings->Compiler und Debuggersettings->Toolchain Executables->Additional Paths->C:\Program Files\CodeBlocks\wxWidgets2.8\lib\gcc_dll

    Mit freundlichen Grüßen
    Tollmer



  • Und das Include Verzeichnis?



  • Also entweder ist ein Fehler im Programm selbst was ich mir allerdings bei einem Tutorial nicht vorstellen möchte oder es liegt an dem folgenden Fehler...

    Codeblocks couldnt parse wxs file because wxsmith is disabled...

    Nach diesem Fehler hab ich mich jetzt schon durch etliche Foren gekämpft aber nichts gefunden. Es wäre schön wenn von euch vll einer Rat wüsste achja die Fehler post ich auch mal

    ||=== TICTACTOE, Debug ===|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp||In member function 'void Game::FieldPanel::OnPaint(wxPaintEvent&)':|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: 'wxPaintDC' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|21|error: expected ';' before 'dc'|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|22|error: 'dc' was not declared in this scope|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|26|error: variable 'wxPen pen' has initializer but incomplete type|
    C:\Users\Marcel\Desktop\Schule\Programmieren\WxWidgets\tictactoe\Game\FieldPanel.cpp|35|error: variable 'wxPen pen' has initializer but incomplete type|
    ||=== Build finished: 5 errors, 0 warnings ===|

    Muss dazu sagen das ich noch nicht allzuviel Erfahrung mit wxwidgets habe da wir das Thema gerade begonnen haben. Aber auf diesen Fehler weiss unserer Programmierlehrer auch keinen Rat.

    Mit freundlichen Grüßen
    Tollmer

    Hab mit wxDevC++ die gleiche Fehlermeldungen gehabt.
    Folgende Nachtrag in FieldPanel.cpp hat das problem gelöscht.

    .....
    #include "../TurnEvent.hpp"
    #include <wx/wx.h>
    namespace Game
    .......

    Gruß
    Jordan



  • Ich hab n kleines Problem
    Ih kompiliere zwar mit der 2.8er , aber mein minGW wirft folgendes raus

    ld.exe||cannot find -lwx_msw_core-2.6|

    Da ich aber keine Ahnung hab, warum er die 2.6er benutzen will , obwohl ich 2.8 eingestellt hab ist mir das fragwürdig.

    Herzliche Grüße
    nt0r

    PS: C++0x weg hilft vorallem bei "strdup" einiges 😉

    EDIT: Hat sich... mehr oder weniger... erledigt. Hab einfach neues Projekt mit 2.8 gemacht und alles reingezogen.



  • GreenDelta schrieb:

    Ich verstehe grade nicht so ganz wie ich das Programm compilieren soll (also den runtergeladenen Beispielcode) steh da total auf dem Schlauch.

    Ich benutzte Linux (Ubuntu Intrepid) und den g++ compiler.
    tree in meinem tictactoe ordner gibt:
    .
    |-- Game
    | |-- FieldPanel.cpp
    | |-- FieldPanel.hpp
    | |-- GameLogic.cpp
    | |-- GameLogic.hpp
    | |-- GamePanel.cpp
    | |-- GamePanel.hpp
    | |-- SettingsDlg.cpp
    | \-\- SettingsDlg.hpp |\-\- TurnEvent.cpp |\-\- TurnEvent.hpp |\-\- app.cpp |\-\- app.h |\-\- main.cpp |\-\- main.h |\-\- settings |\-\- tictactoe.cbp |\-\- tictactoe.depend |\-\- tictactoe.layout-- wx_pch.h

    Sind also alle Dateien da.
    Compilieren tue ich mit:
    g++ main.cpp `wx-config --libs` `wx-config --cxxflags` -o prog

    aber er sagt er könne die GamePanel.hpp nicht finden, obwohl sie doch da ist??
    was ist falsch?

    Nur damit andere bescheid wissen die das gleiche Problem mit dem g++ haben: der g++ benötigt ALLE datein des Projektes. das heist jede Datei die mit cpp endet und zum Projekt gehört muss als Quelle angegeben werden. Da das ein sehr langer Befehl wäre gibt es ja auch makefiles....



  • Zunächst einmal vielen vielen Dank für das ausführliche Tutorial das du schriebst.
    Tutorial 1 verschaffte mir nun auch einen schnellen Einstieg in wxWidgets.

    Beim zweiten Tutorial habe ich leider noch ein linker-Problem!
    Vielleicht könnte mir ja jemand helfen? Folgender Programmabschnitt scheint nicht linken zu gehen.

    void FieldPanel::OnLeftClick(wxMouseEvent& event)
    {
    	if(status == GameLogic::EMPTY)
    	{
    		status = GameLogic::X;
    		Refresh();// Panel aktualisieren
    		TurnEvent myevent(GameLogic::X,id,EVT_TURN_CHANGE);
    		GetParent()->AddPendingEvent(myevent);
    	}
    }
    

    DevC++ gibt dazu folgende Fehlermeldung:

    In member function 'void Game::FieldPanel::OnLeftClick(wxMouseEvent&)':
    'virtual void wxEvtHandler::AddPendingEvent(const wxEvent&)' is inaccessible
    within this context

    Ich hoffe jemand kann mir helfen. Es ist bestimmt wieder trivial, allerdings bin ich noch ganz neu in wxWidget.

    Vielen Dank



  • Alex der Gast schrieb:

    Zunächst einmal vielen vielen Dank für das ausführliche Tutorial das du schriebst.
    Tutorial 1 verschaffte mir nun auch einen schnellen Einstieg in wxWidgets.

    Beim zweiten Tutorial habe ich leider noch ein linker-Problem!
    Vielleicht könnte mir ja jemand helfen? Folgender Programmabschnitt scheint nicht linken zu gehen.

    void FieldPanel::OnLeftClick(wxMouseEvent& event)
    {
    	if(status == GameLogic::EMPTY)
    	{
    		status = GameLogic::X;
    		Refresh();// Panel aktualisieren
    		TurnEvent myevent(GameLogic::X,id,EVT_TURN_CHANGE);
    		GetParent()->AddPendingEvent(myevent);
    	}
    }
    

    DevC++ gibt dazu folgende Fehlermeldung:

    In member function 'void Game::FieldPanel::OnLeftClick(wxMouseEvent&)':
    'virtual void wxEvtHandler::AddPendingEvent(const wxEvent&)' is inaccessible
    within this context

    Ich hoffe jemand kann mir helfen. Es ist bestimmt wieder trivial, allerdings bin ich noch ganz neu in wxWidget.

    Vielen Dank

    http://clicktobegin.net/programming/why-you-shouldnt-use-dev-c/



  • @Scorcher24: Dev-C++ wird wieder weiterentwickelt.



  • Hallo,

    das ist ein gutes Tutorial, aber ich bin Anfänger und habe es nicht geschafft wxwidgets in mein visual Studio 2010 einzubinden. Ich habe das Buch: "Coding for fun mit C++" von Arnold Willemer und habe versucht wie dort beschrieben ein Projekt in Microsoft visual c++ 2010 Express zu erstellen. Dafür soll man einfach die wxpack - Datei installieren und kann danach laut Autor ein Projekt des Typen WxWidgets erstellen und damit arbeiten. Meine Frage ist jetzt also wie geht das? Muss ich dafür noch irgentetwas anderes installieren oder einstellen?

    Es wäre cool, wenn mir jemand helfen könnte, weil ich endlich mal eine Programmierung mit Grafik ausprobieren wollte und jetzt das an sich gute Buch welches ich mir gekauft habe nicht vollständig nutzen kann, nur weil ich das Erstellen eines WxWidgets-Projektes nicht hinbekomme 😞

    Mein Ziel ist es einfache grafische Darstellungen zu erzeugen um Spiele einfachster sorte mit Grafik zu erzeugen ohne immer auf das Konsolenfenster starren zu müssen. Ich dachte, mit WxWidgets könnte ich es schaffen ein leichtes Sprung/duckspiel zu entwerfen in dem ich einen Smiley durch Pfeiltasten entweder springen oder ducken lasse um Autos/Blöcken auszuweichen. An sich also eigentlich keine so schwirige Idee, oder?

    Ich habe die Installation von Wxpack schon mehrfach widerholt und bin 😡 das das nicht klappt.Ich weiß nicht mehr weiter 😕

    Ein Anfänger der Hilfe braucht 🙂



  • darioprogrammiert schrieb:

    Hallo,

    das ist ein gutes Tutorial, aber ich bin Anfänger und habe es nicht geschafft wxwidgets in mein visual Studio 2010 einzubinden. Ich habe das Buch: "Coding for fun mit C++" von Arnold Willemer und habe versucht wie dort beschrieben ein Projekt in Microsoft visual c++ 2010 Express zu erstellen. Dafür soll man einfach die wxpack - Datei installieren und kann danach laut Autor ein Projekt des Typen WxWidgets erstellen und damit arbeiten. Meine Frage ist jetzt also wie geht das? Muss ich dafür noch irgentetwas anderes installieren oder einstellen?

    Es wäre cool, wenn mir jemand helfen könnte, weil ich endlich mal eine Programmierung mit Grafik ausprobieren wollte und jetzt das an sich gute Buch welches ich mir gekauft habe nicht vollständig nutzen kann, nur weil ich das Erstellen eines WxWidgets-Projektes nicht hinbekomme 😞

    Mein Ziel ist es einfache grafische Darstellungen zu erzeugen um Spiele einfachster sorte mit Grafik zu erzeugen ohne immer auf das Konsolenfenster starren zu müssen. Ich dachte, mit WxWidgets könnte ich es schaffen ein leichtes Sprung/duckspiel zu entwerfen in dem ich einen Smiley durch Pfeiltasten entweder springen oder ducken lasse um Autos/Blöcken auszuweichen. An sich also eigentlich keine so schwirige Idee, oder?

    Ich habe die Installation von Wxpack schon mehrfach widerholt und bin 😡 das das nicht klappt.Ich weiß nicht mehr weiter 😕

    Ein Anfänger der Hilfe braucht 🙂

    http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide



  • Dieser Beitrag wurde gelöscht!

Anmelden zum Antworten