SFML 프로젝트

LJ-hyeok·2022년 11월 30일

SFML

목록 보기
1/1
post-thumbnail

미리보기 (미완)


SFML

beakjoon
SFML(Simple and Fast Multimedia Library)은 멀티미디어 API로 시스템, 윈도우, 그래픽, 오디오 및 네트워크 등의 라이브러리를 지원한다. 잘 이용하면 윈도우에서 창을 생성해 게임 제작도 가능하다. 그래픽 API 중에서 사용하기 가장 쉽다고 알려져 있다.
알고리즘 문제만 풀기 지루하던 찰나에 SFML을 알게 되었고 이걸 사용해서 간단한 게임을 구현해 보려고 한다.


Visual Studio에 SFML 라이브러리 추가

https://www.sfml-dev.org/download.php


클래스 선언

class MyCircle {
public:
	sf::CircleShape circle;
	double radius, diameter;
	double position_x, position_y;
	double velocity_x, velocity_y;
	double acceleration_x, acceleration_y;

public:
	MyCircle(double x, double y, double rad);
	double getPosx();
	double getPosy();
	void move();
	sf::CircleShape getCircle();
};

포탄 객체는 위치, 속도, 가속도의 2차원 물리값을 갖고 있다.


포탄의 물리값

발사한 순간의 속력을 V라고 할 때 속도를 X축 방향과 Y축 방향으로 나누어 저장했다.
윈도우 창의 좌표계는 Y축을 기준으로 올라갈 때 값이 감소하므로 -1을 곱했다.

velocity_x = V x cos(θ)
velocity_y = -1 x V  x sin(θ)

중력에 의해 땅에 떨어지므로 Y축 방향으로 중력가속도를 저장했다.

acceleration_x = 0
acceleration_y = 0.098

함수구현

void MyCircle::move() {
	position_x += velocity_x;
	position_y += velocity_y;
	velocity_y += acceleration_y;
	circle.setPosition(position_x, position_y);
}
profile
위이이잉

0개의 댓글