Hilfe !!! Spieleprogrammierung in C++ "Galileo Computing"



  • Hallo,
    ich hoffe mir kann jemand helfen. Weil ich mich schon immer mit der programmierung eines Spiels befaßen wollte, legte ich mir das Buch Spieleprogrammierung in C++ von "Galileo Computing" zu.

    Diesem Buch liegt eine Autorenversion von Visual C++ 6 und DirectX SDK 8.1 bei.

    Das erste Projekt ist eine Art Tetris das in 2D realisiert wurde. Dieses Projekt ist in mehrere unterprojekte eingeteilt (auf CD beiliegend). Nach der Softwareinstallation soll man nun den Quelltext des ersten Teils des Projektes öffnen, um das Grundgerüst zu haben, in das man das weitere Spiel programmiert programmiert. Es handelt sich hierbei nur um ein Windows - Rahmenfenster, wo das Spiel reinprogrammiert wird.

    Nun zu meinem Problem, klicke ich nun wie beschrieben auf die Projektdatei "demo.dsw" so wird der Quelltext in Visual C++ angezeigt. Nun sollte es mir möglich sein das Programm zu compilieren und auszuführen, damit der Window - Rahmen erscheint.

    Compiliere ich den Quelltext erscheinen 139 Fehler und 10 Warnungen !!!

    So wie im Forum auf der Seite von Galileo Computing steht, hatten schon mehrere Leute diese Problem, allerdings bringt mir der Tip auf dieser Seite auch nix (Verzeichnisse und Bibliotheken einbinden). funzt net 😕

    http://www.galileocomputing.de/forum/gp/forumID-206

    Vielleicht hat ja hier jemand das Buch und kann mir weiterhelfen. Was ich sehr hoffe, damit mein Vorhaben mit der Spieleprogrammierung nicht daran scheitert das erste Projekt, was schon vorgegeben ist zu compilieren.

    Danke schonmal im voraus.



  • mal als Tipp:
    mach ein eigenes Projekt und bedien dich nur des Beispielst aus dem Buch wenn du nicht mehr weiterweist.



  • Hallo, vielleicht postest Du mal ein paar Fehler damit man eher nachvollziehen kann, was dein Problem sein könnte (Linkerfehler, etc.).

    Gruß

    Bertram



  • Hallo,
    danke erstmal, dass überhaupt jemand so schnell geantwortet hat.

    Zu dem Tip:
    Das Projekt im Buch ist in 12 Versionen aufgeteilt, man soll nur die erste Version (die compiliert nur ein Window Rahmen ist) als Einstieg nutzen.
    Da ein Anfänger halt noch nicht weiß wie komplexe Projekte zusammengefügt werden (z.B welche Libraries). Die Folgeversionen werden selbst erstellt.

    Fehlermeldung:
    Versuche ich die Version 1 zu compilieren so erscheint folgende Meldung:

    "c:\Programme\Microsoft Visual Studio\My Projects\V01\ddutil.h

    Kann nicht Kompiliert werden; der Dateierweiterung ist kein Kompilierungstool zugeordnet."

    Wähle ich Alles neuerstellen , wird compiliert und es erscheinen folgende Fehlermeldungen.

    Demo.cpp
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(43) : error C2320: Auf den Zugriffsbezeichner ';' muss ':' folgen
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(44) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pDD'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(44) : error C2501: 'LPDIRECTDRAW7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(44) : error C2501: 'm_pDD' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(45) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pddsFrontBuffer'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(45) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(45) : error C2501: 'm_pddsFrontBuffer' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(46) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pddsBackBuffer'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(46) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(46) : error C2501: 'm_pddsBackBuffer' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(47) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pddsBackBufferLeft'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(47) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(47) : error C2501: 'm_pddsBackBufferLeft' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(60) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetDirectDraw'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(60) : error C2501: 'LPDIRECTDRAW7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(60) : warning C4183: 'GetDirectDraw': Definition der Member-Funktion sieht aus wie ctor, aber der Name entspricht nicht der umschliessenden Klasse
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(61) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetFrontBuffer'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(61) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(61) : warning C4183: 'GetFrontBuffer': Definition der Member-Funktion sieht aus wie ctor, aber der Name entspricht nicht der umschliessenden Klasse
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(62) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetBackBuffer'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(62) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(62) : warning C4183: 'GetBackBuffer': Definition der Member-Funktion sieht aus wie ctor, aber der Name entspricht nicht der umschliessenden Klasse
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(63) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetBackBufferLEft'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(63) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(63) : warning C4183: 'GetBackBufferLEft': Definition der Member-Funktion sieht aus wie ctor, aber der Name entspricht nicht der umschliessenden Klasse
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(91) : error C2061: Syntaxfehler : Bezeichner 'LPDIRECTDRAWSURFACE7'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(93) : error C2061: Syntaxfehler : Bezeichner 'LPDIRECTDRAWSURFACE7'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(110) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pdds'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(110) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(110) : error C2501: 'm_pdds' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(111) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_ddsd'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(111) : error C2501: 'DDSURFACEDESC2' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(111) : error C2501: 'm_ddsd' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(115) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetDDrawSurface'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(115) : error C2501: 'LPDIRECTDRAWSURFACE7' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(115) : warning C4183: 'GetDDrawSurface': Definition der Member-Funktion sieht aus wie ctor, aber der Name entspricht nicht der umschliessenden Klasse
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(128) : error C2061: Syntaxfehler : Bezeichner 'LPDIRECTDRAW7'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(129) : error C2061: Syntaxfehler : Bezeichner 'LPDIRECTDRAWSURFACE7'
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(129) : error C2535: 'long __thiscall CSurface::Create(void)' : Member-Funktion bereits definiert oder deklariert
    c:\programme\microsoft visual studio\myprojects\v01\ddutil.h(128) : Siehe Deklaration von 'Create'
    c:\programme\microsoft visual studio\myprojects\v01\dsutil.h(50) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pDS'
    c:\programme\microsoft visual studio\myprojects\v01\dsutil.h(50) : error C2501: 'LPDIRECTSOUND8' : Fehlende Speicherklasse oder Typbezeichner
    c:\programme\microsoft visual studio\myprojects\v01\dsutil.h(50) : error C2501: 'm_pDS' : Fehlende Speicherklasse oder Typbezeichner
    Fehler beim Ausführen von cl.exe.

    Demo.obj - 37 Fehler, 5 Warnung(en) 😕

    mmh, wie ordne ich nen Kompilierungstool zu? Die Version 1 enthält folgende Dateien:

    Orner Debug
    Ordner Release
    ddutil.cpp
    ddutil.h
    demo.aps
    demo.cpp
    demo.dsw
    demo.dsp
    demo.h
    demo.ncb
    demo.opt
    demo
    demo.rc
    dsutil.cpp
    dsutil.h
    dxutil.cpp
    dxutil.h
    icon
    resource.h

    Im Buch steht demo.dsw doppel-klick und compilieren?



  • Das Problem dürfte darin liegen, dass deine Entwicklungsumgebung nicht weiß, wo die include bzw. lib Dateien von DirectX8 liegen. Dazu unter Extras->Optionen->Verzeichnisse sowohl den Order der Include (.h) wie auch den der lib Dateien angeben (Im DXSDK Ordner)



  • mac_bu schrieb:

    Das Problem dürfte darin liegen, dass deine Entwicklungsumgebung nicht weiß, wo die include bzw. lib Dateien von DirectX8 liegen. Dazu unter Extras->Optionen->Verzeichnisse sowohl den Order der Include (.h) wie auch den der lib Dateien angeben (Im DXSDK Ordner)

    Von Ding her schon nicht schlecht, aber wenn der compiler nach ddutil.h wird er nichts finden.

    Mein Tipp 1:
    include auch den ordner des Projektes, wo die ddutil.h drinne ist.

    Tipp 2:
    kopiere ddutil.h in den Ordner von DirektX 8.1 SDK include hinein.

    Hat bei mir beides geklappt!



  • Hallo,

    <p>habe nun unter Extras->Optionen->Verzeichnisse c:\DXSDK\INCLUDE</p>
    <p>und unter Extras->Optionen->Verzeichnisse Bibliotheken c:\DXSDK\LIB</p>
    <p>eingebunden, sowie ddutil.h in den INCLUDE Ordner von DXSDK kopiert</p>

    <p>Klicke ich nun wieder doppelt "demo.dsw" und compiliere, erscheint immernoch folgende Meldung.</P>

    <p>Wähle ich wieder "Alles neu erstellen" so wird nach dem compilieren folgendes gezeigt:</p>

    <p>Demo.cpp
    Linker-Vorgang läuft...
    LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
    Debug/Demo.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.</p>

    <p>Demo.exe - 2 Fehler, 0 Warnung(en)</p>

    <p>Ist ja schon um einige Fehlermeldungen kleiner geworden, wofür ich mich ersteinmal bedanken möchte.</p> 😋

    Zu "Mein Tipp 1:
    include auch den ordner des Projektes, wo die ddutil.h drinne ist."

    <p>Wie include ich den einen Ordner??? 😕 Das Projekt liegt in "c:\Programme\Visual Studio\My Projects\V01"

    <p>Kann sein das es jetzt noch daran liegt? 😕



  • Wie include ich den Ordner!
    Genauso, wie Du die anderen include hast. 🙂
    Kopiere den Ordner von der CD auf Festplatte und include dann diesen Ordner, Wo halt diese Dateien drinne sind. Es spielt doch keine Rolle, ob der Ordner Include heisst. Der compiller würde die dateien auch finden, wenn die Dateien in einen anderen Ordner Namens Weihnachten stehen würden.
    Verstanden?



  • @Barkhan: Wenn _main nicht aufgelöst wurde hast du entweder unabsichtlicherweise eine Konsolenanwendung erstellt statt einer WinAPI-Anwendung oder im Code fehlt doch noch etwas 🙂

    Poste doch mal was du versuchst zu compilieren 😉

    MfG SideWinder



  • SideWinder schrieb:

    @Barkhan: Wenn _main nicht aufgelöst wurde hast du entweder unabsichtlicherweise eine Konsolenanwendung erstellt statt einer WinAPI-Anwendung oder im Code fehlt doch noch etwas 🙂

    Poste doch mal was du versuchst zu compilieren 😉

    MfG SideWinder

    Er hat nicht selbst ein Projekt neu gestartet, sondern er hat ein Projekt aus einem Buch(CD) gestartet. Das Projekt ist aus dem ersten Kapitel sozusagen und baut sich Stück für Stück auf.
    Er hat die .dsw gestartet und dann einfach nur den compiller gestartet.
    Stimmt doch, oder Barkhan ?



  • Normalerweise müsstest du darüber mehr Hilfe um Buch stehen, kann mir kaum vorstellen, dass da nur steht: blabla.dsw starten und compilieren...

    MfG Riddick04



  • Hallo,

    danke nochmal an alle, es funktioniert jetzt. Habe Visual Studio 6 nochmal neu installiert, SDK eingebunden, sowie Projektordner.

    😃 😃


Anmelden zum Antworten