Ich habe das Buch bis zum Thema HandleEvents (Seite 95) gelesen und dann zur Seite gelegt. Zum einen wird mit Singletons gearbeitet, was nicht unbedingt vorteilhaft ist. Darüber hinaus gibt es viele Stellen im Code, die bei Anfängern für Frust sorgen.
Beispiel: Bei der Eingabe mit der tastatur steht folgender Code:
--------------------------------------
SDL_GetKeyboardState(int* numkeys)
Uint8* m_keystate;
.....
.....
.....
m_keystates = SDL_GetKeyboardState(0);
--------------------------------------
Fehlt bei dem keystate das "s"? Falls ja, warum gibt es Fehlermeldungen, dass Uint8 kein int zugewiesen werden kann? Klammert man diesen Teil aus, kommt es zu Fehlermeldungen, die mit der Singleton-Klasse HandleEvents zutun haben. Schade, aber ich komme an dieser Stelle nicht weiter und viele Schritte sind nur etwas für Erfahrene Programmierer, die mit ihrem Wissen aber keine Probleme haben sollten ein Spiel zu entwickeln.
EDIT: Ich habe bei der HandleEvents Klasse nur die Tastatureingabe berücksichtig. Aber ich bekomme Fehlermeldungen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#ifndef __InputHandler_H__
#define __InputHandler_H__
#include <SDL.h>
class InputHandler
{
public:
~InputHandler() {}
static InputHandler* Instance()
{
if(s_pInstance == 0)
{
s_pInstance = new InputHandler();
}
return s_pInstance;
}
void update();
bool isKeyDown(SDL_Scancode key);
Uint8* m_keystates;
int SDL_GetKeyboardState(int* numkeys);
private:
InputHandler();
static InputHandler* s_pInstance;
};
typedef InputHandler TheInputHandler;
#endif /* defined(__InputHandler_H__) */
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include "InputHandler.h"
#include "Game.h"
bool InputHandler::isKeyDown(SDL_Scancode key)
{
if(m_keystates != 0)
{
if(m_keystates[key] == 1)
{
return true;
}
else
{
return false;
}
}
return false;
}
void InputHandler::update()
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
keystates =SDL_GetKeyboardState(0);
if(event.type == SDL_QUIT)
{
}
}
}
|
Im Buch steht bei Uint8* das m_keystates ohne s. Hab es hinzugefügt, dann kommt abewr die Fehlermeldung, dass Uint8 nicht int zugewiesen werden kann: keystates =SDL_GetKeyboardState(0);
Klammere ich diese Zeile aus, kommen Fehlermeldungen zum Thema "Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: __thiscall InputHandler::InputHandler(void)" (??0InputHandler@@AAE@XZ)" in Funktion ""public: static class InputHandler * __cdecl InputHandler::Instance(void)" (?Instance@InputHandler@@SAPAV1@XZ)". C:\Projekte\SDL-game\SDL-game\Game.obj SDL-game
"
Ich blicke da nicht durch ...