Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

TigerClaw25

unregistriert

1

15.11.2013, 16:36

SDL Game Development

Hallo Zusammen,

hat jemand das oben genannte Buch schon gelesen/durchgearbeitet? Darin werden Spiele mit SDL 2.0 programmiert. Auch auf Menüs etc. wird eingegangen.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

15.11.2013, 16:40

Uh das habe ich ja noch gar nicht gesehen. Ich werde es mir jedenfalls sofort bestellen, kann dir dann ja in ein paar Wochen Feedback geben. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

TigerClaw25

unregistriert

3

15.11.2013, 16:42

Ich habe mal reingeschnuppert. Ich finde es mit etwas Erfahrung in C++ wirklich gut. Es wird ein komplettes Spiel programmiert, also mit Menü und Tilemaps. Darüber hinaus wird auf das Thema Vektoren eingegangen, also auch verkettet Listen, was viele Bücher hinsichtlich SDL und Spiele nicht bieten.

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

4

15.11.2013, 18:09

EDIT: Verlesen.
WIP Website: kevinheese.de

TigerClaw25

unregistriert

5

15.11.2013, 19:08

Finde es klasse, dass alle Themen wie Tiles und Menüs behandelt werden. Es ist sinnvoll als weiterführende Literatur zum Buch C++ für Spieleprogrammierer von Heiko Kaliste zu benutzen. Zudem werden hier einigen Usern Fragen zu den Themen erspart.

Apropos C++ für Spieleprogrammierer. Auf PCPointer.de wird das Buch derzeiut verlost: http://www.pcpointer.de/PC/news,id1903,p…_verlosung.html
Nur als kleiner Hinweis.

SpottyJones

Frischling

Beiträge: 11

Wohnort: Hessen

Beruf: Mediengestalter

  • Private Nachricht senden

6

22.11.2013, 16:31

Ich habe das Buch seid ein paar Tagen und es ist meine erste C++ Spieleprogrammierer Lektüre.

Muss dazu sagen, dass ich kein geübter Programmierer bin. Somit empfehle ich folgendes zum lernen mit diesem Buch:

Das Buch ist nicht für C++ Neueinsteiger geeignet!
Es sollte die API Referenz von SDL geöffnet sein um die benutzen Funktionen besser in Fleisch & Blut übergehen zu lassen.
Anfänger sollten VC benutzen. Wer sich aber mit Compilern, Toolchains und Co.KG auskennt, kann auch eine MinGW Umgebung nutzen.
Es sind Grafiken für das Tutorial Projekt enthalten. Dennoch schlage ich vor ein wenig Grafik Grundkenntnisse mit zu bringen. Denn im Buch wird das Spriting verdammt gut erklärt!

Ebenfalls sollte man sich Zeit nehmen, wer hier zu hektisch vorgeht. Vergisst was er gelernt hat und muss dann wieder viele Kapitel nach hinten um sein Problem zu lösen. :)

TigerClaw25

unregistriert

7

24.11.2013, 20:05

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 ...

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

24.11.2013, 21:00

Bist du sicher das du das so richtig übernommen hast? Im Header steht eine Deklaration von SDL_GetKeyboardState als Methode deiner Klasse mit Rückgabetyp int. Das überdeckt die eigentliche SDL Funktion, die richtigerweise Uint8* zurückgeben würde, und ist somit total fehl am Platz.

TigerClaw25

unregistriert

9

24.11.2013, 21:30

Der Datentyp war garnicht angegeben. Zweitens funktioniert es trotz auskommentieren nicht HandlerKlasse in meiner Player.cpp zu verwenden, siehe Fehlermeldung.

10

25.11.2013, 02:06

Mit SDL kenne ich micht nicht aus, aber offensichtlich ist SDL_GetKeyboardState eine Funktion, die von SDL bereitgestellt wird. Deswegen finde ich es merkwürdig, dass sie in deinem Code eine Methode der InputHandler-Klasse darstellt. Hast du dich da vielleicht im Buch verlesen oder steht das da tatsächlich so? Eigenartig finde ich nämlich auch, dass m_keystates public und nicht private ist.

Was die Fehlermeldung betrifft: Anscheinend ist der Konstruktor von InputHandler nicht implementiert. In deinem Code sehe ich nur dessen Deklaration in Zeile 27.

Werbeanzeige