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

Столкновение спрайта и закрашеного квадратика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Скомпилировать приложение, включив библиотеки в исполнимый файл http://www.cyberforum.ru/cpp-beginners/thread1235139.html
я написал небольшую програмку с использованием libcurl и winfroms. подскажите как можно скомпилировать программу чтобы она не требовала libcurl на другом пк
C++ Распарсить текстовый файл Программно я могу получить список следующего вида: ..., { id: 7, login: 'idaspin', password: '638kjg1kjghd8xzckj2kj3hdhg876smnnm4jd' }, { id: 8, login: 'marchall_95', password: '8sd920gxzc3dasdada6947opkjgo92cv637', http://www.cyberforum.ru/cpp-beginners/thread1235126.html
C++ Класс "Комплексное число". Как считать и записать данные в файл?
Надо переделать код программы, чтобы данные шли из входного файла и записывались в выходной Во входном файле 2 комплексных числа a и b. И думаю, их записать в виде,например, 1 3 2 4 5 3 6 2 И считать его в отдельные массивы или в один и тот же? А в выходном файле записываются результаты вычислений с,d,f Помогите с написанием самого кода вышеописанного..
Namespace boost не содержит члена lexical_cast C++
.... #include "boost\lexical_cast.hpp" int main() { ..... m.insert(std::pair<int, std::string>(i, boost::lexical_cast<int>(i)); ..... }
C++ Предохранители. Задача с тимуса №1327 http://www.cyberforum.ru/cpp-beginners/thread1235015.html
Ограничение времени: 1.0 секунды Ограничение памяти: 64 МБ Янус Полуэктович (не помню уже, А или У) воспользовался машиной только один раз. Он принес с собой небольшую полупрозрачную коробочку, которую присоединил к "Алдану". Примерно через десять секунд работы с этой приставкой в машине полетели все предохранители, после чего Янус Полуэктович извинился, забрал свою коробочку и ушел....
C++ снова крестили нолики #include <iostream> using namespace std; int main () { int a,k=0; char mas; while(k<10) { for(int i=0;i<7;i++) подробнее

Показать сообщение отдельно
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
28.07.2014, 07:17     Столкновение спрайта и закрашеного квадратика
Как мне реализовать столкновение, что бы не проходить сквозь закрашенные квадраты а стоять на их,В 2д игре.
За код сильно не судить брал примеры с видео урока в котором вся каша была в одном лиш маине, немного подкорректировал части)) библиотека SFM, а еще бы с объяснениями очень важно понять еще. От столкновений не какой там физики не надо отлетаний, просто что бы он не проходил сквозь их и мог стоять на них.
Mario.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
#include "stdafx.h"
#include "Player.h"
#include "Map.h"
#include <SFML\Graphics.hpp>
using namespace sf;
int _tmain(int argc, _TCHAR* argv[])
{
        float offsetX=0, offsetY=0;
        const int H = 13;
        const int W = 40;
 
 
    RenderWindow window(VideoMode(1200, 800), "Test!");
    Map *map = new Map(window);
    Texture t;
    t.loadFromFile("D:\\vse.gif");
    float frame = 0;
 
    Player p(t,offsetX,offsetY);
    Clock clock;
    while(window.isOpen())
    {
        float time = clock.getElapsedTime().asMicroseconds();
        clock.restart();
        time = time/800;
        Event event;
        while(window.pollEvent(event))
        {
            if(event.type == Event::Closed)
            {
                window.close();
            }
        }
    
        RectangleShape rectangle;
    
                    
            window.clear(Color::White);
            map->loadmap();
            p.update(time);
        window.draw(p.sprite);
        window.display();
        
    }
    
    return 0;
}
Map.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <SFML\Graphics.hpp>
#include "stdafx.h"
using namespace sf;
class Map
{
public:
    static const int W = 40;
    static const int H = 13;
    
    RenderWindow *window;
    Map(RenderWindow &window);
    String createmap();
    void loadmap();
 
};
Map.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
#include "stdafx.h"
#include "Map.h"
#include <SFML\Graphics.hpp>
using namespace sf;
 
 
Map::Map(RenderWindow &window)
{
    this->window = &window;
    
}
 
 
 
void Map::loadmap()
{
                    String TileMap[H] = {
 
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B                                B     B",
"B         0000                BBBB     B",
"B                                B     B",
"BBB                              B     B",
"B              BB                BB    B",
"B              BB                      B",
"B    B         BB         BB           B",
"B    B         BB         BB           B",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",};
 
    RectangleShape rectangle( Vector2f(64, 64));
         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]=='0')  rectangle.setFillColor(Color::Green);
 
                  if (TileMap[i][j]==' ') continue;
 
                  rectangle.setPosition(j*64,i*64);
                  window->draw(rectangle);
 
                 
             }
}
Player.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <SFML\Graphics.hpp>
using namespace sf;
class Player {
 
 
 
 
    public:
        float currentFrame;
        bool onGround;
        FloatRect rect;
        Sprite sprite;
        float dx,dy;
        Player(Texture &image,float offsetX, float offsetY);
        void walk();
        void update(float time);
};
Player.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
#include "stdafx.h"
#include "Player.h"
 
    Player::Player(Texture &image,float offsetX, float offsetY)
   {
    dx = dy = 0;
    sprite.setTexture(image);
    rect = FloatRect(75,17,75,80);
    currentFrame = 0;
    sprite.setTextureRect(IntRect(10,17,75,80));
   }
   void Player::walk()
   {
        if(Keyboard::isKeyPressed(Keyboard::Left))
        {
            dx = - 0.1;
        }
 
        if(Keyboard::isKeyPressed(Keyboard::Right))
        {
            dx =  0.1;
        }
 
        if(Keyboard::isKeyPressed(Keyboard::Up))
        {
            if(onGround){dy=-0.4;onGround=false;}
        }
   }
 
        
   void Player::update(float time)
   {
     
 
     if (!onGround) dy=dy+0.0005*time;
     rect.top += dy*time;
     onGround=false;
     if(rect.top > 700){rect.top=700;onGround=true;dy=0;}
 
      currentFrame += 0.005*time;
      if (currentFrame > 6) currentFrame -=6 ;
 
      walk();
        rect.top += dy * time;
        rect.left += dx * time;
 
      if (dx>0) sprite.setTextureRect(IntRect(75*int(currentFrame),17,75,80));
      if (dx<0) sprite.setTextureRect(IntRect(75*int(currentFrame)+75,17,-75,80));
      sprite.setPosition(rect.left, rect.top);
 
      dx=0;
   }
Добавлено через 2 часа 32 минуты
оуу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru