Hallo liebe Community,
ich programmiere jetzt schon ne Weile an meinem kleinen Spiel rum, aber bekomme jetzt andauernd einen Error:
|
C-/C++-Quelltext
|
1
2
3
4
|
Debug Assertion Failed!
[...]
Expression: vector subscript out of range
[...]
|
Ich bin jetzt kurz vorm Verzweifeln
Das irgendein Problem mit dem Vektor vorliegt, dessen bin ich mir bewusst ... aber ich finde den Fehler einfach nicht.
Hier der Quellcode (nur die main.cpp; andere Dateien kann ich bei Bedarf gerne auch nachreichen):
|
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
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
|
// TheBindingOfZyklop.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <SFML/Graphics.hpp> //Einbinden der SFML Lybary
#include "Schablone.hpp"
#include "player.hpp"
#include "projektil.hpp"
using namespace std;
#include <iostream>
int main()
{
//Fenster erstellen mit x=800, y=600
sf::RenderWindow window(sf::VideoMode(800, 600), "TBoZ");
//Spielertextur laden
sf::Texture texturePlayer;
texturePlayer.loadFromFile("TexturePlayer.png");
sf::Sprite spritePlayer(texturePlayer);
//spritePlayer.setPosition(window.getSize().x / 2, window.getSize().y / 2); //Sprite in der Mitte des Bildschirms platzieren
//spritePlayer.setTextureRect(sf::IntRect(17 * 32, 0, 32, 32));
//Spieler erstellen
class CPlayer Spieler1;
Spieler1.sprite.setTexture(texturePlayer);
//Projektil Vektor Array erstellen
vector<CProjektil>::const_iterator iter;
vector<CProjektil> projektilArray;
class CProjektil Projektil1; //Projektil erstellen
//Main Loop!
do
{
window.clear(); //Fenster resetten
window.draw(Spieler1.sprite); //Spieler "spawnen"
//Update Player
Spieler1.updatePlayer();
Spieler1.updateMovement();
Spieler1.updateAttack();
//Projektil abfeuern
if ((sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) )
{
Projektil1.rect.setPosition(Spieler1.rect.getPosition()); //Projektil bei Spieler spawnen
Projektil1.Richtung = Spieler1.Richtung;
projektilArray.push_back(Projektil1); //Projektil in Array verfrachten
}
//Projektile anzeigen
int counter = 0;
for (iter = projektilArray.begin(); iter != projektilArray.end(); iter++);
{
projektilArray[counter].updateProjektil();
window.draw(projektilArray[counter].rect);
counter++;
}
window.display();
} while (!sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)); //ESC beendet Programm
return 0;
}
|
Ich denke der Fehler kann auf die Zeilen 35 - 38, bzw. 55 - 69 eingegrenzt werden.
Das Problem liegt mit hoher Wahrscheinlichkeit in der for-Schleife oder?
MfG,
Blaufrosch
PS: Ich arbeite nach einem YT-Tutorial. Dort scheint alles zu funktionieren
Habe noch nicht so die Erfahrungen mit C++ und SFML
YT-Video