사용자 도구

사이트 도구


raylib:pong게임
pong게임

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
raylib:pong게임 [2023/10/02 23:59] – enum class 이거니맨raylib:pong게임 [2023/11/20 00:29] (현재) 이거니맨
줄 1: 줄 1:
 ~~stoggle_buttons~~ ~~stoggle_buttons~~
 +
 +
 +{{:raylib:raylib_chapter4.png?600|Raylib Pong Chapter4}}
 +
  
 pong 게임을 만들어보자   pong 게임을 만들어보자  
줄 948: 줄 952:
 ==== 3. 게임 리셋하기 ====  ==== 3. 게임 리셋하기 ==== 
  
 +=== 가. 개념 === 
 +
 +공이 양 옆으로 빠지면 공과 플레이어 위치를 각각 원위치로 다시 세팅해주면 된다. 플레이어와 에네미는 이미 초기화하는 함수를 만들어 두었으므로 어렵지 않다 따라서 공의 Reset 함수를 만들면 된다.
 +
 +공은 리셋될때마다 다른 방향으로 튀게 할 것이므로, 랜덤하게 속도를 바꿔줘야 한다. 
 +
 +=== 나. 공의 리셋함수 ===
 +
 +ball.h에 reset()함수를 void로 선언하자. 
 +
 +이후에 ball.cpp에 다음과 같이 함수를 만든다. 
 +
 +<code raylib>
 +void Ball::Reset()
 +{
 +    x = screenWidth / 2;
 +    y = screenHeight / 2;
 +    radius = 20; 
 +
 +    int speed_choice[2] = {-1, 1};
 +    speed_x *= speed_choice[GetRandomValue(0, 1)]; 
 +    speed_y *= speed_choice[GetRandomValue(0, 1)];
 +
 +}
 +</code>
 +
 +GetRandomValue는 레이라이브에서 제공하는 랜더 값 리턴 함수이다. 0부터 1까지 중에서 하나를 고르게 하는 것이다. 
 +우리는 speed_choice라는 int 배열 중에서 0과 1번째 값을 랜덤하게 고르게 된다. 
 +따라서 기존의 공의 스피드를 랜덤하게 반전시킬 수 있다. 
 +
 +=== 다. game.cpp === 
 +
 +Update()함수 안에 다음과 같이 수정하면 된다.
 +
 +<code raylib>
 +    if (ballResult == ColResult::Player) 
 +    {
 +        PlayerScore++;
 +        ball.Reset();
 +        player.Init();
 +        AI.Init();
 +    }else if(ballResult == ColResult::Enemy)
 +    {
 +        EnemyScore++;
 +        ball.Reset();
 +        player.Init();
 +        AI.Init();
 +    };
 +</code>
 +
 +
 +==== 4. 결론 ==== 
 +
 +{{:raylib:raylib_chapter4.png?600|Raylib Pong Chapter4}} 
 +
 +이제 게임을 완성하였다.
 +
 +완성된 소스파일은 다음과 같다.
 +
 +{{ :raylib:raylibpong_chap4.zip |Raylib Pong Chapter4}}
  
 +여기까지 만들어봤으면 기본적인 객체지향에 대하여 이해가 되었을 것이다. 
 +이후에는 [[raylib:flappybird:flappy_bird_만들기|Flappy Bird만들기]]를 만들어 보자. 
raylib/pong게임.1696258771.txt.gz · 마지막으로 수정됨: 2023/10/02 23:59 저자 이거니맨