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

funkcja z SFML

Ostatnio zmodyfikowano 2020-03-20 18:10
Autor Wiadomość
Xgrod
Temat założony przez niniejszego użytkownika
» 2020-03-20 14:21:54
zderz.cpp
C/C++
#include "gra.h"
#include <SFML/Graphics.hpp>
using namespace sr;
void ustawienia_okna( RenderWindow & okno )
{
    okno.create( VideoMode( 1000, 800, 32 ), "OKNO", Style::Fullscreen );
    okno.setActive( true );
    okno.setKeyRepeatEnabled( true );
    okno.setVerticalSyncEnabled( true );
    okno.setPosition( Vector2i( 0, 0 ) );
}
float iloczyn_wektorowy( Vector2f & A, Vector2f & B, Vector2f & C )
{
    int x1 = C.x - A.x,
    y1 = C.y - A.y,
    x2 = B.x - A.x,
    y2 = B.y - A.y;
    return x1 * y2 - x2 * y1;
}
bool test_kolizji( Vector2f a, Vector2f b, Vector2f c, Vector2f d )
{
    float v1, v2, v3, v4;
    v1 = iloczyn_wektorowy( a, b, c );
    v2 = iloczyn_wektorowy( a, b, d );
    v3 = iloczyn_wektorowy( c, d, a );
    v4 = iloczyn_wektorowy( c, d, b );
    if((( v1 >= 0 && v2 <= 0 ) ||( v1 <= 0 && v2 >= 0 ) ) &&(( v3 >= 0 && v4 <= 0 ) ||( v3 <= 0 && v4 >= 0 ) ) ) return true;
   
    return false;
}
Vector2f ruch( float kat, float przesuniecie )
{
    kat = kat * PI / 180;
    return Vector2f( przesuniecie * cos( kat ), przesuniecie * sin( kat ) );
}
P-176430
Xgrod
Temat założony przez niniejszego użytkownika
» 2020-03-20 14:23:08
window.cpp
C/C++
#ifndef window_cpp
#define window_cpp
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
using namespace sf;
using namespace sr;
template < typename...Args >
void Okno::add_to_button( int type_event, vector < string > typ_button, vector < Vector2f > wymiary, vector < Vector2f > position,
vector < string > name, vector < Vector2i > align, unsigned int CharacterSize, Color col, Args...args )
{
    cout << "P" << endl;
    getchar();
    vector < wstring > name1;
    cout << "P" << endl;
    getchar();
    tuple < Args...> dane( args...);
    switch( type_event )
    {
    case 0:
        {
            button_click.push_back( Button_Click( get < 0 >( dane ) ) ); break;
        }
    }
    for( auto i: name )
    {
        if( i != "" )
        {
            name1.push_back( wstring( i.begin(), i.end() ) );
        }
    }
    for( auto i: typ_button )
    {
        i += ".png";
    }
    for( int j = 0; j < typ_button.size(); j++ )
    {
        for( int i = 0; i < grafiki.size(); i++ )
        {
            if( grafiki[ i ].wymiary[ 0 ].ID == typ_button[ j ] )
            {
                if( type_event == 0 )
                {
                    button_click.back().NS1.push_back( Sprite_1_0() );
                    button_click.back().NS1.back().setTexture( grafiki[ i ] );
                    if( button_click.back().NS1.back().getSize().x == 0 || button_click.back().NS1.back().getSize().y == 0 )
                    {
                        cout << button_click.back().NS1.back().getSize().x << " " << button_click.back().NS1.back().getSize().y << " error" << endl;
                        return;
                    }
                    break;
                }
            }
        }
    }
    switch( type_event )
    {
    case 0:
        {
            for( int i = 0; i < wymiary.size(); i++ )
            {
                button_click.back().NS1[ i ].setPosition( positions.x + position[ i ].x, positions.y + position[ i ].y );
                if( wymiary[ i ].y == 0 ) { wymiary[ i ].y = 1; }
                if( wymiary[ i ].x == 0 )
                {
                    button_click.back().NS1[ i ].setScale
                    ( main_panel.NS1.getSize().x / button_click.back().NS1[ i ].getSize().x,
                    main_panel.NS1.getSize().y / button_click.back().NS1[ i ].getSize().y );
                }
                else if( wymiary[ i ].x < 0 )
                {
                    button_click.back().NS1[ i ].setScale
                    ( main_panel.NS1.getSize().x - 2 * wymiary[ i ].x / button_click.back().NS1[ i ].getSize().x,
                    main_panel.NS1.getSize().y / button_click.back().NS1[ i ].getSize().y );
                }
            }
            for( int i = 0; i < name1.size(); i++ )
            {
                button_click.back().data.push_back( Text_1_0( name1[ i ], typ_text, CharacterSize ) );
                if( align[ i ].x < 0 )
                {
                    button_click.back().data.back().setPosition
                    ( button_click.back().NS1[ i ].getPosition().x + align[ i ].x +( button_click.back().NS1[ i ].getSize().x - button_click.back().data[ i ].getSize().x ) / 2,
                    button_click.back().NS1[ i ].getPosition().y + align[ i ].y );
                }
                else
                {
                    button_click.back().data.back().setPosition( main_panel.NS1.getPosition().x + align[ i ].x, main_panel.NS1.getPosition().y + align[ i ].y );
                }
            } break;
        }
    }
}
#endif /// window_cpp[/code]
P-176431
Xgrod
Temat założony przez niniejszego użytkownika
» 2020-03-20 14:25:26
macro_def.h
C/C++
#include <cstdio>
#include <cstring>
#include <dirent.h>
#include <fstream>
#include <functional>
#include <io.h>
#include <map>
#include <memory>
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <string>
#include <sstream>
#include <tuple>
#include <vector>
#include <utility>
#include <windows.h>

using namespace std;
using namespace sf;

#define PI 3.14159265358979323846
Mam trochę bałagan w kodzie ale to dlatego, że testuję różne klasy i funkcje.
P-176432
pekfos
» 2020-03-20 17:05:51
Czemu to podzieliłeś na posty..

C/C++
bool folder( const char * sciezka )
{
    DIR * dir;
    bool save = false;
    if(( dir = opendir( sciezka ) ) ) { save = true; }
    closedir( dir );
    delete dir;
    return save;
}
closedir() odpowiada za zwalnianie zasobów, delete jest tu całkowicie błędne. Zwalnianie zasobów musi być zawsze dopasowane do sposobu, w jaki zostały przydzielone, więc nigdy nie próbuj zgadywać.
P-176433
Xgrod
Temat założony przez niniejszego użytkownika
» 2020-03-20 17:44:26
Stworzyłem kilka postów bo jak wkleiłem wszystko do jednego to strona nie zapisała mojej wiadomości. Dzięki za znalezienie błędu, w takim wypadku pytanko
dirent * name;
tutaj muszę użyć delete żeby dane nie wyciekły czy nie ?
P-176438
pekfos
» 2020-03-20 17:50:13
Używanie w kodzie wskaźników nie oznacza używania new/delete. Wszystkie new/delete jakie masz w kodzie są użyte niepotrzebnie i błędnie.
P-176440
Xgrod
Temat założony przez niniejszego użytkownika
» 2020-03-20 18:10:28
Dzięki zamykam temat.
P-176442
1 « 2 »
Poprzednia strona Strona 2 z 2