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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fr1kson
22 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 48
#1

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

14.05.2014, 22:03. Просмотров 555. Ответов 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, но как только я ее объявляю выскакивает иная ошибка
ПОДСКАЖИТЕ ЧТО СДЕЛАТЬ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка "String subscript out of range" (C++):

Ошибка при быстрой сортировке файла: "string subscript out of range" - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

Ошибка: String subscript out of range - C++
Expression: String subscript out of range Консольное приложение. Программа должна перерабатывать построчно текстовый файл с кодом и...

Ошибка: string subscript out of range - C++
При запуске выдает ошибку &quot;string subscript out of range&quot;. Подскажите, в чем проблема. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Ошибка String subscript out of range - C++
Здравствуйте. Написал на Dev C++ 4.9.9.2 программу которая открывает фаил и кладет все в буфер. Содержание файла: gehen v test*kommen v...

Ошибка string subscript out of range - C++
Здраствуйте создал библиотеку, при подключение библиотеки и запуска программи все работает коректно(данние принимаются, обрабативаются,...

Ошибка expression string subscript out of range - C++
Ребят, уже всю голову разбил... не пойму где здесь может быть ошибка, что я не так сделал???? почему то как обычную строку выводит на...

1
nmcf
5353 / 4673 / 1563
Регистрация: 14.04.2014
Сообщений: 18,616
14.05.2014, 22:55 #2
Отладчиком смотри на какой строке ошибка.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2014, 22:55
Привет! Вот еще темы с ответами:

Генератор Кроссвордов выдает ошибку "Vector subscript out of range" - C++
Написал программу для курсовой, смысл в том что программа создает кроссворд из заданных слов в заданной сетке, однако при запуске выдают...

String subscript out of range - C++
При запуске выдает ошибку &quot;string subscript out of range&quot;. Подскажите, в чем проблема. #include &lt;iostream&gt; #include &lt;string&gt; ...

String subscript out of range - C++
Разбираю пример, который дала препод в примерах к лекциям..Пример по коду Виженера.. Пару раз запустился-результат выводился.Исправила...

Тип string и subscript out of range - C++
Доброго времени дня. Такая проблема. Обращаюсь к отдельному элементу массива: #include &lt;iostream&gt; #include &lt;string&gt; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru