ich bin ziemlich neu in diesem Forum.
Erstmal möchte ich mich vorstellen ich heisse Matthias bin 17 jahre alt und gerade dabei
mir die Spieleprogrammierung zu lernen die ich später als Beruf ausüben möchte.
Ich stehe noch ziemlich am Anfang der 2D Programmierung und arbeite grade an einem kleinen
Projekt um mein frisch erworbenes Wissen zu festigen und auszubauen.
Und hier liegt das Problem ich komme einfach nicht weiter!
Ich bin in meinem Projekt jetzt soweit das ich ein Sprite rendern kann...theorethisch,
aber praktisch will das einfach nicht klappen!
ich habe mir einen header namens Render.h gemacht der das Rendern von den einzelnen Sprites
übernimmt indem ich die Sprite-Klassen wie z.B die Figur die man spielt von der klasse CRender erben lasse.
Aber irgentwas klappt da nicht!
Hier mal der Code vom Header Render.h:
Code: Alles auswählen
#ifndef RENDER_H
#define RENDER_H
#include <SDL.h>
class CRender
{
protected:
SDL_Surface *m_pScreen;
SDL_Surface *m_pImage;
SDL_Rect Pos;
SDL_Rect source;
int cur_frame = 1;
public:
void Render();
void Render(int framewidth, int frameheigth, int numframes);
~CRender(){}
};
void CRender::Render()
{
SDL_BlitSurface(m_pImage, &source, m_pScreen, &Pos);
}
void CRender::Render(int framewidth, int frameheigth, int numframes)
{
int numof_rows = frameheigth/source.h;
int row = numof_rows/(numframes/cur_frame);
source.x += source.w * (cur_frame-1);
source.y = frameheigth * row;
SDL_BlitSurface(m_pImage, &source, m_pScreen, &Pos);
cur_frame++;
if (cur_frame > numframes)
{
cur_frame = 1;
}
}
#endif // RENDER_H
Code: Alles auswählen
#ifndef CMAN_H
#define CMAN_H
#include <SDL.h>
#include "Render.h"
class CMan : public CRender
{
public:
CMan();
~CMan();
void Man_Move(Uint8 *keystate);
};
CMan::CMan()
{
m_pImage = SDL_LoadBMP("Man.bmp");
Pos.x = 0;
Pos.y = 150;
source.x = 0;
source.y = 0;
source.h = 64;
source.w = 64;
cur_frame = 0;
}
CMan::~CMan()
{
}
void CMan::Man_Move(Uint8 *keystate)
{
if (keystate[SDLK_w] && Pos.y > 0)
{
Pos.y -=1;
}
if (keystate[SDLK_a] && Pos.x > 0)
{
Pos.x -=1;
}
if (keystate[SDLK_d] && Pos.x < 1000)
{
Pos.x +=1;
}
if (keystate[SDLK_s] && Pos.y < 800)
{
Pos.y +=1;
}
}
#endif // MAN_H
Code: Alles auswählen
#include <SDL.h>
#include <fstream>
#include "CMan.h"
#include "CStone.h"
#include "CFramework.h"
using namespace std;
int main (int args, char *argv[])
{
g_pFramework -> Init(1024, 600, 32, false);
bool run = true;
CMan Man;
SDL_WM_SetCaption("Game project", NULL);
while (run)
{
Man.Render(256, 64, 4);
g_pFramework -> Flip();
g_pFramework -> Clear();
}
g_pFramework -> Quit();
return 0;
}
und die Mechanik des Spiels kommt später.
Jedoch habe ich versucht ob ich manche Abläufe schon hinbekomme und wollte die ansätze nicht löschen
somit ist hier und da vielleicht etwas nutzloses drin.
Ich hoffe ihr könnt mir weiter Helfen denn ich komme einfach nicht vorran.
Danke schonmal :)