Xgrod Temat założony przez niniejszego użytkownika |
» 2020-03-20 14:21:54 zderz.cpp #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 ) ); } |
|
Xgrod Temat założony przez niniejszego użytkownika |
» 2020-03-20 14:23:08 window.cpp #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
|
|
Xgrod Temat założony przez niniejszego użytkownika |
» 2020-03-20 14:25:26 macro_def.h #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. |
|
pekfos |
» 2020-03-20 17:05:51 Czemu to podzieliłeś na posty.. 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ć. |
|
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 ? |
|
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. |
|
Xgrod Temat założony przez niniejszego użytkownika |
» 2020-03-20 18:10:28 Dzięki zamykam temat. |
|
1 « 2 » |