Skip to content
Snippets Groups Projects
Commit 4ee4b5ab authored by Christoffer Holm's avatar Christoffer Holm
Browse files

Initial commit

parents
Branches master
No related tags found
No related merge requests found
Makefile 0 → 100644
CC := g++
FLAGS := -std=c++17 -Wall -Wextra -Wpedantic -Werror -Weffc++
LIB := -L${SFML_ROOT}/lib -I${SFML_ROOT}/include -lsfml-window -lsfml-graphics -lsfml-system
all: start v1 v2 v3 v4 v5 v6 v7 v8 v9
start: sfml_start.cc
$(CC) $(FLAGS) sfml_start.cc -o start $(LIB)
v1: sfml_v1.cc
$(CC) $(FLAGS) sfml_v1.cc -o v1 $(LIB)
v2: sfml_v2.cc
$(CC) $(FLAGS) sfml_v2.cc -o v2 $(LIB)
v3: sfml_v3.cc
$(CC) $(FLAGS) sfml_v3.cc -o v3 $(LIB)
v4: sfml_v4.cc
$(CC) $(FLAGS) sfml_v4.cc -o v4 $(LIB)
v5: sfml_v5.cc
$(CC) $(FLAGS) sfml_v5.cc -o v5 $(LIB)
v6: sfml_v6.cc
$(CC) $(FLAGS) sfml_v6.cc -o v6 $(LIB)
v7: sfml_v7.cc
$(CC) $(FLAGS) sfml_v7.cc -o v7 $(LIB)
v8: sfml_v8.cc
$(CC) $(FLAGS) sfml_v8.cc -o v8 $(LIB)
v9: sfml_v9.cc
$(CC) $(FLAGS) sfml_v9.cc -o v9 $(LIB)
# make sure that 'clean' is not run accidentally
.PHONY: clean
clean:
rm start v1 v2 v3 v4 v5 v6 v7 v8 v9
fighter.png

3.49 KiB

font.ttf 0 → 100644
File added
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
// har en tangent tryckts ned?
else if ( event.type == Event::KeyPressed )
{
auto key { event.key };
if ( key.code == Keyboard::Key::W )
{
sprite.move (0, -speed);
}
else if ( key.code == Keyboard::Key::S )
{
sprite.move (0, speed);
}
else if ( key.code == Keyboard::Key::A )
{
sprite.move (-speed, 0);
}
else if ( key.code == Keyboard::Key::D )
{
sprite.move (speed, 0);
}
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
// har en tangent tryckts ned?
else if ( event.type == Event::KeyPressed )
{
auto key { event.key };
if ( key.code == Keyboard::Key::W )
{
sprite.setRotation (0);
sprite.move (0, -speed);
}
else if ( key.code == Keyboard::Key::S )
{
sprite.setRotation (180);
sprite.move (0, speed);
}
else if ( key.code == Keyboard::Key::A )
{
sprite.setRotation (-90);
sprite.move (-speed, 0);
}
else if ( key.code == Keyboard::Key::D )
{
sprite.setRotation (90);
sprite.move (speed, 0);
}
}
}
/* hantera logiken */
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
if ( Keyboard::isKeyPressed (Keyboard::Key::W) )
{
sprite.setRotation (0);
sprite.move (0, -speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::S) )
{
sprite.setRotation (180);
sprite.move (0, speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::A) )
{
sprite.setRotation (-90);
sprite.move (-speed, 0);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::D) )
{
sprite.setRotation (90);
sprite.move (speed, 0);
}
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// skapa en klocka
Clock clock;
double const fps { 60.0 };
// beräkna hur lång tid vi har per frame
auto const target { milliseconds (1000.0 / fps) };
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
// börja tidtagning
clock.restart ();
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
if ( Keyboard::isKeyPressed (Keyboard::Key::W) )
{
sprite.setRotation (0);
sprite.move (0, -speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::S) )
{
sprite.setRotation (180);
sprite.move (0, speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::A) )
{
sprite.setRotation (-90);
sprite.move (-speed, 0);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::D) )
{
sprite.setRotation (90);
sprite.move (speed, 0);
}
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
// räkna ut hur lång tid vi har kvar tills nästa
// frame ska börja
auto wait_time { target - clock.getElapsedTime () };
// vänta tiden som blev över
sleep (wait_time);
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// skapa en klocka
Clock clock;
double const fps { 60.0 };
// beräkna hur lång tid vi har per frame
auto const target { milliseconds (1000.0 / fps) };
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
// börja tidtagning
clock.restart ();
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
auto old_position { sprite.getPosition () };
if ( Keyboard::isKeyPressed (Keyboard::Key::W) )
{
sprite.setRotation (0);
sprite.move (0, -speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::S) )
{
sprite.setRotation (180);
sprite.move (0, speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::A) )
{
sprite.setRotation (-90);
sprite.move (-speed, 0);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::D) )
{
sprite.setRotation (90);
sprite.move (speed, 0);
}
auto sprite_box { sprite.getGlobalBounds () };
auto circle_box { circle.getGlobalBounds () };
if ( sprite_box.intersects (circle_box) )
{
// om kollision, flytta tillbaks sprite
sprite.setPosition (old_position);
}
/* rita ut */
window.clear (); // rensa skärmen
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
// räkna ut hur lång tid vi har kvar tills nästa
// frame ska börja
auto wait_time { target - clock.getElapsedTime () };
// vänta tiden som blev över
sleep (wait_time);
}
}
#include <SFML/Graphics.hpp> // includes most things in SFML
using namespace sf;
int const width { 640 };
int const height { 480 };
int main ()
{
RenderWindow window {
VideoMode { width, height },
"SFML DEMO"
};
/* skapa en cirkel */
float const r { 16.0 };
CircleShape circle { r };
// placera cirkeln på skärmen
circle.setPosition (width / 2, height / 2);
// sätt vilken punkt som är origo
// i cirkeln (det är denna punkt som
// cirkelns position är specificerad ifrån
circle.setOrigin (r, r);
// sätt en bakgrundsfärg på cirkeln
circle.setFillColor (Color::Green);
/* ladda in en texture (bild) */
Texture texture;
if ( !texture.loadFromFile ("fighter.png") )
{
// gick inte att ladda bilden
return 1;
}
// skapa sprite
Sprite sprite { texture };
sprite.setPosition (width / 2, height / 2);
// sätt origin på sprite till mitten
auto size { texture.getSize () };
sprite.setOrigin (size.x / 2, size.y / 2);
float const speed { 4.0 };
// skapa en klocka
Clock clock;
double const fps { 60.0 };
// beräkna hur lång tid vi har per frame
auto const target { milliseconds (1000.0 / fps) };
/* skapa text */
Font font;
if ( !font.loadFromFile ("font.ttf") )
{
// kunde inte ladda typsnitt
return 2;
}
// skapa text objekt
Text text { "Demo", font };
auto bounds { text.getGlobalBounds () };
text.setPosition ((width - bounds.width) / 2, 0);
// loopa sålänge fönstret finns
while ( window.isOpen () )
{
// börja tidtagning
clock.restart ();
/* hantera events */
Event event;
// hämta ett event i taget
while ( window.pollEvent (event) )
{
if ( event.type == Event::Closed )
{
window.close ();
}
// har en mus-knapp tryckts?
else if ( event.type == Event::MouseButtonPressed )
{
auto mouse { event.mouseButton };
// är det vänster musknapp?
if ( mouse.button == Mouse::Button::Left )
{
// flytta cirkeln
circle.setPosition (mouse.x, mouse.y);
}
}
}
/* hantera logiken */
auto old_position { sprite.getPosition () };
if ( Keyboard::isKeyPressed (Keyboard::Key::W) )
{
sprite.setRotation (0);
sprite.move (0, -speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::S) )
{
sprite.setRotation (180);
sprite.move (0, speed);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::A) )
{
sprite.setRotation (-90);
sprite.move (-speed, 0);
}
else if ( Keyboard::isKeyPressed (Keyboard::Key::D) )
{
sprite.setRotation (90);
sprite.move (speed, 0);
}
auto sprite_box { sprite.getGlobalBounds () };
auto circle_box { circle.getGlobalBounds () };
if ( sprite_box.intersects (circle_box) )
{
// om kollision, flytta tillbaks sprite
sprite.setPosition (old_position);
}
/* rita ut */
window.clear (); // rensa skärmen
window.draw (text); // rita ut texten
window.draw (circle); // rita ut cirkeln
window.draw (sprite); // rita ut bilden
window.display (); // visa ändringarna
// räkna ut hur lång tid vi har kvar tills nästa
// frame ska börja
auto wait_time { target - clock.getElapsedTime () };
// vänta tiden som blev över
sleep (wait_time);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment