Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485

Создание пули без создания её обьекта - Новый способ

10.07.2018, 21:43. Показов 2598. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короче начал начал расписывать ее как для обьекта, но функцию
с библиотекой создал для вектора и совсем запутался.
Помогите кто врубается как можно запехать
ее в вектор - без запихивания ее в массив ?

Так, это

==== bullet.h ======
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public:
    float X, Y;
    Bullet(sf::IntRect bulletRect, sf::Texture bulletTexture);
    ~Bullet();
 
    void create(float bulletXPostition, float bulletYPosition);
    bool update(float Time, sf::RenderWindow &window);
    void render(sf::RenderWindow &window);
 
 
private:
    sf::IntRect bullet;
    
    sf::Sprite bullet;
 
    sf::Vector2f bullets;
 
};
 
 
#endif
А это схема ===== main.cpp ========

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
//============  К л а с с - п у л и ======================================
 
class Bullet
{
public:
    float x, t, dx, dy, w, h,X,Y;
    FloatRect rect;
    Sprite sprite;
    float currentFrame;
    bool life;
 
    
    Bullet::Bullet(sf::IntRect bulletRect, sf::Texture bulletTexture);
    
    {
        dx = 0.3;
        vector<Bullet> bullets;
    }
 
 
 
 
};
 
//==========================================================
 
class PLAYER {
 
public:
 
    float dx, dy;
    FloatRect rect;
    bool onGround;
    Sprite sprite;
    float currentFrame;
    std::map<std::string, bool > key;
 
    bool storonap;
    std::vector<Bullet*> bullets;
    std::list<Bullet*>::iterator it;
 
    int money = 0;
    //int health; //Обьявили переменные для денег и здоровья
    //bool life; // Жив или мертв
 
 
    PLAYER(Texture &image)
    {
 
    
 
        
        sprite.setTexture(image);
 
        rect = FloatRect(50, 50, 50, 50);
 
 
dx = dy = 0.1;
        currentFrame = 0;
 
 
        
 
    }
 
 
    void update(float time)
    {
 
        rect.left += dx * time;
        Collision(0);
 
        if (!onGround) dy = dy + 0.0005*time;
        rect.top += dy*time;
        onGround = false;
        Collision(1);
 
 
        currentFrame += 0.008*time;
        if (currentFrame > 6) currentFrame -= 6;
 
        if (dx<0) sprite.setTextureRect(IntRect(50 * int(currentFrame) + 50, 0, -50, 50));
        if (dx<0) storonap = true;
 
        if (dx>0) sprite.setTextureRect(IntRect(50 * int(currentFrame), 0, 50, 50));
        if (dx>0) storonap = false;
        sprite.setPosition(rect.left - offsetX, rect.top - offsetY);
 
        dx = 0;
 
        //if (stay == true){ sprite.setTextureRect(IntRect(50 * int(currentFrame), 100, 50, 50)); }
 
        //================   Скроллинг   ===========================================
        if (rect.left>300) offsetX = rect.left - 300;  //Скроллинг
        offsetY = rect.top - 300;
        //==========================================================================
    }
    ~PLAYER() {}
};
 
{
 
    sf::RenderWindow window;
    sf::VideoMode vidMode;
 
    vidMode.width = 1200;
    vidMode.height = 600;
 
 
 
    window.create(vidMode, "------------------START GAME -----------");
 
    
 
 
    // ---------   Player -----------
    Texture t;
 
    t.loadFromFile("DATA/IMG/MAN.png");
 
    float currentFrame = 0;
 
    PLAYER p(t);
    
    //--------
 
 
 
    Texture bulletTexture;
    bulletTexture.loadFromFile("DATA/IMG/bullet.png");
    Image BulletImage;//изображение для пули
    BulletImage.loadFromFile("DATA/IMG/bullet.png");//загрузили картинку в объект изображения
 
 
.................
 
//тут управление
 
        p.update(time);
        enemy.update(time);  //Апдейды игрока и врага
                window.draw(bullet);
 
 
        window.clear(Color::Black);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2018, 21:43
Ответы с готовыми решениями:

Создание объекта без создания класса
Например мне нужно создать объект, который имеет параметр String, параметр Bool и параметр Int. Из этих объектов мне надо создать список....

Достать ИД после создания обьекта
Как достать ИД обьекта если есть все другие его дание но они не уникальние? У меня есть Форма с текстбоксами и т.д. С етой формочки...

Создание пули
Здравствуйте! Подскажите плиз как реализовывается &quot;стрельба&quot;? Кто может разъяснить данный момент, а то что то я вообще запутался(( ...

21
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
10.07.2018, 22:27
Цитата Сообщение от mrden777 Посмотреть сообщение
Помогите кто врубается как можно запехать
ее в вектор - без запихивания ее в массив ?
что нужно в вектор добавить?
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
11.07.2018, 00:09  [ТС]
Ну хорошо, есть предельно простой код стрельбы, который запихали в вектор, но с ним
возникают проблемы, когда я начинаю применять скроллинг на карту, уже даже со стрельбой на любой угол разобрался
Конечно было бы идеально контролить каждую пулю в отдельности, в учебнике видел туториал
реализации через Array массив типа дали [100] в обойму и пошли вычитать, но код был по весу даже больше,
чем это делать через обьект
И снова вернулся к элементарному работающему массиву
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
#include<iostream>
#include"SFML\Graphics.hpp"
#include"SFML\Window.hpp"
#include"SFML\System.hpp"
#include<math.h>
#include<cstdlib>
#include<vector>
 
using namespace
sf;
 
class Bullet
{
public:
    Sprite sbullet;
 
    Bullet(Texture *texture, Vector2f pos)
    {
        this->sbullet.setTexture(*texture);
        this->sbullet.setScale(2.f, 2.f);
        this->sbullet.setPosition(pos);
    }
 
    ~Bullet(){}
};
 
class Player
{
public:
    Sprite shape;
    Texture *texture;
 
    
 
    std::vector<Bullet> bullets;
 
    Player(Texture *texture)
    {
        
 
        this->texture = texture;
        this->shape.setTexture(*texture);
 
        this->shape.setScale(2.f, 2.f);
    }
 
    //  ~Player() {}
 
};
//==================================================
 
int main()
{
    srand(time(NULL));
 
    RenderWindow window(VideoMode(800, 600), "Space war", Style::Default);
    window.setFramerateLimit(60);
 
    
 
    //Init textures
    Texture playerTex;
    playerTex.loadFromFile("DATA/IMG/MAN.png");
 
 
    Texture bulletTex;
    bulletTex.loadFromFile("DATA/IMG/VILKA.png");
 
    //Player init
    
    Player player(&playerTex);
    int shootTimer = 20;
    
 
    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        if (player.HP > 0)
        {
            //Player
            if (Keyboard::isKeyPressed(Keyboard::Up))
                player.shape.move(0.f, -10.f);
            if (Keyboard::isKeyPressed(Keyboard::Left))
                player.shape.move(-10.f, 0.f);
            if (Keyboard::isKeyPressed(Keyboard::Down))
                player.shape.move(0.f, 10.f);
            if (Keyboard::isKeyPressed(Keyboard::Right))
                player.shape.move(10.f, 0.f);
 
 
            //Update Controls
            if (shootTimer < 15)
                shootTimer++;
 
            if (Keyboard::isKeyPressed(Keyboard::Space) && shootTimer >= 15) //Shooting
            {
                player.bullets.push_back(Bullet(&bulletTex, player.shape.getPosition()));
                shootTimer = 0; //reset timer
            }
 
            //Bullets
            for (size_t i = 0; i < player.bullets.size(); i++)
            {
                //Move
                player.bullets[i].sbullet.move(20.f, 0.f); // тут можно задать скорость и угол полёта пули
 
                //Out of window bounds Выход пули за окно
                if (player.bullets[i].sbullet.getPosition().x > window.getSize().x)
                {
                    player.bullets.erase(player.bullets.begin() + i);
                    break;
                }
 
            }
        }
 
                //UI Update
 
 
                //Draw ===================================================================== DRAW
                window.clear();
 
                //player
                window.draw(player.shape);
 
                //Bullets
                for (size_t i = 0; i < player.bullets.size(); i++)
                {
                    window.draw(player.bullets[i].sbullet);
                }
        
        window.display();
    }
 
    return 0;
}
Добавлено через 36 минут
Короче вот у нас есть созданная пуля в теле среляющего обьекта ( Игрока )

C++
1
2
player.bullets.push_back(Bullet(&bulletTex, player.shape.getPosition()));
                shootTimer = 0; //reset timer // МОМЕНТ СОЗДАНИЯ ПУЛИ
Как отвязать ее от координат игрока после создания ?
чтобы он имела свою траекторию полета например x+=dx*time;
почему запись создания как для обьекта не катит ? Тут же просто текстура вместо обьекта, а так
все то же самое
C++
1
player.bullets.push_back(new Bullet(&bulletTex, player.shape.getPosition()));
Добавлено через 15 минут
Нужно как то в функции update задать другую позицию пули, например
C++
1
sbullet.setPosition(x+w/2, y+h/2);//задаем новую позицию пули с независимыми координатами от player :D
Добавлено через 6 минут
Придется получать координаты окна и к ним привязывать да ?

Добавлено через 36 секунд
Я боюсь тогда что у меня опять из за этого скроллинг накроется
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
11.07.2018, 04:44
ты же по этому уроку делал?
http://kychka-pc.ru/sfml/urok-... -puli.html
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
11.07.2018, 15:48  [ТС]
Нет не по этому, у тринли хороший пример по обьектному способу https://www.youtube.com/watch?v=T6o5OlgsCew
Есть гемморой с файлами анимаций они оба используют Тайл мап едитор и SpriteDecomposer - обе программы конечно что то рисуют, но обе глючные - проще самому делать редактор для своих карт. Если в игру поставить другую кату, или карту с другим размером тайлов все перестанет работать . А то что там по умолчанию 32*32 это галименькое качество. Норма начинается от 50*50

Добавлено через 5 часов 37 минут
Впринципе если всех врагов, пули и игрока распихивать по векторам, а не обьектам это же существенно облегчит код да ?
Сократит написание сразу трёх библиотек. Вот нашел такой рабочий код вообще без классов игрока и врагов , но по идее их все равно придется создать
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
155
156
157
158
159
#include<iostream>
#include"SFML\Graphics.hpp"
#include"SFML\Window.hpp"
#include"SFML\System.hpp"
#include<math.h>
#include<vector>
#include<cstdlib>
 
  ///LENGTH OF VECTOR: |V| = sqrt(V.x^2 + V.y^2)
  //NORMALIZE VECTOR: U = V / |V|
 
   using namespace sf;
 
      class Bullet
       {
      public:
          CircleShape shape;
         Vector2f currVelocity;
        float maxSpeed;
 
         Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
        {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
          }
       };
 
        int main()
       {
          srand(time(NULL));
 
           RenderWindow window(VideoMode(800, 600), "360 Shooter!", Style::Default);
           window.setFramerateLimit(60);
 
             //Player
         CircleShape player(25.f);
         player.setFillColor(Color::White);
        player.setPointCount(3);
        player.setOrigin(25.f, 25.f);
 
          //Bullets
            Bullet b1;
            std::vector<Bullet> bullets;
 
           //Enemy
            RectangleShape enemy;
          enemy.setFillColor(Color::Magenta);
           enemy.setSize(Vector2f(50.f, 50.f));
             int spawnCounter = 20;
 
           std::vector<RectangleShape> enemies;
 
           //Vectors
    Vector2f playerCenter;
      Vector2f mousePosWindow;
      Vector2f aimDir;
      Vector2f aimDirNorm;
 
      while (window.isOpen())
      {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        //Update
        //Vectors
        playerCenter = Vector2f(player.getPosition());
        mousePosWindow = Vector2f(Mouse::getPosition(window));
        aimDir = mousePosWindow - playerCenter;
        aimDirNorm = aimDir / sqrt(pow(aimDir.x, 2) + pow(aimDir.y, 2));
 
        float PI = 3.14159265f;
        float deg = atan2(aimDirNorm.y, aimDirNorm.x) * 180 / PI;
        player.setRotation(deg + 90);
 
        //Set Final Rotation of Ship
        std::cout << deg << "\n";
 
        //Player control
        if (Keyboard::isKeyPressed(Keyboard::Left))
            player.move(-10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Right))
            player.move(10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Up))
            player.move(0.f, -10.f);
        if (Keyboard::isKeyPressed(Keyboard::Down))
            player.move(0.f, 10.f);
 
        //ВРАГИ
        if (spawnCounter < 20)
            spawnCounter++;
 
        if(spawnCounter >= 20 && enemies.size() < 50)
        {
            enemy.setPosition(Vector2f(rand() % window.getSize().x, rand() % window.getSize().x));
            enemies.push_back(RectangleShape(enemy));
 
            spawnCounter = 0;
        }
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(playerCenter);
            b1.currVelocity = aimDirNorm * b1.maxSpeed;
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            bullets[i].shape.move(bullets[i].currVelocity);
 
            //Out of bounds
            if (bullets[i].shape.getPosition().x < 0 || bullets[i].shape.getPosition().x > window.getSize().x
                || bullets[i].shape.getPosition().y < 0 || bullets[i].shape.getPosition().y > window.getSize().y)
            {
                bullets.erase(bullets.begin() + i);
                
            }
            else
            {
                //Enemy collision
                for (size_t k = 0; k < enemies.size(); k++)
                {
                    if (bullets[i].shape.getGlobalBounds().intersects(enemies[k].getGlobalBounds()))
                    {
                        bullets.erase(bullets.begin() + i);
                        enemies.erase(enemies.begin() + k);
                        break;
                    }
                }
            }
        }
 
        //=============  О т р и с о в к а =====================
        window.clear();
 
        for (size_t i = 0; i < enemies.size(); i++)
        {
            window.draw(enemies[i]);
        }
 
        window.draw(player);
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
        window.display();
      }
 
        return 0;
        }
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
11.07.2018, 20:16
Цитата Сообщение от mrden777 Посмотреть сообщение
Нет не по этому, у тринли хороший пример по обьектному способу
хотел скинуть, тоже когда то по нему делал платформер типа марио
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
11.07.2018, 22:07  [ТС]
Уничтожение прыжком это тупо, Пашка Кучка прав, что уничтожение стрельбой самый популярный метод
Хотя рубить или стучать большим молотком по голове - тоже неплохо

Добавлено через 6 минут
Я не нашел альтернативных редакторов анимаций XML кроме этой бадяги, которую они советовали
Это не есть гууд
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 01:45  [ТС]
Версия _008
Почти что выстрелил
с переводом в координаты
Название: 777.png
Просмотров: 55

Размер: 9.4 Кб Название: 888.png
Просмотров: 55

Размер: 7.8 Кб
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
#include <SFML/Graphics.hpp>
#include <time.h>
#include <windows.h>                     
#include <sstream>
#include <iostream>
 
using namespace sf;
int x2 = 100, y2 = 100;
 
 
 
class Bullet
{
public:
    CircleShape shape;
    Vector2f currVelocity;
    float maxSpeed;
 
    Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
    {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
    }
};
 
 
int main()
{
    sf::RenderWindow window(sf::VideoMode(455, 455), "Drag and Drop");
 
 
 
 
    Texture t1, t2;
 
    t1.loadFromFile("c:/111/777.png");
    t2.loadFromFile("c:/111/888.png");
    Sprite s(t1);  // создали функцию спрайта
    Sprite s2(t2);  // создали функцию спрайта
 
    s2.setPosition(sf::Vector2f(x2, y2));//занесли в вектор с чем сталкиваемся
 
    //Bullets
    Bullet b1;
    std::vector<Bullet> bullets;
 
 
    bool isMove = false;
    float dx = 0, dy = 0;
 
 
    //_____________________________________________________
    while (window.isOpen())
 
 
    {
 
        Vector2i pos = Mouse::getPosition(window); // зарезервировали мышь в векторе получая ее координаты
 
        Event e;
        while (window.pollEvent(e))
 
        {
 
 
            //  if (s.getGlobalBounds().intersects(s2.getGlobalBounds())){ std::cout << "COLLiSION \n\n"; system("cls"); }
 
            if (e.type == Event::Closed)
                window.close();
 
            ////////////////  Drag and Drop  //////////////////////
 
            if (e.type == Event::MouseButtonPressed){     // проверка если мышь нажата
                if (e.key.code == Mouse::Left)                  // А конкретно левая
                    //if (s.getGlobalBounds().intersects(s2.getGlobalBounds())){ std::cout << "COLLiSION \n\n" ; }
 
 
                    isMove = true;
                dx = pos.x - s.getPosition().x;
                dy = pos.y - s.getPosition().y;
            }
 
            //__ проверка отжатия
 
            if (e.type == Event::MouseButtonReleased)
            if (e.key.code == Mouse::Left)
                isMove = false;
 
 
 
        }
 
        //Нормаль движения
 
        s2.setColor(sf::Color(225, 225, 225, 200)); //если нет столкновения возвращаем цвет
 
        if (isMove) s.setPosition(pos.x - dx, pos.y - dy);
 
        if (s.getGlobalBounds().intersects(s2.getGlobalBounds())){ s2.setColor(sf::Color(155, 155, 255, 118)); }//При столкновении окрашиваем
 
        //////////////////
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(pos.x - dx, pos.y - dy);
            
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
 
 
        //////////////draw///////////////
 
        //window.clear();
        window.draw(b1.shape);
        window.draw(s2);
        window.draw(s);
        window.display();
        window.clear();
    }
 
    return 0;
}
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 11:53  [ТС]
Версия 009 Почему не стреляет где ошибка ?
Название: 777.png
Просмотров: 55

Размер: 9.4 Кб

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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <SFML/Graphics.hpp>
#include <time.h>
#include <windows.h>                     
#include <sstream>
#include <iostream>
 
using namespace sf;
 
float x = 200, y = 200;
 
//================================================
class Bullet
{
public:
    CircleShape shape;
    Vector2f currVelocity;
    float maxSpeed;
 
    Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
    {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
    }
};
 
 
//=====================================
 
int main()
{
    sf::RenderWindow window(sf::VideoMode(455, 455), "Drag and Drop");
 
 
    sf::Font font;
    font.loadFromFile("C:/Users/UZER/Desktop/DATA/Deneon.ttf");
 
    Texture t1, t2;
 
    t1.loadFromFile("c:/111/777.png");
    t2.loadFromFile("c:/111/777.png");
    Sprite s1(t1);  // создали функцию спрайта
    Sprite s2(t2);  // создали функцию спрайта
 
    s1.setPosition(sf::Vector2f(x, y));//занесли в вектор с чем сталкиваемся
    s2.setPosition(sf::Vector2f(x-50,y-55));//занесли в вектор с чем сталкиваемся
 
 
 
    //Bullets
    Bullet b1;
    std::vector<Bullet> bullets;
 
 
 
 
 
    //Enemy
    
 
 
    std::vector<RectangleShape> enemies;
 
    //Vectors
    Vector2f s1Center;//player
    Vector2f mousePosWindow;
    Vector2f aimDir;
    Vector2f aimDirNorm;
 
 
 
    //_____________________________________________________
    while (window.isOpen())
 
 
    {
 
        Vector2i pos = Mouse::getPosition(window); // зарезервировали мышь в векторе получая ее координаты
 
        Event e;
        while (window.pollEvent(e))
 
        {
 
 
 
        
 
 
            //  if (s.getGlobalBounds().intersects(s2.getGlobalBounds())){ std::cout << "COLLiSION \n\n"; system("cls"); }
 
            if (e.type == Event::Closed)
                window.close();
 
            ///////////////
 
            //Update
            //Vectors
            s1Center = Vector2f(s1.getPosition());
            mousePosWindow = Vector2f(Mouse::getPosition(window));
            aimDir = mousePosWindow - s1Center;
            aimDirNorm = aimDir / sqrt(pow(aimDir.x, 2) + pow(aimDir.y, 2));
 
            float PI = 3.14159265f;
            float deg = atan2(aimDirNorm.y, aimDirNorm.x) * 180 / PI;
            s1.setRotation(deg + 90);
 
            //====================================================================
 
            
 
 
 
 
            ////////////////  Drag and Drop  //////////////////////
            //Player
            if (Keyboard::isKeyPressed(Keyboard::Up))
                s1.move(0, -5);
            if (Keyboard::isKeyPressed(Keyboard::Left))
                s1.move(-5, 0);
            if (Keyboard::isKeyPressed(Keyboard::Down))
                s1.move(0, 5);
            if (Keyboard::isKeyPressed(Keyboard::Right))
                s1.move(5, 0);
        
 
 
        }
 
        //Нормаль движения
 
        s2.setColor(sf::Color(225, 225, 225, 200)); //если нет столкновения возвращаем цвет
 
    
 
        if (s1.getGlobalBounds().intersects(s2.getGlobalBounds())){ s2.setColor(sf::Color(155, 155, 255, 118)); }//При столкновении окрашиваем
 
 
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(s1Center);
            b1.currVelocity = aimDirNorm * b1.maxSpeed;
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            bullets[i].shape.move(bullets[i].currVelocity);
 
            //Out of bounds
            if (bullets[i].shape.getPosition().x < 0 || bullets[i].shape.getPosition().x > window.getSize().x
                || bullets[i].shape.getPosition().y < 0 || bullets[i].shape.getPosition().y > window.getSize().y)
            {
                bullets.erase(bullets.begin() + i);
 
            }
 
        }
 
        //=============  О т р и с о в к а =====================
 
        window.clear();
 
        
        window.draw(s1);
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
        //////////////draw///////////////
 
        window.clear();
 
        window.draw(s2);
        window.draw(s1);
        window.display();
    }
 
    return 0;
}
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 14:41  [ТС]
Ну осталось только еминема соеденить с пулей

ВЕРСИЯ _010
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
#include<iostream>
#include"SFML\Graphics.hpp"
#include"SFML\Window.hpp"
#include"SFML\System.hpp"
#include<math.h>
#include<vector>
#include<cstdlib>
 
///LENGTH OF VECTOR: |V| = sqrt(V.x^2 + V.y^2)
//NORMALIZE VECTOR: U = V / |V|
 
using namespace sf;
 
class Bullet
{
public:
    CircleShape shape;
    Vector2f currVelocity;
    float maxSpeed;
 
    Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
    {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
    }
};
 
int main()
{
    srand(time(NULL));
 
    RenderWindow window(VideoMode(800, 600), "360 Shooter!", Style::Default);
    window.setFramerateLimit(60);
 
    
    
 
    Texture t1, t2;
 
    t1.loadFromFile("c:/111/777.png");
    t2.loadFromFile("c:/111/888.png");
    Sprite player(t1);  // создали функцию спрайта
    player.setPosition(220, 220);
    
 
    //Bullets
    Bullet b1;
    std::vector<Bullet> bullets;
 
    //Enemy
//  RectangleShape enemy;
        
 
    Sprite enemy(t2);  // создали функцию спрайта
    enemy.setPosition(Vector2f(300, 300));
    int spawnCounter = 20;
 
    std::vector<RectangleShape> enemies;
 
    //Vectors
    Vector2f playerCenter;
    Vector2f mousePosWindow;
    Vector2f aimDir;
    Vector2f aimDirNorm;
 
    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        //Update
        //Vectors
        playerCenter = Vector2f(player.getPosition());
        mousePosWindow = Vector2f(Mouse::getPosition(window));
        aimDir = mousePosWindow - playerCenter;
        aimDirNorm = aimDir / sqrt(pow(aimDir.x, 2) + pow(aimDir.y, 2));
 
        float PI = 3.14159265f;
        float deg = atan2(aimDirNorm.y, aimDirNorm.x) * 180 / PI;
        player.setRotation(deg + 90);
 
        //Set Final Rotation of Ship
        std::cout << deg << "\n";
 
        //Player control
        if (Keyboard::isKeyPressed(Keyboard::Left))
            player.move(-10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Right))
            player.move(10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Up))
            player.move(0.f, -10.f);
        if (Keyboard::isKeyPressed(Keyboard::Down))
            player.move(0.f, 10.f);
 
        //ВРАГИ
        
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(playerCenter);
            b1.currVelocity = aimDirNorm * b1.maxSpeed;
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            bullets[i].shape.move(bullets[i].currVelocity);
 
            //Out of bounds
            if (bullets[i].shape.getPosition().x < 0 || bullets[i].shape.getPosition().x > window.getSize().x
                || bullets[i].shape.getPosition().y < 0 || bullets[i].shape.getPosition().y > window.getSize().y)
            {
                bullets.erase(bullets.begin() + i);
 
            }
            
        }
 
        //=============  О т р и с о в к а =====================
        window.clear();
 
        for (size_t i = 0; i < enemies.size(); i++)
        {
            window.draw(enemies[i]);
        }
 
        window.draw(player);
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
        window.draw(enemy);
 
        window.display();
    }
 
    return 0;
}
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 15:19  [ТС]
Есть небольшие глюки с дэтектом collision
но работает
почему то дэтект зависает
Название: 777.png
Просмотров: 55

Размер: 9.4 Кб Название: 888.png
Просмотров: 55

Размер: 7.8 Кб

_ВЕРСИЯ_011
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
155
156
157
158
159
160
161
#include<iostream>
#include"SFML\Graphics.hpp"
#include"SFML\Window.hpp"
#include"SFML\System.hpp"
#include<math.h>
#include<vector>
#include<cstdlib>
 
///LENGTH OF VECTOR: |V| = sqrt(V.x^2 + V.y^2)
//NORMALIZE VECTOR: U = V / |V|
 
using namespace sf;
 
class Bullet
{
public:
    CircleShape shape;
    Vector2f currVelocity;
    float maxSpeed;
 
    Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
    {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
    }
};
 
int main()
{
    srand(time(NULL));
 
    RenderWindow window(VideoMode(800, 600), "360 Shooter!", Style::Default);
    window.setFramerateLimit(60);
 
    
    
 
    Texture t1, t2;
 
    t1.loadFromFile("c:/111/777.png");
    t2.loadFromFile("c:/111/888.png");
    Sprite player(t1);  // создали функцию спрайта
    player.setPosition(220, 220);
    
 
    //Bullets
    Bullet b1;
    std::vector<Bullet> bullets;
 
    //Enemy
//  RectangleShape enemy;
    
    
    Sprite enemy(t2);  // создали функцию спрайта
    enemy.setPosition(Vector2f(300, 300));
    int spawnCounter = 20;
    
    
 
    //Vectors
    Vector2f playerCenter;
    Vector2f mousePosWindow;
    Vector2f aimDir;
    Vector2f aimDirNorm;
 
    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        //Update
        //Vectors
        playerCenter = Vector2f(player.getPosition());
        mousePosWindow = Vector2f(Mouse::getPosition(window));
        aimDir = mousePosWindow - playerCenter;
        aimDirNorm = aimDir / sqrt(pow(aimDir.x, 2) + pow(aimDir.y, 2));
 
        float PI = 3.14159265f;
        float deg = atan2(aimDirNorm.y, aimDirNorm.x) * 180 / PI;
        //player.setRotation(deg + 90);
 
        //Set Final Rotation of Ship
        std::cout << deg << "\n";
 
        //Player control
        if (Keyboard::isKeyPressed(Keyboard::Left))
            player.move(-10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Right))
            player.move(10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Up))
            player.move(0.f, -10.f);
        if (Keyboard::isKeyPressed(Keyboard::Down))
            player.move(0.f, 10.f);
 
        //ВРАГИ
        //ВРАГИ
        
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(playerCenter);
            b1.currVelocity = aimDirNorm * b1.maxSpeed;
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            bullets[i].shape.move(bullets[i].currVelocity);
 
            //Out of bounds
            if (bullets[i].shape.getPosition().x < 0 || bullets[i].shape.getPosition().x > window.getSize().x
                || bullets[i].shape.getPosition().y < 0 || bullets[i].shape.getPosition().y > window.getSize().y)
            {
                bullets.erase(bullets.begin() + i);
 
            }
            else
            {
                //Enemy collision
                
                
                    if (bullets[i].shape.getGlobalBounds().intersects(enemy.getGlobalBounds()))
                    {
                        bullets.erase(bullets.begin() + i);
                        { enemy.setColor(sf::Color(155, 155, 255, 118)); }//При столкновении окрашиваем
                        //enemy.erase(enemy);
                        break;
                    
                }
            }
 
 
            enemy.setColor(sf::Color(225, 225, 225, 200)); //если нет столкновения возвращаем цвет
        }
 
        //=============  О т р и с о в к а =====================
        window.clear();
 
        
 
        window.draw(player);
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
        window.draw(enemy);
 
        window.display();
    }
 
    return 0;
}
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 15:28  [ТС]
Ну хорошо,возможно просто не в том цикле детект, остается
только добавить здоровья обьекту
и произвести уничтожение емнема с экрана
не могу врубиться пока как это сделать.
Может просто отрисовку запретить
Хотелось бы как то конечно вектор удалить
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.07.2018, 20:46
Цитата Сообщение от mrden777 Посмотреть сообщение
Хотелось бы как то конечно вектор удалить
clear(); очищает весь вектор
shrink_to_fit позволяющая уменьшить количество используемой памяти.
c.erase(c.begin(), c.end()); Удаляет указанные элементы из контейнера
надо помнить что есть деструктор в vectore то что он и так все очищает
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 22:25  [ТС]
Antikl, напиши плз как конкретно удалить вот этот вектор пл3
я даже похожего не нашел как это делается
C++
1
2
Sprite enemy(t2);  // создали спрайт
    enemy.setPosition(Vector2f(300, 300)); //создали вектор - ВОТ ЭТОТ вектор надо удалить
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.07.2018, 23:18
Цитата Сообщение от mrden777 Посмотреть сообщение
я даже похожего не нашел как это делается
я писал про векторы в с++, а у вас то спрайт, то параметры задаються через вектор можно и так
C++
1
enemy.setPosition(0, 0);
что не выходит? нажимаем на кнопку мыши то начинается прорисовка спрайта пульки в то положение куда смотрела мышь тоисть узнать положение мыши и туда скоректировать спрайт, если спрайт столкнулся с обьектом или вылетел за окно то просто не отрисовывай ее

координаты окна узнать легко:
sf::Vector2u size = window.getSize();
unsigned int width = size.x;
unsigned int height = size.y;

//если спрайт за окном то не отрисовываем его, поработайте с условием
C++
1
2
3
4
5
6
7
if(sprite.getPosition().x > width && sprite.getPosition().y > height)
{
     life = false; 
}else
{
   life = true;
}
1
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 23:28  [ТС]
Ну не спрайт, а спрайт в векторе он же не удалится из памяти если просто
позишан сменить. Ладно все равно спс за идею.
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 23:31  [ТС]
ИТОГО:
Название: 777.png
Просмотров: 51

Размер: 9.4 Кб Название: 888.png
Просмотров: 50

Размер: 7.8 Кб
ВЕРСИЯ_012

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
155
156
157
158
159
160
161
162
163
164
#include<iostream>
#include"SFML\Graphics.hpp"
#include"SFML\Window.hpp"
#include"SFML\System.hpp"
#include<math.h>
#include<vector>
#include<cstdlib>
 
///LENGTH OF VECTOR: |V| = sqrt(V.x^2 + V.y^2)
//NORMALIZE VECTOR: U = V / |V|
 
using namespace sf;
 
class Bullet
{
public:
    CircleShape shape;
    Vector2f currVelocity;
    float maxSpeed;
 
    Bullet(float radius = 5.f)
        : currVelocity(0.f, 0.f), maxSpeed(15.f)
    {
        this->shape.setRadius(radius);
        this->shape.setFillColor(Color::Red);
    }
};
 
int main()
{
    srand(time(NULL));
 
    RenderWindow window(VideoMode(800, 600), "360 Shooter!", Style::Default);
    window.setFramerateLimit(60);
 
    
    
 
    Texture t1, t2;
 
    t1.loadFromFile("c:/111/777.png");
    t2.loadFromFile("c:/111/888.png");
    Sprite player(t1);  // создали функцию спрайта
    player.setPosition(220, 220);
    
 
    //Bullets
    Bullet b1;
    std::vector<Bullet> bullets;
 
    //Enemy
//  RectangleShape enemy;
    
    
    Sprite enemy(t2);  // создали функцию спрайта
    enemy.setPosition(Vector2f(300, 300));
    int spawnCounter = 20;
    
    
 
    //Vectors
    Vector2f playerCenter;
    Vector2f mousePosWindow;
    Vector2f aimDir;
    Vector2f aimDirNorm;
 
    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
        }
 
        //Update
        //Vectors
        playerCenter = Vector2f(player.getPosition());
        mousePosWindow = Vector2f(Mouse::getPosition(window));
        aimDir = mousePosWindow - playerCenter;
        aimDirNorm = aimDir / sqrt(pow(aimDir.x, 2) + pow(aimDir.y, 2));
 
        float PI = 3.14159265f;
        float deg = atan2(aimDirNorm.y, aimDirNorm.x) * 180 / PI;
        //player.setRotation(deg + 90);
 
        //Set Final Rotation of Ship
        std::cout << deg << "\n";
 
        //Player control
        if (Keyboard::isKeyPressed(Keyboard::Left))
            player.move(-10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Right))
            player.move(10.f, 0.f);
        if (Keyboard::isKeyPressed(Keyboard::Up))
            player.move(0.f, -10.f);
        if (Keyboard::isKeyPressed(Keyboard::Down))
            player.move(0.f, 10.f);
 
        //ВРАГИ
        //E N E M Y
        enemy.setColor(sf::Color(225, 225, 225, 200)); //если нет столкновения возвращаем цвет
 
        //СТРЕЛЯЕМ
        if (Mouse::isButtonPressed(Mouse::Left))
        {
            b1.shape.setPosition(playerCenter);
            b1.currVelocity = aimDirNorm * b1.maxSpeed;
 
            bullets.push_back(Bullet(b1));
        }
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            bullets[i].shape.move(bullets[i].currVelocity);
 
            //Out of bounds
            if (bullets[i].shape.getPosition().x < 0 || bullets[i].shape.getPosition().x > window.getSize().x
                || bullets[i].shape.getPosition().y < 0 || bullets[i].shape.getPosition().y > window.getSize().y)
            {
                bullets.erase(bullets.begin() + i);
 
            }
            else
            {
                //Enemy collision
                
                
                    if (bullets[i].shape.getGlobalBounds().intersects(enemy.getGlobalBounds()))
                    {
                        bullets.erase(bullets.begin() + i);
                        { enemy.setColor(sf::Color(120, 0, 12, 38)); }//При столкновении окрашиваем
                        // enemy.erase(bullets); ?/???????
                        enemy.setPosition(-100,-100);
                        
                        //vector<tempObject>().swap(tempVector);
                        break;
                    
                }
            }
 
 
            
        }
 
        //=============  О т р и с о в к а =====================
        window.clear();
 
        
 
        window.draw(player);
 
        for (size_t i = 0; i < bullets.size(); i++)
        {
            window.draw(bullets[i].shape);
        }
 
        window.draw(enemy);
 
        window.display();
    }
 
    return 0;
}
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
12.07.2018, 23:32
Цитата Сообщение от mrden777 Посмотреть сообщение
2
Sprite enemy(t2); *// создали спрайт
* * enemy.setPosition(Vector2f(300, 300)); //создали вектор - ВОТ ЭТОТ вектор надо удалить
тут просто позицыю спрайта указываешь через вектор да и все

1)вариант функции
setPosition (float x, float y)
2)вариант функции
setPosition (const Vector2f & position)
0
 Аватар для mrden777
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
12.07.2018, 23:53  [ТС]
Ну как я понял вектор из первой схемы например,
где пули задавали через текстуру
C++
1
Bullet(Texture *texture, Vector2f pos)
позишан зависит от координат окна, а не глобальных да ?
Из за этого у меня скроллинг накрывался ?
как тогда тот вариант вектора удалить ?

видел такой пример удаления

C++
1
2
vector<tempObject> *tempVector;
vector<tempObject>().swap(tempVector);
Для него надо класс создавать обязательно ?
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
13.07.2018, 00:47
Цитата Сообщение от mrden777 Посмотреть сообщение
Для него надо класс создавать обязательно ?
Итак, чтобы найти границы:

Слева от окна, когда x = 0

В верхней части окна находится y = 0

Правило окна - это когда x = window.getSize().x

Нижняя часть окна - это когда y = window.getSize().y

В SFML все происхождение автоматически устанавливается в верхнем левом углу прямоугольника / спрайта.

У каждого прямоугольника есть метод getLocalBounds(), который возвращаетsf::Rect

Итак, предполагая, что «спрайт» - это имя вашего прямоугольника / спрайта, с которым вы хотите проверить столкновение окон с ...

... для проверки столкновения с левой частью окна:

if ( sprite.getPosition().x <= 0 ) { }
... для проверки столкновения с верхней частью окна

if ( sprite.getPosition().y <= 0 ) { }
... для проверки столкновения с правом окна

if ( sprite.getPosition().x + sprite.getLocalBounds().width >= window.getSize().x ) { }
... для проверки столкновения с нижней частью окна

if ( sprite.getPosition().y + sprite.getLocalBounds().height >= window.getSize().y ) { }

Добавлено через 18 минут
я бы использовал так
vector<tempObject> tempVector;
tempVector.clear();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2018, 00:47
Помогаю со студенческими работами здесь

Создание летящей пули
Вместо одной пули появляется две

Создание пули для танка
Помогите создать пулю для танчик

Определение методов интерфейса в точке создания обьекта - поясните синтаксис
public void onclick(View v) { Thread t = new Thread(new Runnable() { Message msg; byte file; ...

Способ создания ТИЦ 10...
Что если создать 100 сайтов на бесплатных хостах на одну и ту же тематику.Например дом,сад,огород.Далее на сайте 1-ом сделать 99 ссылок...

Выбор БД и способ создания
Здравствуйте. Мне нужен совет в какой БД лучше всего создавать динамическую таблицу, которая будет иметь минимум связей. В общем задание...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru