16
Audio / Re: How can I know if the song ended or not?
« on: June 08, 2014, 02:44:07 am »
Thanks, dude! All that I had to do was change Music::Stopped to SoundSource::Stopped. Thanks!
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
sf::Music song;
song.openFromFile("path.wav");
song.play();
if (song.getStatus() == sf::Music::Status::Stopped) {
song.openFromFile("anothersong.wav");
song.play();
}
test.Run();
this->sprite = Sprite(tex);
sprite.setTexture(tex);
Sprite sprite;
return test.Run();
if (w[i].clicked)
w[i].tex=CLICKED;
if it's not "clicked", then just check, if user clicked on this node earlier:else {
if (w[i].visited)
w[i].tex=VISITED;
else
w[i].tex=NOTVISITED;
}
w[j].tex=VISITED;
here:for (int j=0; j<size; j++) {
if (w[j].clicked) { w[j].clicked=false; w[j].tex=VISITED; break; }
}
But this didn't help. Maybe I should change textures somewhere else?
for (int i=0; i<size; i++) {
if (gm.MouseClicked(w[i].getSpr(), win, ev)) { //win - window, ev - event
for (int j=0; j<size; j++) {
if (w[j].clicked) { w[j].clicked=false; break; }
}
if (!w[i].visited) w[i].visited=true;
w[i].clicked=true;
}
if (w[i].clicked)
w[i].tex=CLICKED;
else {
if (w[i].visited)
w[i].tex=VISITED;
else
w[i].tex=NOTVISITED;
}
w[i].Update(win, gm, ev); //gm - gameobject
}
if (bound.intersects(sprbound))
I should addspr.setPosition(spr.getPosition().x, pad.getsprite().getPosition().y - spr.getTextureRect().height);
Is that right? Seems to work fine I already tried this, but later decided to write own collision detection system... Thanks!
sf::FloatRect bound = pad.getsprite().getGlobalBounds();
sf::FloatRect sprbound = spr.getGlobalBounds();
if (bound.intersects(sprbound)) {
//bounce
vec = 180.0f - vec;
yspeed = -yspeed;
}
#ifndef shapes_h
#define shapes_h
#include <SFML/Graphics.hpp>
class Paddle
{
private:
int x, y;
int width, height;
float speed;
sf::RectangleShape rect;
protected:
sf::RectangleShape& get();
public:
Paddle(int nx, int ny, int nwidth, int nheight, float nspeed);
~Paddle();
void init();
void draw(sf::RenderWindow& win);
void move(float);
};
#endif
#include "shapes.h"
Paddle::Paddle(int nx, int ny, int nwidth, int nheight, float nspeed) { x=nx; y=ny; width=nwidth; height=nheight, speed=nspeed; }
Paddle::~Paddle() { }
sf::RectangleShape& Paddle::get()
{
return rect;
}
void Paddle::init()
{
rect.setPosition(x, y);
rect.setSize(sf::Vector2f(width,height));
rect.setFillColor(sf::Color(255,255,255));
}
void Paddle::draw(sf::RenderWindow& win)
{
win.draw(rect);
}
void Paddle::move(float elapsed)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) get().move(speed * elapsed * -1, 0);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) get().move(speed * elapsed, 0);
}
#include <SFML\Graphics.hpp>
#include "shapes.h"
using namespace sf;
int main()
{
int w=800, h=600;
RenderWindow window(VideoMode(w,h), "Breakout");
window.setVerticalSyncEnabled(true);
Clock clock;
Time time = clock.getElapsedTime();
float elapsed = time.asMicroseconds();
Paddle pad((w-100)/2,(h-20-5),100,20,5);
pad.init();
while (window.isOpen()) {
Event evt;
while (window.pollEvent(evt)) {
if ((Keyboard::isKeyPressed(Keyboard::Escape)) || (evt.type == Event::Closed)) { window.close(); }
pad.move(elapsed);
clock.restart();
}
window.clear(Color::Black);
pad.draw(window);
window.display();
}
return 0;
}