방개
비밀번호를 잊어버리셨나요?

질문

기초적인건데 이해가 안되서 질문드립니다.

    • 글자 크기

1. 이미지서치에서 로딩.png 를 찾고 "로딩이미지 찾음" 메세지가 출력됩니다.

 

2. 픽셀서치에서 "로딩 실패" 메세지 출력됩니다.

 

여기부터 이해가 잘안가는데 그 뒤에 이미지서치에  "로딩 이미지 못찾음" 메세지가 출력 됩니다.

 

이미지서치 분기에서 에러레벨 0을 선택했는데 왜 다시 에러레벨 1을 실행하는건지 혼란스럽네요.

로딩.png를 찾았으면 아래는 출력이 안되야 맞는거 같은데 제가 잘못알고 있는건가요.

else if 로 변경 해줘야만 생각대로 스킵되는데 원래 이런건지.. 혼란스럽네요.

 


F1::
Loop
{
	Imagesearch, OutX, OutY, 22, 12, 2239, 40, 로딩.png
	if (ErrorLevel = 0)
	{	
		MsgBox , , ,  로딩 이미지 찾음, 1	
		
		wX := OutX + 40
		wW := wX + 512

		Sleep, 500
			
		PixelSearch, OutX, OutY, wX, 80, wW, 92, 0xFFFFFF, , Fast RGB
		if (ErrorLevel = 0)
		{
			MsgBox , , , 로딩 성공, 1
			
			Sleep, 500
			
			break
		}
		if (ErrorLevel = 1)
		{
			MsgBox , , ,  로딩 실패, 1
			
			Sleep, 500
		}
		if (A_index = 10)
		{
			MsgBox , , ,  탈출!, 1
			break
		}
	}
	if (ErrorLevel = 1)
	{
		MsgBox , , ,  로딩 이미지 못찾음, 1

	}
	if (stop = 1 )
	{
		break
	}
}
return


F2::
stop := 1
return

 

    • 글자 크기
댓글 5
  • 2020.11.15 00:08 댓글

    이미지서치의 errorlevel로 조건분기하는 부분이 if로 쓰여졌네요.

    당연히, 해당 if문은 픽셀서치 이후에도 조건검사를 합니다.

     

    이를 방지하는게 else if고요.

  • 2020.11.15 00:12 댓글

    주신 스크립트를 간략화 하면 이렇습니다.

     

    a := 0
    
    if (a = 0)
    {
    	a := 1
    }
    if (a = 1)
    {
    	MsgBox, ?
    }

    자, 이제 문제점이 보이시나요?

  • 말미잘글쓴이
    2020.11.15 01:16 댓글

    if는 조건만 맞다면 앞에 오던 뒤에오던 실행되고 if 뒤에 따라오는 else if 는 조건이 맞더라도 선행 조건문이 만족되면 스킵 된다.

    뭔가 확신은 안서지만.. 그래도 어느정도 정리는 되는것 같습니다. 감사합니다!

     

    a := 0

    if (a = 1)
    {
        a := 1
        MsgBox, ?
    }

    else if (a = 0)
    {
        a := 1
        MsgBox, ??
    }

    else if (a = 0)
    {
        MsgBox, ???
    }

    else if (a = 1)
    {
        MsgBox, ???
    }

    if (a = 1)
    {
        a := 1
        MsgBox, ????
    }

     

  • 말미잘님께
    2020.11.15 15:26 댓글

    얼추 맞습니다. 다만 else if를 쓰면 '조건이 맞더라도 스킵'이 아니라, 아예 조건검사를 하지 않습니다. 선행조건문 이후에 그 밑에 있는 else if (혹은 else)는 모두 툥째로 건너뛰어지는것이지요.

  • 프날님께
    말미잘글쓴이
    2020.11.16 17:54 댓글

    추가 답변 감사합니다. 프날님 강좌를 좀 더 복습해봐야겠습니다. 이게 보고 돌아서면 잊어버리네요.. ㅠㅠ

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...