열거형 enum
enum class Side {LEFT, RIGHT, NONE};
Side side;
side = Side::LEFT;
if (side == Side::RIGHT)
{ }
else
{ }
- 프로그래머가 정의해서 사용하는 ‘사용자 정의 데이터형’이다.
- Side : 데이터 형 이름
- 데이터 형이 가진 값을 같이 선언하는 것이다.
- 열거에 선언한 요소는 하나하나가 정수형 인덱스를 가진다.
상수 const
const int NUM_BRANCHES = 6;
sf::Sprite spriteBranch[NUM_BRANCHES]; //가지
키보드 입력 - 이벤트
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
sidePlayer = Side::LEFT;
}
// 이벤트 루프 : 이벤트 처리 구간
sf::Event event;
while (window.pollEvent(event))
{
switch (event.type)
{
case sf::Event::Closed:
window.close();
break;
case sf::Event::KeyPressed:
switch (event.key.code)
{
case sf::Keyboard::Escape:
printf("ESC");
break;
}
break;
case sf::Event::KeyReleased:
break;
}
}
- 눌렸을때, 떨어졌을때, 눌림과 떨어짐 그 사이 3개의 상황이 있다.
- 하나의 처리는 한 프레임에 하나씩 일어난다.
pressed 처리
bool isLeft = false; //눌렸는지 확인 변수
while (window.isOpen())
{
bool isLeftDown = false; //눌린 첫 프레임의 확인 변수
bool isLeftUp = false;
sf::Event event;
while (window.pollEvent(event))
{
switch (event.type)
{
case sf::Event::KeyPressed:
switch (event.key.code)
{
case sf::Keyboard::Left:
if (!isLeft)
{
isLeftDown = true;
}
isLeft = true;
break;
}
break;
case sf::Event::KeyReleased:
switch (event.key.code)
{
case sf::Keyboard::Left:
isLeft = false;
isLeftUp = true;
break;
}
}
- 플래그 변수 2개 사용
- 이유 : 한 플래그는 갱신이 되면 안되기 떄문이다.
- 플래그 2번 false 무한 반복
- 첫 플래그 false 검사 → 되면 플래그 2번을 true
- 플래그1번을 true하고 플래그 2번 true 확인
- 플래그 1번이 true 이기에 플래그 2번이 false가 나오기에 조건 참이 안나오게 된다.
- 결과 : 반복 입력이 1번만 들어가게 된다.
'공부 > SFML' 카테고리의 다른 글
| 씬 매니저, 프레임워크 클래스, 백그라운드 오브젝트, 실수 난수 출력, 트리 (3) |
2025.06.30 |
| 게임 오브젝트, 스프라이트 게임 오브젝트, 텍스트 게임 오브젝트, 디파인즈, 유틸즈, 씬, 게임 씬, 반복적인 include 처리 (0) |
2025.06.27 |
| vector, iterator, list, LinkedList 자료구조, SFML Framework 준비, InputManager, 싱글턴 디자인 패턴, Resource Manager, map, 비주얼 스튜디오 자체 에러 문제 해결 (3) |
2025.06.26 |
| 이벤트 루프, 문자 UI, 문자열 연결, 타임 바, 사운드, 가속도 (2) |
2025.06.13 |
| SFML - 벌 구름 나무 출력, SFML - 벌 구름 이동, SFML - 벌 구름 크기 변경, 월드 좌표계, 로컬 좌표계, 구조체, 난수, 랜덤출력, deltaTime, 등속도 운동, 플립, 벡터2D (1) |
2025.06.11 |