Allgemeiner Logikfehler sag ich nur
Device.DI_Init_general(hinst, lpDI);
Keyboard.Tastatur_Init(lpDI, lpDIGeraet, hwnd);
ich mein, lpDI und lpDIGeraet sind in class Geraeteeinstellungen drin. also
musst eine Instanz der Geraeteeinstellung erstellen z.b. so:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Instanzen erstellen
Geraeteeinstellung Tastatur;
Geraeteeinstellung Maus;
// ===========================
// Tastatur:
// benutzen:
Device.DI_Init_general(hinst, Tastatur.lpDI); // auf das lpID Objekt von Tastatur zugreifen
Keyboard.Tastatur_Init(Tastatur.lpDI, Tastatur.lpDIGeraet, hwnd); // auf das lpIDGeraet Objekt von Tastatur zugreifen
// ===========================
// Maus:
// benutzen:
Device.DI_Init_general(hinst, Maus.lpDI); // auf das lpID Objekt von Maus zugreifen
Mouse.Maus_Init(Maus.lpDI, Maus.lpDIGeraet, hwnd); // auf das lpIDGeraet Objekt von Maus zugreifen
|
Also ich mein, wozu haste denn sonst die Klasse "Geraeteeinstellung"?
p.s.:
Paar sachen zum Style:
1. Geraeteeinstellung: Ist ne klasse, sollte man mit dem Präfix C beginnen. z.B.: CGereateeinstellung (wegen übersichtlichkeit)
2. Ähme Englische Klassen, Funktions, Variablen und Markonamen kommen einfach besser in ner Englischen Programmiersprache
3. get und set funktionen sind bei klassen unverzichtbar! und nix mit Public variablen
4. MessageBox für Debugzwecke? Das kann böse böse enden, vorallem wenn der Backbuffer bei nem Error die messagebox noch übermalt oder das Programm abschmiert. Tipp: Textdateien
5. Includeguards wirken WUNDER! (hab die bei "NC_DI_Init.h" vermisst!) sowie ein Umfangreiches Dateidesign.
z.B. so:
|
Quellcode
|
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
// Datei: Types.h
// //////////////////////////////////////////////////////////////////////////////////
// Autor: Patrick Ullmann © Xarent Interactive
// Erstellt: 05.10.03
// Änderungen: 05.10.03 (Patrick) Datei erstellt
// 09.10.03 (David) PI Definition und Linker eingerichtet.
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung: Diverse Dateitypdefinitionen und Makros
#ifndef _TYPES_H_
#define _TYPES_H_
// I N C L U D E S //////////////////////////////////////////////////////////////////
// Bei Win32 muss die Windows.h includiert werden!
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
// Standardheader für das Programm
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <cmath>
#include <vector>
// SDL und OpenGL includieren
#include <SDL\SDL.h>
#include <GL\gl.h>
#include <GL\glu.h>
#include <GL\glaux.h>
// L I N K E R //////////////////////////////////////////////////////////////////////
// Windows kann diese Libs selbst linken, sonst muss man manuel dran.
#ifdef _WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glaux.lib")
#endif
// D E F I N I T I O N E N //////////////////////////////////////////////////////////
// Diese Dateitypen sind normalerweise in der windef.h drin, wir nehmen aber aus
// Portablen gründen unsere eigenen Definitionen, die denen aus
// der Windef.h entsprechen.
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned char BYTE;
typedef unsigned int UINT;
// PI ist sehr wichtig!!
const float PI = 3.1415926535897932f;
// Bei Win32 muss man die definition von main aufheben wegen SDL
#ifdef _WIN32
#undef main
#endif
// enum für verschiedene Filetypes
enum FILE_TYPE
{
FILE_UNKNOW = 0,
FILE_TGA = 1,
FILE_BMP = 2,
FILE_PNG = 3
};
// M A K R O S //////////////////////////////////////////////////////////////////////
// Manche Compiler kennen dieses Makro nicht, drum selbstdefinieren.
#ifndef __FUNCTION__
#define __FUNCTION ("unknow")
#endif
// Da ich ne Faule Sau bin benutz ich dieses Makro einfach mal :D
#ifndef LOG_PARAMS
#define LOG_PARAMS __FILE__, __LINE__, __FUNCTION__
#endif
#ifndef PROTOKOLL
#define PROTOKOLL CLog::getInstance()
#endif
#ifndef VIDEO
#define VIDEO CVideo::getInstance()
#endif
#ifndef KEYBOARD
#define KEYBOARD CKeyboardManager::getInstance()
#endif
#ifndef GAMEMANAGER
#define GAMEMANAGER CGameManager::getInstance()
#endif
#ifndef TEXTUREMANAGER
#define TEXTUREMANAGER CTextureManager::getInstance()
#endif
#ifndef ENTITYMANAGER
#define ENTITYMANAGER CEntityManager::getInstance()
#endif
// F U N K T I O N E N //////////////////////////////////////////////////////////////
// Noch keine
// S T R U K T U R E N //////////////////////////////////////////////////////////////
// Noch keine
#endif
|
Ist recht übersichtlich und Effektiv
Soetwas sollte man sich angewöhnen
Tschüüüs, :angel:
Patrick