\

코딩/만든 프로그램

C++ 앱만들기 프로그램으로 있어보이는 타이머 만들기

코딩하는 메추라기 2021. 7. 21. 20:17
반응형

안녕하세요! 코딩하는 메추라기 케일입니다!

오늘은 제가 앱만들기 프로그램으로 만든 타이머를 들고 와보려고 합니다.

일단 

 

겉모습은 이렇게 생겼습니다.

첫번째로 위에 타이머 1(Timer1)

은 그냥 말 그대로 초시계 역할을 합니다.

 

두 번째로 위에 MediaPlayer1과 OpenDialog1은 노래를 틀어주는 역할을 합니다.

OpenDialog1은 제가 다운받은 노래의 경로를 알려줍니다.

MediaPlayer1은 OpenDialog1의 노래의 경로를 따라 노래를 틀어줍니다.

 

밑에 Edit1, Edit2, Edit3 이 따로 있고

오른쪽부터 가장 오른쪽 Edit1은 시간, Edit2는 분, Edit3은 초를 나타냅니다.

 

가장 밑에 버튼 3개가 있는데요

오른쪽부터 가장 오른쪽 Button1은 시작, Button2는 중지, Button3은 초기화를 나타냅니다.

 

그럼 이제 코드를 보겠습니다.

맨 처음 들어왔을 때 바로 타이머가 시작되면 안 되겠죠!

그래서 제가 TImer1->Enabled = false;로 타이머가 맨 처음에 실행되지 못하게 했습니다.

Button1(시작 버튼)을 클릭했을때

void __fastcall TForm4::Timer1Timer(TObject *Sender)
{
  if (StrToInt(Edit3->Text) >= 0) {
    Edit3->Text = StrToIntDef(Edit3->Text, 0) - 1;
    if (StrToInt(Edit3->Text) < 10) {
      if (StrToInt(Edit3->Text) != -1) {
        Edit3->Text = "0" + Edit3->Text;
        }
      }
    if (StrToInt(Edit3->Text) == -1) {
      if (StrToInt(Edit2->Text) == 0 && StrToInt(Edit1->Text) == 0) {
        Timer1->Enabled = false;
      }
      else if (StrToInt(Edit2->Text) > 0) {
        Edit2->Text = StrToIntDef(Edit2->Text, 0) - 1;
        if (StrToInt(Edit2->Text) < 10)

          Edit2->Text = "0" + Edit2->Text;
        }

        Edit3->Text = 59;
      }
      else if (StrToInt(Edit2->Text == 0) && StrToInt(Edit1->Text) > 0) {
        Edit1->Text = StrToIntDef(Edit1->Text, 0) - 1;
        if (StrToInt(Edit1->Text) < 10) {
          Edit1->Text = "0" + Edit1->Text;
        }
        Edit2->Text = 59;
        Edit3->Text = 59;
      }
    }

  if (StrToInt(Edit3->Text) == 0 && StrToInt(Edit2->Text) == 0 && StrToInt(Edit3->Text) == 0) {
    Timer1->Enabled = false;
    MediaPlayer1->FileName = OpenDialog1->FileName;
    MediaPlayer1->Play();
    }
  }
}

암튼 되게 뭐가 긴데 이해하면 간단합니다.

저게 Edit3->Text 즉 초가 0초가 될 때

만약 Edit2->Text 즉 분이 1분 이상이면 분이 1분씩 깎여야 하잖아요.

궁까 0분 0초이면 알람이 울려야 하는데

1분 0초이면 그 다음에 0분 59초가 돼야 하잖아요.

 

똑같이 1시간 0분 0초일땐 0시간 59분 59초 돼야 하는것, 0시간 0분 0초일때 노래 나오는 것 그런 것이 저 코드에 들어 있어요.

 

또한 이걸 실행시키면 10초가 남았을때 9초가 아니라 09초가 되고 8초가 아니라 08초가 됩니다.

    if (StrToInt(Edit3->Text) < 10) {
      if (StrToInt(Edit3->Text) != -1) {
        Edit3->Text = "0" + Edit3->Text;
        }
      }

이게 바로 그 역할을 합니다.

초가 10초 이하이고 -1이 아니라면 그 앞에 0을 붙여줍니다.

분도, 시간도 마찬가지로 10분, 10시간 이하이면 0이 앞에 붙습니다.

 

 

마지막으로 이코드

이것은 Button2즉 중지 버튼을 눌렀을 때 노래를 끄고 Timer1->Enabled을 false로 한다.

Button3, 즉 초기화 버튼을 눌렀을 때 시간, 분, 초를 다 0으로 세팅하고 모든 노래를 끄고 Timer1->Enabled를 다시 false로 바꿉니다.

 

실행시켜서 

이렇게 해서 실행시키면

잘 되는 걸 보실 수 있습니다.

 

오늘은 여기까지 입니다!!

다음에 다른 글로 뵙겠습니다!!!