Всем привет, начал разработку игры, еще мало чего создал, но после добавления отклика на столкновение почти сразу после запуска 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);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
я новенький в изучении C++Что в этом коде может быть не так?
Есть API сервер со SpringBootКлиент отравляет POST-запрос c Json в теле
Всем приветОС XUbuntu 16
Давно уже увлекаюсь java в свободное время и решил начать изучать javafx(Буквально часа два назад)И я некоторые моменты не понял