Прекращена работа программы. Как вы ее исправили-бы

165
23 марта 2019, 03:40

Всем привет, начал разработку игры, еще мало чего создал, но после добавления отклика на столкновение почти сразу после запуска exe виндовс прекращает ее работу, помогите исправить? PS Библиотека установлена правильно, и все хорошо работало до тех пор, пока не попытался добавить столкновения

#include <SFML/Graphics.hpp>
#include <iostream>
 using namespace sf;
 int ground = 140;
 bool gameOver;
 const int H = 7;
 const int W = 80;
//тут массив с размерами H и W
class PLAYER {
public:
    float dx, dy;
    FloatRect rect;
    bool onGround;
    Sprite sprite;
    float currentFrame = 0;
    PLAYER(Texture &image)
    {
        sprite.setTexture(image);
        rect = FloatRect(40, -10, 49, 29);
        dx=dy=30;
        currentFrame = 0;
    }
void update(float time) {
   rect.left += dx*time;
 CollisionX();
   if(!onGround) dy=dy+0.0005*time;
   rect.top += dy*time;
   onGround = false;
 CollisionY();
   if(rect.top > ground) { rect.top = ground; dy = 20; onGround = true;}
   currentFrame += 0.005*time;
   if(currentFrame > 3) currentFrame -= 3;
   if(dx > 0) sprite.setTextureRect( IntRect(49*int(currentFrame),116,49, 29));
   sprite.setPosition(rect.left, rect.top);
   dx = 0;
}
void CollisionX()
{
    for(int i=rect.top/32; i<(rect.top+rect.height)/32; i++) {
      for(int j=rect.left/32; j<(rect.left+rect.width)/32; j++) {
            if(TileMap[i][j] == 'V') {
                if (dx>0) rect.left = j*32 - rect.width;
                if (dx<0) rect.left = j*32 + 32;
            }
      }
    }
}

void CollisionY()
{
    for(int i=rect.top/32; i<(rect.top+rect.height)/32; i++) {
      for(int j=rect.left/32; j<(rect.left+rect.width)/32; j++) {
            if(TileMap[i][j] == 'V') {
                //if (dy>0)  rect.top = i*32 -rect.height; dy = 0; onGround = true;
                //if (dy<0)  rect.top = i*32+32; dy = 0;
                gameOver = true;
            }
      }
    }
}
};
int main()   {
RenderWindow window(sf::VideoMode(800, 200), "Steve");
Texture hero;
  hero.loadFromFile("1raccon.png");
PLAYER p(hero);
Clock clock;
   RectangleShape rectangle;
  while (window.isOpen())
   {
  while(!gameOver) {
 float time = clock.getElapsedTime().asMicroseconds();
 clock.restart();
 time = time/700;
 sf::Event event;
  while (window.pollEvent(event))
  {
     if (event.type == sf::Event::Closed)
     window.close();
  }
  if (Keyboard::isKeyPressed(Keyboard::Right))
  {
     p.dx = 0.1;
  }
  if (Keyboard::isKeyPressed(Keyboard::Up))
  {
     if(p.onGround) { p.dy = -0.4; p.onGround = false;}
  }
  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] == 'G') rectangle.setFillColor(Color::Green);
        if(TileMap[i][j] == 'V') rectangle.setFillColor(Color::Blue);
        if(TileMap[i][j] == ' ') continue;
        rectangle.setPosition(j*32, i*32);
        rectangle.setSize(Vector2f(32.0, 32.0));
        window.draw(rectangle);
     }
   }
READ ALSO
C++ FillArray вызвано исключение [закрыт]

C++ FillArray вызвано исключение [закрыт]

я новенький в изучении C++Что в этом коде может быть не так?

149
Как ответить клиенту файлом на Post-запрос. SpringBoot REST API

Как ответить клиенту файлом на Post-запрос. SpringBoot REST API

Есть API сервер со SpringBootКлиент отравляет POST-запрос c Json в теле

132
Java FX привязка к переменной по Id

Java FX привязка к переменной по Id

Давно уже увлекаюсь java в свободное время и решил начать изучать javafx(Буквально часа два назад)И я некоторые моменты не понял

144