DanielSC Temat założony przez niniejszego użytkownika |
» 2012-11-05 19:21:01 Już wszystko rozumiem bardzo dziękuje. //edit Napisałem program w którym możemy poruszać kwadratem po mapie kafelkowej .Program wykrywa kolizje miedzy kwadratem a kafelkami.Natknęłem się na taki błąd est mapa zaluszmy : 1,1,1,1,1,1, 1,1,1,1,1,1, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, i jest ona odpowiednio kolorowana jesli 1 to na niebiesko jesli 2 to czerwono . Po otworzeniu Aplikacji rysuje mi cos takiego : 1,1,1,1,1,1, 2,2,2,2,2,2, -------jeden pasek czerwieni wiecej niż byc powinno 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, mape tak rysuje : for( int i = 0; i < 6; i++ ) { for( int j = 0; j < 6; j++ ) { if( mapa1[ j ][ i ] == 2 ) Aplikacja.Draw( czerwony ); trawa.SetPosition( i * s2, j * w2 ); if( mapa1[ j ][ i ] == 1 ) Aplikacja.Draw( niebieski ); powietrze.SetPosition( i * s2, j * w2 ); } } gdzie s2 to szerokosc kafla a w2 to wysokosc kafla. Proszę o pomoc. |
|
Wasilek |
» 2013-01-22 21:07:49 Brak {} ? I chyba wypadałoby najpierw ustalić pozycję kafla, a dopiero później go narysować :) |
|
DanielSC Temat założony przez niniejszego użytkownika |
» 2013-01-23 16:43:49 Ok dzieki działa tak dal przykladu narysowalem te liczby takie odbicie tablicy. A problem związany z tym co mówiłeś że pierw czeba pozycje potem ryswać Dzieki ci! /// edit: Siemka mam taki problem , że mapa rysuje śię z widoczną kratką mimo ,że sprajt jest szerszy od szerokości kafla: http://zapodaj.net/9b5113c186d84.png.htmllink do screena jak wygląda mapa |
|
polkom21 |
» 2013-02-05 15:39:48 Wygląda jak byś źle podawał pozycję każdego rysowanego kafla. Podaj jakiś większy kod jak to robisz. |
|
DanielSC Temat założony przez niniejszego użytkownika |
» 2013-02-05 17:42:08 #include <SFML/Graphics.hpp> #include <iostream> using namespace sf; using namespace std; int main() { RenderWindow Aplikacja( VideoMode( 900, 900, 32 ), "Aplikacja" ); double s2 = 40, w2 = 40; int mapa1[ 40 ][ 40 ]; for( int i = 0; i < 20; i++ ) { for( int j = 0; j < 40; j++ ) mapa1[ i ][ j ] = 1; } for( int i = 20; i < 40; i++ ) { for( int j = 0; j < 40; j++ ) { mapa1[ i ][ j ] = 2; } } Image obrazek1, obrazek2; obrazek1.LoadFromFile( "trawa.png" ); obrazek2.LoadFromFile( "powietrze.png" ); Sprite trawa, powietrze, menu, avatar1, avatar2, avatar3, avatar4, avatar5, avatar6; trawa.SetImage( obrazek1 ); powietrze.SetImage( obrazek2 ); while( Aplikacja.IsOpened() ) { Event zdarzenie; while( Aplikacja.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == Event::Closed ) Aplikacja.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) Aplikacja.Close(); Aplikacja.Clear( Color::Blue ); for( int i = 0; i < 40; i++ ) { for( int j = 0; j < 40; j++ ) { if( mapa1[ j ][ i ] == 2 ) trawa.SetPosition( i * s2, j * w2 ); Aplikacja.Draw( trawa ); if( mapa1[ j ][ i ] == 1 ) powietrze.SetPosition( i * s2, j * w2 ); Aplikacja.Draw( powietrze ); } } Aplikacja.Display(); } } return 0; }
[/i] |
|
polkom21 |
» 2013-02-05 23:30:01 No to chyba nie jest cały kod. Skąd się bierze to Twoje s2 i w2? Jaką masz szerokość obrazków? |
|
DanielSC Temat założony przez niniejszego użytkownika |
» 2013-02-06 17:23:43 szerokość 40 i wysokość również. Jest definicja tej zmiennej na początku typu duble. |
|
polkom21 |
» 2013-02-07 01:05:14 No tak lepiej korzystać s double, które ma 8 bitów niż spokojnie z int, który ma 4 bity. A w obrazkach czasem nie masz z każdej strony szerokość na 1 pixel? |
|
1 « 2 » 3 |