Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-05-06, 16:32


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Witam. Je?li pobior? kraw?dzie obiektu przy u?yciu funckji getGlobalBounds() (biblioteka SFML), to jak sprawdza?, czy obiekt A dotyka kraw?dzi obiektu B? Dzi?ki z g?ry.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-07, 23:19


Pawel5321

Szkrypter






Wiek: 36
Na forum: 3810 dni
Posty: 237
Nick w MP: Pawell

Piwa: 2315

Respekt: 240
Respekt: 240Respekt: 240

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Szyszka947
Wysłany: 2020-05-08, 11:56


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Czemu to nie dzia?a? Wszystko jest w main.cpp.
Kod:


template <class T1, class T2> bool isIntersecting(T1& A, T2& B)
{
return true;
}

bool collision(Snake& snake, Apple& apple)
{
if (isIntersecting(snake, apple) == false) return false;

if (isIntersecting(snake, apple) == true)
{
Apple apple;
}
else
{
return false;
}
}
//a w funkcji main. po funkcji update ktora odpowiedzialna jest za ruszanie //snakiem (wylapywanie kilknietych klawiszy i reagowanie na nie) sprawdzam kolizje.

snake.update();
collision(snake, apple);


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 13:26


Pawel5321

Szkrypter






Wiek: 36
Na forum: 3810 dni
Posty: 237
Nick w MP: Pawell

Piwa: 2315

Respekt: 240
Respekt: 240Respekt: 240

Szyszka947, twoja funkcja
Kod:


template <class T1, class T2> bool isIntersecting(T1& A, T2& B)
{
return true;
}

zawsze zwraca true,
Kod:


bool collision(Snake& snake, Apple& apple)
{
if (isIntersecting(snake, apple) == false) return false;

if (isIntersecting(snake, apple) == true)
{
Apple apple;
}
else
{
return false;
}
}

a ta funkcja nigdy nie zwraca true, je?li warunek jest spe?niony to jedynie deklaruje nowy obiekt.

Link kt?ry wys?a?em wcze?niej opisuje metod? klasy Rect, a nie funkcj?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 14:25


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Kod:


template <typename T>
bool sf::Rect< T >::intersects(const Rect< T >& snake) const
{
if (intersects == true)
{
Apple apple;
return true;
}
else
{
return false;
}
}

w jaki spos?b teraz mam wywo?a? t? metode w funkcji main? :/

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 14:33


Pawel5321

Szkrypter






Wiek: 36
Na forum: 3810 dni
Posty: 237
Nick w MP: Pawell

Piwa: 2315

Respekt: 240
Respekt: 240Respekt: 240

Szyszka947, nie definiuj ani nie deklaruj tej funkcji, ona jest ju? w bilbiotekach SFML,
tu przyk?ad u?ycia z ich strony:
Kod:


// Define a rectangle, located at (0, 0) with a size of 20x5
sf::IntRect r1(0, 0, 20, 5);
// Define another rectangle, located at (4, 2) with a size of 18x10
sf::Vector2i position(4, 2);
sf::Vector2i size(18, 10);
sf::IntRect r2(position, size);
// Test intersections with the point (3, 1)
bool b1 = r1.contains(3, 1); // true
bool b2 = r2.contains(3, 1); // false
// Test the intersection between r1 and r2
sf::IntRect result;
bool b3 = r1.intersects(r2, result); // true
// result == (4, 2, 16, 3)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Szyszka947
Wysłany: 2020-05-08, 15:08


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Meh, chyba nic z tego nie wyjdzie. Mo?e podasz jaki? konkretny przyk?ad ze sprawdzaniem, czy przecinaj? si? dwa obiekty?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 16:39


Pawel5321

Szkrypter






Wiek: 36
Na forum: 3810 dni
Posty: 237
Nick w MP: Pawell

Piwa: 2315

Respekt: 240
Respekt: 240Respekt: 240

Program wy?wietla w konsoli "kolizja", gdy kwadraty si? zderzaj?:
Kod:


#include <SFML/Graphics.hpp>
#include <stdio.h>

float x1=0,x2=700;
int main()
{
sf::RenderWindow app(sf::VideoMode(800, 600), "SFML window");

sf::RectangleShape sh1=sf::RectangleShape (sf::Vector2f(100,100));
sf::RectangleShape sh2=sf::RectangleShape (sf::Vector2f(100,100));
sh2.setFillColor(sf::Color::Red);
sh1.setFillColor(sf::Color::Blue);



while (app.isOpen())
{
sf::Event event;
while (app.pollEvent(event))
{
if (event.type == sf::Event::Closed)
app.close();
}
app.clear();

sh1.setPosition(x1,200);
sh2.setPosition(x2,200);

if(sh1.getGlobalBounds().intersects(sh2.getGlobalBounds()))
fprintf(stderr,"%s\n","kolizja");

app.draw(sh1);
app.draw(sh2);

app.display();
x1+=0.05;
x2-=0.05;
if (x2<0) exit(EXIT_SUCCESS);
}

return EXIT_SUCCESS;
}



Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Szyszka947
Wysłany: 2020-05-08, 17:18


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Dzi?ki, dzia?a. Da?em Ci respekt i 3 piwka :D . Je?li by? m?g?, to prosi? bym tak nie w temacie o wyja?nienie, dlaczego obiekt si? nie tworzy, kiedy kwadraty si? zderzaj?;
Kod:


if (snake.kolizja().intersects(apple.kolizja()))
{
Apple apple;
}


A dla innych os?b zostawi? tu rozwi?zanie, kt?re ja zastosowa?em, z powodu gdy? nie trzymam wszystkiego w main.cpp:
W pliku nag??wkowym (.h):
Kod:


FloatRect kolizja();


W pliku o tej samej nazwie, co plik nag??wkowy (cpp):
Kod:


FloatRect Apple::kolizja()
{
return apple.getGlobalBounds();
}

A przy sprawdzeniu w main.cpp
Kod:


if (snake.kolizja().intersects(apple.kolizja()))


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 17:22


Pawel5321

Szkrypter






Wiek: 36
Na forum: 3810 dni
Posty: 237
Nick w MP: Pawell

Piwa: 2315

Respekt: 240
Respekt: 240Respekt: 240

Szyszka947,
Metoda
Kod:


FloatRect Apple::kolizja()
{
return apple.getGlobalBounds();
}

zwraca FloatRect obiektu apple w obiekcie Apple, a snake jest innym obiektem.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-05-08, 17:47


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Do zamkni?cia :v. Dzi?ki jeszcze raz!

Postaw piwo autorowi tego posta
 

 
Tagi: getglobalbounds()
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » INNE JĘZYKI » [C++] getGlobalBounds() Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku