Форум программистов, компьютерный форум, киберфорум
Наши страницы
SFML
Войти
Регистрация
Восстановить пароль
 
Dimoooon7519
0 / 0 / 1
Регистрация: 27.03.2018
Сообщений: 34
1

После запуска прекращается работа программы

31.10.2018, 23:54. Просмотров 233. Ответов 2
Метки нет (Все метки)

Всем привет, начал разработку игры, еще мало чего создал, но после добавления отклика на столкновение почти сразу после запуска exe виндовс прекращает ее работу, что посоветуете?
PS Библиотека установлена правильно, и все хорошо работало до тех пор, пока не попытался добавить столкновения
C++
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
151
152
153
154
#include <SFML/Graphics.hpp>
#include <iostream>
 
 using namespace sf;
 
 int ground = 140;
 
 bool gameOver;
 
 const int H = 7;
 const int W = 80;
 
 String TileMap[H] = {
 
  "                                                                               ",
  "                                                                               ",
  "                                                                               ",
  "                             VV             VVV                                ",
  "             V               VV             VVV                                ",
  "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
  "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
 
 };
 
 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);
         }
       }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2018, 23:54
Ответы с готовыми решениями:

Прекращается работа программы после ввода значений
Почему Windows завершает программу после того как после ввода цифр нажимаем кнопку Enter? Никак не...

Подскажите почему после ввода значений работа программы прекращается?
#include &lt;cstdio&gt; #include &lt;string.h&gt; struct Pribor { char name; struct Gabarity {...

Компилируется, но прекращается работа программы
Вообщем прога компилируется без ошибок, но когда я пытаюсь выполнить задание на добавление элемента...

С ошибкой прекращается работа программы
при запуске игры выдает ошибку так же при закрытии браузеров и не только как решить эту...

Работа программы прекращается... Программа не работает. Закрыть программу.
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace...

2
zss
Модератор
Эксперт С++
7939 / 7125 / 4449
Регистрация: 18.12.2011
Сообщений: 18,825
Завершенные тесты: 1
01.11.2018, 07:34 2
Цитата Сообщение от Dimoooon7519 Посмотреть сообщение
TileMap[i][j] == 'V'
Размеры TileMap H*W
Цитата Сообщение от Dimoooon7519 Посмотреть сообщение
i=rect.top/32; i<(rect.top+rect.height)/32;
Цитата Сообщение от Dimoooon7519 Посмотреть сообщение
j=rect.left/32; j<(rect.left+rect.width)/32;
Где гарантия того, что эти величины не превосходят H (W) ?
0
Dimoooon7519
0 / 0 / 1
Регистрация: 27.03.2018
Сообщений: 34
01.11.2018, 09:36  [ТС] 3
Можешь показать как это исправить, если не сложно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2018, 09:36

Работа программы не прекращается при удалении файлов из проекта
Приветствую Возникла такая проблема. Допустим, я вывожу какое-то изображении в окне браузера с...

Прекращается работа программы Game Application во время игры в Аллоды онлайн
Здравствуйте, Уважаемые. Во время игры Аллоды онлайн появляется сообщение &quot;Прекращена работа...

После запуска exe-файла выдаёт "Прекращена работа программы"
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main(){ cout &lt;&lt; &quot;Vvedite...


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

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

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