Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SFML Kod + Pytanie odnośnie tworzenia nowych projektów.

Ostatnio zmodyfikowano 2017-12-20 16:50
Autor Wiadomość
Lentyl
Temat założony przez niniejszego użytkownika
SFML Kod + Pytanie odnośnie tworzenia nowych projektów.
» 2017-12-19 21:28:40
Witam mam dwa pytania
1 dlaczego gość w kodzie (jest to gra Arkanoid) zmienia parametry poruszania się piłki przed kolizją chodzi mi dokładnie o ten fragment
sBall.move(dx, 0);

sBall.move(0, dy);

Można zauważyć, że piłka jest spowolniona w stosunku do wcześniejszych parametrów float dx=5, dy=6; ale dlaczego ich po prostu nie zmniejszyć. jest to pierwszy mój projekt a raczej zrobiony z tym gościem https://www.youtube.com/watch?v=U7vSIvLLZi0 minus jest taki, że on nie tłumaczy co i dlaczego robi ale ogólnie jest ok

2 pytanie Czy jest jakiś sposób, żeby ominąć żmudną procedurę dodawania biblioteki SFML do każdego nowego projektu, bądź usprawnienie tego (korzystam z Visual studio 2015)

C/C++
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <time.h>
#include <iostream>

bool isCollide( sf::Sprite s1, sf::Sprite s2 )
{
    return s1.getGlobalBounds().intersects( s2.getGlobalBounds() );
   
}

int main()
{
    srand( time( 0 ) );
   
    sf::RenderWindow window( sf::VideoMode( 540, 450 ), "Arcanoid!" );
   
    window.setFramerateLimit( 60 );
    sf::Texture t1, t2, t3, t4;
   
    t1.loadFromFile( "images/block01.png" );
    t2.loadFromFile( "images/background.jpg" );
    t3.loadFromFile( "images/ball.png" );
    t4.loadFromFile( "images/paddle.png" );
   
    sf::Sprite sBackground( t2 ), sBall( t3 ), sPaddle( t4 );
   
    sPaddle.setPosition( 300, 440 );
    sBall.setPosition( 300, 300 );
   
    sf::Sprite block[ 1000 ];
    int n = 0;
   
    for( int i = 1; i <= 10; i++ )
    for( int j = 1; j <= 10; j++ )
    {
       
        block[ n ].setTexture( t1 );
        block[ n ].setPosition( i * 45.0, j * 20.0 ); //45 i 20 długość i szerokość obszaru gdzie znajdują się klocki n ilość klocków.
        n++;
    }
   
    float dx = 5, dy = 6;
   
    while( window.isOpen() )
    {
        sf::Event event;
        while( window.pollEvent( event ) )
        {
            if( event.type == sf::Event::Closed )
                 window.close();
           
        }
       
        sBall.move( dx, 0 );
        for( int i = 0; i < n; i++ )
        if( isCollide( sBall, block[ i ] ) )
        {
            block[ i ].setPosition( - 100, 0 ); dx = - dx;
        }
       
        sBall.move( 0, dy );
        for( int i = 0; i < n; i++ )
        if( isCollide( sBall, block[ i ] ) )
        {
            block[ i ].setPosition( - 100, 0 ); dy = - dy;
        }
       
        sf::Vector2f b = sBall.getPosition();
       
        if(( b.x < 0 ) ||( b.x > 540 ) ) dx = - dx;
       
        if(( b.y < 0 ) ||( b.y > 450 ) ) dy = - dy;
       
        sf::Vector2f p = sPaddle.getPosition();
       
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::Right ) )
        {
            if( p.x < 450 )
                 sPaddle.move( 6, 0 );
           
        }
        if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::Left ) )
        {
            if( p.x > 0 )
                 sPaddle.move( - 6, 0 );
           
        }
       
        if( isCollide( sBall, sPaddle ) )
        {
            dy = -( rand() % 6 ) + 2;
        }
        window.clear( sf::Color::Black );
        window.draw( sBackground );
        window.draw( sBall );
        window.draw( sPaddle );
       
        for( int i = 0; i < n; i++ )
             window.draw( block[ i ] );
       
        window.display();
       
    }
    return 0;
}
P-167997
pekfos
» 2017-12-19 21:43:02
1. Czemu nie zapytasz tego 'gościa'?
2. Property pages.
P-168000
Lentyl
Temat założony przez niniejszego użytkownika
» 2017-12-19 23:16:32
Mógłbyś dookreślić 2
P-168012
pekfos
» 2017-12-20 00:05:31
Frazy, które należy wpisać w wyszukiwarkę google:
P-168020
j23
» 2017-12-20 10:46:11
W VC możesz dość prosto stworzyć szablon projektu aplikacji - poszukaj info o tym.
P-168027
Janusz2
» 2017-12-20 16:50:05
Mógłbyś dokładnie określić, gdzie Twoim zdaniem dochodzi do zmniejsznia szybkości piłki? W przytoczonej przez Ciebie metodzie Ball.move(dx,0) wartość dx nie jest w żaden sposób zmieniana, z kolei fragment dx=-dx jedynie odwraca kierunek ale szybkosc pozostaje ta sama.
P-168028
« 1 »
  Strona 1 z 1