Der Anfänger Thread
-
Hallo
Wenn du vector benutzen willst, musst du nich den Header <vector> inkludieren.
Für den Rest solltest du dir das durchlesen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html
chrische
-
Du meinst "noch" und nicht "nich"?
-
hallo,
ich habe auch eine frage.
ich habe das buch Spieleprogrammieren mit C++ und Genesis3d für kids
jetzt frage ich ob mir jemand den gesammten quelltext für ein leeres "windowsfenster" gibt?
wäre nett
euer neuling
-
C++ kennt keine "windowsfenster". Da musst du schon im entsprechenden Forum für dein System bzw. deinem verwendeten Framework nachschauen.
-
jetzt frage ich ob mir jemand den gesammten quelltext für ein leeres "windowsfenster" gibt?
http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api2.htm
Hierzu musst Du nur Zugriff auf "windows.h" haben.
-
Also im buch ist folgendes:
//-----------------------------------------------------------------------------
//Header mit Klassendeklaration von G3DGame
//-----------------------------------------------------------------------------
#include <windows.h>
#include "include\genesis.h"class TGame
{
public:
//Eigenschaften
geEngine *Engine;
geWorld *World;
geCamera *Camera;
geDriver *Driver;
geDriver_Mode *DMode;
geXForm3d XForm;
bool isRunning;
//Methoden
void CreateGame (void);
void RunGame (void);
void FreeGame (void);
void SetDriver (void);
void ExitError (char *Txt);
};//Pfad- und Dateinamen
const char *Pfad = ".\\levels\";
const char *BSP_Datei = "World0.bsp";
const char *GVersion = "GPlay1";
const int MaxWidth = 640;
const int MaxHeight = 480;HWND GHandle; //Handle des "Spielfensters"
#include "Skelett.h"
LRESULT CALLBACK WndProc (HWND hWnd,
UNIT iMessage, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain
(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS Win;
MSG msg;
Win.cbClsExtra = 0;
Win.cbWndExtra = 0;
Win.hInstance = hInstance;
Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
Win.hCursor = LoadCursor(NULL, IDC_ARROW);
Win.hbrBackground =
(HBRUSH)GetStockObject (BLACK_BRUSH);
Win.style = CS_HREDRAW | CS_VREDRAW;
Win.lpfnWndProc = WndProc;
LRESULT CALLBACK WndProc (HWND hWnd,
UINT iMessage, WPARAM wParam, LPARAM lParam)
{
switch (iMessage)
{
case WM_KEYDOWN;
{
switch (wParam)
{
case VK_ESCAPE:
{
PostMessage(hWnd, WM_QUIT, 0, 0);
}
}
}
default:
return DefWindowProc
(hWnd, iMessage, wParam, lParam);
}
return 0;
}
Win.lpszClassName = "???";
Win.lpszMenuName = NULL;
RegisterClass (&Win);
GHandle = CreateWindow (Win.lpszClassName,
"Windows Minimum - [Esc]=Ende", WS_TILED,
CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
MaxHeight, NULL, NULL, hInstance, NULL);
if (!GHandle)
{
return 0;
}
ShowWindow (GHandle, nCmdShow);
UpdateWindow (GHandle);
isRunning = true;
while (isRunning)
{
while
(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (!GetMessage(&msg, NULL, 0, 0))
{
isRunning = false;
break;
}
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
return 1;
}aber bei mir geht das einfach nicht

-
"Geht nicht" ist keine Fehlerbeschreibung. Was erscheint denn im Protokollfenster, wenn du das Projekt baust? (Fehlermeldungen?)
-
[C++ Fehler] Fenster.cpp(5): E2209 include-Datei 'include\genesis.h' kann nicht geöffnet werden
[C++ Fehler] Fenster.cpp(11): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(11): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(12): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(12): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(13): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(13): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(14): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(14): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(15): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(15): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(16): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(16): E2139 In Deklaration fehlt ;
[C++ Fehler] Fenster.cpp(35): E2209 include-Datei 'Skelett.h' kann nicht geöffnet werden
[C++ Fehler] Fenster.cpp(37): E2303 Typname erwartet
[C++ Fehler] Fenster.cpp(52): E2451 Undefiniertes Symbol 'WndProc'
[C++ Fehler] Fenster.cpp(53): E2108 Ungültige Verwendung von typedef 'LRESULT'
[C++ Fehler] Fenster.cpp(53): E2379 In Anweisung fehlt ;
[C++ Fehler] Fenster.cpp(87): E2451 Undefiniertes Symbol 'isRunning'
-
Deine Nachrichtenfunktion für das Hauptfenster steht ja mitten in WinMain. So geht das natürlich nicht. Setze diesen Teil
LRESULT CALLBACK WndProc (HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { switch (iMessage) { case WM_KEYDOWN; { switch (wParam) { case VK_ESCAPE: { PostMessage(hWnd, WM_QUIT, 0, 0); } } } default: return DefWindowProc (hWnd, iMessage, wParam, lParam); } return 0; }einfach mal vor WinMain. Und benutze das nächste mal bitte Code Tags. Ansonsten ist der Code einfach unleserlich, und keiner hat Lust, sich den anzuschauen.
-
[C++ Fehler] Fenster.cpp(5): E2209 include-Datei 'include\genesis.h' kann nicht geöffnet werden [C++ Fehler] Fenster.cpp(11): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(11): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(12): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(12): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(13): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(13): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(14): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(14): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(15): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(15): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(16): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(16): E2139 In Deklaration fehlt ; [C++ Fehler] Fenster.cpp(35): E2209 include-Datei 'Skelett.h' kann nicht geöffnet werden [C++ Fehler] Fenster.cpp(37): E2303 Typname erwartet [C++ Fehler] Fenster.cpp(38): E2040 Deklaration nicht ordnungsgemäß abgeschlossenso schon wieder ne schwette voller fehler..

-
'include\genesis.h' kann nicht geöffnet werden
'Skelett.h' kann nicht geöffnet werdenDas musst Du offenbar richtig einbinden. Schau erst mal bei Optionen oder Einstellungen oder Verzeichnissen, ob dort alles richtig eingestellt ist.
-
Entschuldigung, ich bin ein BlutigerAnfänger!
wie kann ich den dort das verzeichniss angeben?
-
Welcher Compiler bzw. welche IDE benutzt du?
In VC++ 2003 mußt du das Genesis-Include-Verzeichnis hier eintragen:
Extras->Optionen->Projects->C++ Verzeichnisse
Und dort in der Combobox Includeverzeichnisse.Genesis hat sicherlich auch Library-Dateien (*.lib), das Verzeichnis auch dort unter Bibliotheksdateien hinzufügen.
Aber sowas steht eigentlich meistens in den Readme's oder Dokumentation der Bibliotheken (in deineem Fall Genesis3D)... meistens jedenfalls.
-
Schau Dich bei Deinem "Werkzeug" genau im Menü um, sonst wirst Du ständig solche Pannen erleben.
-
ich benütze Borland C++Builder.
die cd de beim Buch dabei war...
-
Mit welchen dateien müsste ich den die windows.h, include\genesis.h und Skelett.h verknüpfen?
ed
-
Hallo
Das sollte doch alles in deinem Buch stehen.
chrische
-
Hallo,
Nö im Buch steht nichts über das verknüpfen.
-
so ich habs jetzt weiter gemacht aber kann mir jemand verraten warum das Programm manchmal geht manchmal nicht???
bin total ratlos.
//HEADER--------------------------------------------------------------------- #include <iostream.h> #include <iomanip.h> #include <conio.h> #include <math.h> //VOID-Deklaration----------------------------------------------------------- void feld (void); //MAIN----------------------------------------------------------------------- int main() { feld(); } //Spielfeld------------------------------------------------------------------ void feld (void) { char w=205,s=186,k=206,elo=201,elu=200,ero=187,eru=188,sou=203,soo=202,sol=185,sor=204,l=255; char eingabe=0; int groesse=0,richtungseingabe=0,zeile=10,spalte=2,zeilenbegrenzunglinks=0; int zeilenbegrenzungrechts=0,spaltenbegrenzungunten=0,spaltenbegrenzungoben=0; int schiffanzahleinser=0,schiffanzahlzweier=0; int schiffanzahldreier=0,schiffanzahlvierer=0,schiffanzahlfuenfer=0,feldgroesse=0; int feld[12][12]={NULL}; //Ascii- Tabelle /*char linie=0; for(int i=0;i<265;i++) { linie=i; cout<<i<<" = "<<linie<<endl<<endl; } getchar();*/ /*Werte der ASCII Zeichen des Spielfeldes Ergebnis leer=255 l doppellinie waagrecht=205 w doppellinie senkrecht=186 s doppellinie kreuz=206 k doppellinie ecke links oben=201 elo doppellinie ecke links unten=200 elu doppellinie ecke rechts oben=187 ero doppellinie ecke rechts unten=188 eru doppellinie seitenteil Oeffnung unten=203 sou doppellinie seitenteil Oeffnung oben=202 soo doppellinie seitenteil Oeffnung links=185 sol doppellinie seitenteil Oeffnung rechts=204 sor */ do { clrscr(); cout<<"\n\tWaehlen Sie Ihren gewuenschten Schwierigkeitsgrad aus:" <<"\n\n\n\n\tFuer leicht (Feld: 8x 8) druecken Sie die Taste\t[l] bzw. [L]" <<"\n\tFuer mittel (Feld: 10x10) druecken Sie die Taste\t[m] bzw. [M]" <<"\n\tFuer schwer (Feld: 12x12) druecken Sie die Taste\t[s] bzw. [S]" <<"\n\n\tFuer die Hilfe druecken Sie die Taste\t\t\t[h] bzw. [H]"; gotoxy(64,2); eingabe=getch(); switch(eingabe) //Auswahl des Schwierigkeitsgrades { case'l': case'L': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=29; spaltenbegrenzungunten=15; spaltenbegrenzungoben=2; schiffanzahleinser=0; schiffanzahlzweier=2; schiffanzahldreier=2; schiffanzahlvierer=1; schiffanzahlfuenfer=0; feldgroesse=5; groesse=8; //Breite und Hoehe des Spielfeldes break; case'm': case'M': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=36; spaltenbegrenzungunten=19; spaltenbegrenzungoben=2; schiffanzahleinser=2; schiffanzahlzweier=2; schiffanzahldreier=2; schiffanzahlvierer=1; schiffanzahlfuenfer=0; feldgroesse=7; groesse=10; //Breite und Hoehe des Spielfeldes break; case's': case'S': zeilenbegrenzunglinks=10; //Begrenzung des Spielfeldes zeilenbegrenzungrechts=41; spaltenbegrenzungunten=23; spaltenbegrenzungoben=2; schiffanzahleinser=4; schiffanzahlzweier=3; schiffanzahldreier=2; schiffanzahlvierer=1; schiffanzahlfuenfer=1; feldgroesse=9; groesse=12; //Breite und Hoehe des Spielfeldes break; case'h': case'H': clrscr(); cout<<"\n\tHilfe"; getchar(); eingabe='a'; //Schleife kann nicht beendet werden (variable 'eingabe' ist nicht 'l', 'L', 'm', 'M', 's', 'S', 'h' oder 'H' sondern 'a') break; } }while(eingabe!='l' && eingabe!='L' && eingabe!='m' && eingabe!='M' && eingabe!='s' && eingabe!='S' && eingabe!='h' && eingabe!='H'); //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- randomize(); if(schiffanzahleinser!=0) { for(int zahl=0;zahl<schiffanzahleinser;zahl++) { int w=random(feldgroesse), s=random(feldgroesse); //Prueft ob platz schon belegt ist if(feld[w][s]==0) { int richtungswahl=random(2); if(richtungswahl==0) //schiff in die waagerechte { feld[w][s]=1; } if(richtungswahl==1) //schiff in die senkrechte { feld[w][s]=1; } } else { zahl--; } } } if(schiffanzahlzweier!=0) { for(int zahl=0;zahl<schiffanzahlzweier;zahl++) { int w=random(feldgroesse), s=random(feldgroesse); if(feld[w][s]==0&&feld[w+1][s]==0&&feld[w-1][s]==0&&feld[w][s+1]==0&&feld[w][s-1]==0) //Prueft ob platz schon belegt ist { int richtungswahl=random(2); if(richtungswahl==0) //schiff in die waagerechte { feld[w][s]=1; feld[w+1][s]=1; } if(richtungswahl==1) //schiff in die senkrechte { feld[w][s]=1; feld[w][s+1]=1; } } else { zahl--; } } } if(schiffanzahldreier!=0) { for(int zahl=0;zahl<schiffanzahldreier;zahl++) { int w=random(feldgroesse), s=random(feldgroesse); if(feld[w][s]==0&&feld[w+1][s]==0&&feld[w+2][s]==0&&feld[w-1][s]==0&&feld[w-2][s]==0&&feld[w][s+1]==0&&feld[w][s+2]==0&&feld[w][s-1]==0&&feld[w][s-2]==0) //Prueft ob platz schon belegt ist { int richtungswahl=random(2); if(richtungswahl==0) //schiff in die waagerechte { feld[w][s]=1; feld[w+1][s]=1; feld[w+2][s]=1; } if(richtungswahl==1) //schiff in die senkrechte { feld[w][s]=1; feld[w][s+1]=1; feld[w][s+2]=1; } } else { zahl--; } } } if(schiffanzahlvierer!=0) { for(int zahl=0;zahl<schiffanzahlvierer;zahl++) { int w=random(feldgroesse), s=random(feldgroesse); if(feld[w][s]==0&&feld[w+1][s]==0&&feld[w+2][s]==0&&feld[w+3][s]==0&&feld[w-1][s]==0&&feld[w-2][s]==0&&feld[w-3][s]==0&&feld[w][s+1]==0&&feld[w][s+2]==0&&feld[w][s+3]==0&&feld[w][s-1]==0&&feld[w][s-2]==0&&feld[w][s-3]==0) //Prueft ob platz schon belegt ist { int richtungswahl=random(2); if(richtungswahl==0) //schiff in die waagerechte { feld[w][s]=1; feld[w+1][s]=1; feld[w+2][s]=1; feld[w+3][s]=1; } if(richtungswahl==1) //schiff in die senkrechte { feld[w][s]=1; feld[w][s+1]=1; feld[w][s+2]=1; feld[w][s+3]=1; } } else { zahl--; } } } if(schiffanzahlfuenfer!=0) { for(int zahl=0;zahl<schiffanzahlfuenfer;zahl++) { int w=random(feldgroesse), s=random(feldgroesse); if(feld[w][s]==0&&feld[w+1][s]==0&&feld[w+2][s]==0&&feld[w+3][s]==0&&feld[w+4][s]==0&&feld[w-1][s]==0&&feld[w-2][s]==0&&feld[w-3][s]==0&&feld[w-4][s]==0&&feld[w][s+1]==0&&feld[w][s+2]==0&&feld[w][s+3]==0&&feld[w][s+4]==0&&feld[w][s-1]==0&&feld[w][s-2]==0&&feld[w][s-3]==0&&feld[w][s-4]==0) //Prueft ob platz schon belegt ist { int richtungswahl=random(2); if(richtungswahl==0) //schiff in die waagerechte { feld[w][s]=1; feld[w+1][s]=1; feld[w+2][s]=1; feld[w+3][s]=1; feld[w+4][s]=1; } if(richtungswahl==1) //schiff in die senkrechte { feld[w][s]=1; feld[w][s+1]=1; feld[w][s+2]=1; feld[w][s+3]=1; feld[w][s+4]=1; } } else { zahl--; } } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- clrscr(); //kopfzeile des Spielfeldes cout<<"\t"<<elo; for (int a=0;a<groesse-1;a++) { cout<<w<<w<<sou; } cout<<w<<w<<ero<<endl; //innere flaeche des Spielfeldes for(int zeile=0;zeile<groesse-1;zeile++) { cout<<"\t"<<s; for(int spalte=0;spalte<groesse;spalte++) { cout<<l<<l<<s; } cout<<endl<<"\t"<<sor; for(int spalte2=0;spalte2<groesse-1;spalte2++) { cout<<w<<w<<k; } cout<<w<<w<<sol<<endl; } //fusszeile des Spielfeldes cout<<"\t"<<s; for(int spalte=0;spalte<groesse;spalte++) { cout<<l<<l<<s; } cout<<endl<<"\t"<<elu; for(int b=0;b<groesse-1;b++) { cout<<w<<w<<soo; } cout<<w<<w<<eru; gotoxy(zeile,spalte); //geht ins erste Kaestchen des Spielfeldes (Wertzuweisung oben) int zaehlerzeile=0,zaehlerspalte=0; do { gotoxy(60,2); cout<<"Koordinate"; gotoxy(60,5); cout<<"Spalte:"<<setw(3)<<zaehlerspalte+1; gotoxy(60,6); cout<<"Zeile:"<<setw(4)<<zaehlerzeile+1; gotoxy(zeile,spalte); int richtung=getch(); if(richtung==77) //schritt nach rechts { if(zeile<zeilenbegrenzungrechts) { zeile=zeile+3; zaehlerspalte++; //setzt aktuelle Possition im Array } } else if(richtung==75) //schritt nach links { if(zeile>zeilenbegrenzunglinks) { zeile=zeile-3; zaehlerspalte--; //setzt aktuelle Possition im Array } } else if(richtung==80) //schritt nach unten { if(spalte<spaltenbegrenzungunten) { spalte=spalte+2; zaehlerzeile++; //setzt aktuelle Possition im Array } } else if(richtung==72) //schritt nach oben { if(spalte>spaltenbegrenzungoben) { spalte=spalte-2; zaehlerzeile--; //setzt aktuelle Possition im Array } } if(richtung==13) { if(feld[zaehlerspalte][zaehlerzeile]==1) { cout<<"X"; } else if(feld[zaehlerspalte][zaehlerzeile]==0) { cout<<'~'; } } }while(richtungseingabe!=120 && richtungseingabe!=88); //das druecken der Taste X beendet die richtungsauswahl } //---------------------------------------------------------------------------
-
Ich denke, hier wird sich niemand einen 400-Zeilen-Quelltext ansehen, nur um herauszufinden, wo etwas "manchmal nicht geht" - da solltest du dir schon etwas mehr Mühe damit geben, das Problem einzugrenzen.