Форум программистов, компьютерный форум CyberForum.ru

Ошибка "String subscript out of range" - C++

Восстановить пароль Регистрация
 
Fr1kson
22 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 48
14.05.2014, 22:03     Ошибка "String subscript out of range" #1
C++ (Qt)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include <SFML/Graphics.hpp>
using namespace sf;
int ground = 400;
int i;
 
const int H = 12;
const int W = 40;
 
 
String TileMap[H] = {
 
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B                        BBBB          B",
"B                                B     B",
"BBB                              B     B",
"B              BB                BB    B",
"B              BB                      B",
"B    B         BB         BB           B",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
 
}; 
 
 
 
class PLAYER {
public:    
    float dx,dy; // скорость
    FloatRect rect; // rect - переменная в которй хранятся координаты Hero
    bool onGround; // переменная которая отвечает за местоположение Hero(на земле или нет)
    Sprite sprite;
    float currentFrame;// текущий кадр
    
    PLAYER(Texture &image)
    {
        sprite.setTexture(image); //загрузка картинки
        rect = FloatRect(0,0,50,50);
 
        dx=dy=0.1;
        currentFrame = 0;
    }
 
    void update(float time)
   {    
 
     rect.left += dx * time;    
     CollisionX(); //столкновение героя по X
 
     if (!onGround) dy=dy+0.0005*time; //если Hero не на земле то он падает с ускорением 0.0005
     rect.top += dy*time; //rect.top координата y
     onGround=false;
     CollisionY();
     if(rect.top > ground) {rect.top = ground ;dy=0; onGround = true;}
 
     currentFrame +=0.005*time;
     if(currentFrame > 9) currentFrame -=9;
 
     if (dx>0) sprite.setTextureRect(IntRect(50*int(currentFrame),200,50,50));
     if (dx<0) sprite.setTextureRect(IntRect(50*int(currentFrame)+50,200,-50,50));
 
     sprite.setPosition(rect.left, rect.top);
     dx=0;
   }
    void CollisionX()// столкновение героя по X
    {
        for(int j =rect.top/32; j<(rect.top+rect.height)/32; j++)
            for(int j =rect.left/32; j<(rect.left+rect.width)/32; j++)
            {
                if(TileMap[i][j]=='B') //если одна из плиток явл стенкой
                {
                    if(dx>0) rect.left = j*32 - rect.width;
                    if(dx<0) rect.left = j*32 + 32;
                }
            }
    }
    void CollisionY()// столкновение героя по Y
    {
        for(int j =rect.top/32; j<(rect.top+rect.height)/32; j++)
            for(int j =rect.left/32; j<(rect.left+rect.width)/32; j++)
            {
                if(TileMap[i][j]=='B') //если одна из плиток явл стенкой
                {
                    if(dx>0) {rect.top = i*32 - rect.height; dy=0; onGround= true;}
                    if(dx<0) {rect.top = i*32 + 32; dy=0;}
                }
            }
    }
};
int main()
{
    RenderWindow window( VideoMode(600, 450), "Platformer"); // создание окна размером 400х600 под названием Platformer
    
    Texture t; // загруза персонажа
    t.loadFromFile("hero.png");
 
    float currentFrame=0; // переменная в которой хранится номер текущего кадра
 
    PLAYER p(t);
 
    Clock clock;
 
    RectangleShape rectangle;
 
    while (window.isOpen())
    {
        float time = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        time = time/500;
 
        Event event; // открытие и закрытие окна
        while (window.pollEvent(event))
        {
            if(event.type==Event::Closed)
                window.close();
        }
        if(Keyboard::isKeyPressed(Keyboard::Left))
        {
            p.dx = -0.1;
        }
        if(Keyboard::isKeyPressed(Keyboard::Right))
        {
            p.dx = 0.1;
        }
        if(Keyboard::isKeyPressed(Keyboard::Up))
        {
            if(p.onGround) {p.dy=-0.35; p.onGround=false;} //если Hero на земле только тогда он может прыгнуть
        }
        p.update(time);
 
        window.clear(Color::White);
 
        for(int i=0; i<H; i++)
            for(int j=0; j<W; j++)
            {
                if(TileMap[i][j]=='B') rectangle.setFillColor(Color::Black);
                if(TileMap[i][j]==' ') continue;
 
                rectangle.setPosition(j*32,i*32) ;
                rectangle.setSize(Vector2f(32.0,32.0));
                window.draw(rectangle);
            }
 
        window.draw(p.sprite);
        window.display(); // вывод на экран
    }
    return 0;
}
вот собственно мой код.
Ошибка "String subscript out of range"
ошибки в основном с необявленной переменной i, но как только я ее объявляю выскакивает иная ошибка
ПОДСКАЖИТЕ ЧТО СДЕЛАТЬ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 22:03     Ошибка "String subscript out of range"
Посмотрите здесь:

string subscript out of range C++
Ошибка String subscript out of range C++
C++ string subscript out of range Завтра лабу нужно здать! не понимаю где ошибка
ошибка string subscript out of range C++
string subscript out of range C++
пожалуйста исправте ошибку string subscript out of range C++
C++ Тип string и subscript out of range
C++ String subscript out of range

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
14.05.2014, 22:55     Ошибка "String subscript out of range" #2
Отладчиком смотри на какой строке ошибка.
Yandex
Объявления
14.05.2014, 22:55     Ошибка "String subscript out of range"
Ответ Создать тему
Опции темы

Текущее время: 06:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru