wxWidgets Tutorial Part II: Spiel mit mir



  • Ich mein es gäbe mittlerweile dafür Klassen, aber ich finds jetzt gerade nicht in der Doku. Gesehen hab ich das aber mal.
    Evtl. wirst du auch auf wxCode fündig. wxCairo gibts glaub ich da auch noch.



  • Hi 🙂

    Erstmal muss ich auch sagen: Gute Einführung 🙂

    Aber was mich interessiert:

    Heißt es tatsächlich:
    "Player X wins 4 games"

    Vielleicht ist mein Sprachgefühl ja wieder kaputt jetzt sogar im Englischen 😃

    Aber ich würde schreiben: Player X won 4 games

    Was ist nun richtig?

    Danke im Voraus

    Gruß Patrick



  • Ich würde sagen beides 😉
    Das eine ist halt die Vergangenheitsform, wobei ich noch nicht so lange gespielt habe, das sie sinnvoll wäre 😉



  • [klugscheiß]Ich würde eher sagen "Player has won 4 games" da er die Spiele zwar schon gewonnen hat, aber derzeit noch spielt.[/klugscheiß]

    Zum Tutorial selbst: Gut struktiert und auch der Code ist gut lesbar, auch für diejenigen die wxWidgets nicht kenne. 👍

    lg, bloodycross



  • Dieser Beitrag wurde gelöscht!


  • Klingt nach einem Linkerfehler. Sind die Dateien auch korrekt im Projekt eingetragen?



  • Dieser Beitrag wurde gelöscht!


  • 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


Anmelden zum Antworten