Ich habe leider nichts hilfreiches gefunden zu meinen Problem.
Ich versuche mich am SDK (was hier glaube weniger die Rolle spielt) und habe anhand eines Tutorials Grafik auf den Bildschirm zu zaubern. Nun hab ich die Idee eines Break out Spiels. Wobei es mir jetzt erstmal darum geht möglichst einfach die Klötzchen auf den Bildschirm zu verteilen.
Ich kann die Steine zwar verteilen aber nur mit im Renderer vordefinierten Werten...
Ich poste am besten mal den wichtigen Code und erkläre währenddessen meine Probleme.
Die Stein.h
Die Stein.cpp
Das dient als Vorbereitung auf die Levelklasse.
Level.h
und Level.cpp
Es sei gesagt dass weitere case Fälle folgen, jedes Level ein Case. Über Sinn und Unsinn der per #include eingefügten Dateien sei mal dahin gestellt.
Soweit so gut. Das ganze ist erstmal so gedacht, dass ich dem Array von "Stein" verschiedene Werte zukommen lasse. Die Spalte, danach die Reihe und zuletzt die Sorte. Die oberen Werte werden nach ersten Erfolgen geändert.
Nun ist mein Problem dass ich die m_x und m_y Werte der Stein[] Instanzen nicht in folgende Funktion bekomme:
die Stelle im Kommentar soll zum Beispiel am ersten 100er angehangen werden (dieses i * 20 war nur zur Probe ob ich mehrere Steine erstellen kann und ja ich kann^^)
Genauer gesagt, kennt er die Instanz Stein[] nicht und ich wüsste spontan auch nicht, wie ich das Problem mit Zeiger lösen könnte.
Ich hoffe, ich habe alles mitgegeben für eine Lösung, ansonsten sagt an, was fehlt.
Zur CSprite.h bzw. CSprite.cpp sei gesagt, dass dort die die Prototypen von den SDL Surfaces lauern
Ich versuche mich am SDK (was hier glaube weniger die Rolle spielt) und habe anhand eines Tutorials Grafik auf den Bildschirm zu zaubern. Nun hab ich die Idee eines Break out Spiels. Wobei es mir jetzt erstmal darum geht möglichst einfach die Klötzchen auf den Bildschirm zu verteilen.
Ich kann die Steine zwar verteilen aber nur mit im Renderer vordefinierten Werten...
Ich poste am besten mal den wichtigen Code und erkläre währenddessen meine Probleme.
Die Stein.h
Code:
class C_Stein
{
int m_HP;
//Position des Steines
int m_X;
int m_Y;
//Aussehen des Steines durch Tileset
int m_X2;
int m_Y2;
int m_h;
int m_b;
//Wird gebraucht um die Art des Steines festzulegen
int m_Sorte;
public:
C_Stein();
void init(int X, int Y, int Sorte);
};
Die Stein.cpp
Code:
#include <iostream>
#include "CSprite.h"
#include "Stein.h"
C_Stein::C_Stein()
{
}
void C_Stein::init(int X, int Y, int Sorte)
{
//Ist die halbe Länge eines steines, um ohne viel Rechnerei Steine nebeneinander zu legen
X *= 25;
Y *= 20;
m_X = X;
m_Y = Y;
//Bestimmt über das Aussehen des Steines
switch (Sorte)
{
case 1:
{
m_X2 = 0;
m_Y2 = 0;
m_h = 50;
m_b = 25;
}break;
...
}
}
Das dient als Vorbereitung auf die Levelklasse.
Level.h
Code:
ifndef LEVEL_H_INCLUDED
#define LEVEL_H_INCLUDED
class C_Level
{
public:
void init();
};
#endif // LEVEL_H_INCLUDED
und Level.cpp
Code:
#include <iostream>
#include "Stein.h"
#include "Level.h"
void init(int L)
{
switch (L)
{
//Je nach Level werden die Anzahl der Steine und die Parameter geändert
case 1:
{
C_Stein Stein[10];
Stein[0].init(0, 0, 1);
Stein[1].init(0, 0, 1);
Stein[2].init(0, 0, 1);
Stein[3].init(0, 0, 1);
Stein[4].init(0, 0, 1);
Stein[5].init(0, 0, 1);
Stein[6].init(0, 0, 1);
Stein[7].init(0, 0, 1);
Stein[8].init(0, 0, 1);
Stein[9].init(0, 0, 1);
Stein[10].init(0, 0, 1);
}
}
}
Soweit so gut. Das ganze ist erstmal so gedacht, dass ich dem Array von "Stein" verschiedene Werte zukommen lasse. Die Spalte, danach die Reihe und zuletzt die Sorte. Die oberen Werte werden nach ersten Erfolgen geändert.
Nun ist mein Problem dass ich die m_x und m_y Werte der Stein[] Instanzen nicht in folgende Funktion bekomme:
Code:
#include "CApp.h"
#include "CSprite.h"
#include "Stein.h"
#include "Level.h"
void CApp::OnRender()
{
for (int i = 0; i <= 10; i++ )
{
CSurface::OnDraw(Surf_Display, Surf_Stein[i], 100, 100 + (i * 20), 50, 0, 50, 25);
//Stein[i]->m_X
}
SDL_Flip(Surf_Display);
}
die Stelle im Kommentar soll zum Beispiel am ersten 100er angehangen werden (dieses i * 20 war nur zur Probe ob ich mehrere Steine erstellen kann und ja ich kann^^)
Genauer gesagt, kennt er die Instanz Stein[] nicht und ich wüsste spontan auch nicht, wie ich das Problem mit Zeiger lösen könnte.
Ich hoffe, ich habe alles mitgegeben für eine Lösung, ansonsten sagt an, was fehlt.
Zur CSprite.h bzw. CSprite.cpp sei gesagt, dass dort die die Prototypen von den SDL Surfaces lauern