작성
·
382
0
여기서 처음에 연습문제로
Hp를 100으로 두고 MaxHp를 150으로 두었을때
1번 키 입력시 데미지 10을 입게하고
2번 키 입력시 체력 20을 회복하게 하는 기능을 만드는 연습문제였는데
제가 좀 더 추가해서
현재 체력을 확인하는 기능이나
0이하로 떨어졌을시 데미지도 더이상 입을수없고 회복도 불가능하게 하거나
최대체력이면 최대체력이라서 회복이 불가능하다라는 문구가 나온다거나
하는식의 몇가지 응용아닌 응용해서 좀 더 살을 붙여서 풀고있었는데
의문이 드는 버그? 같은게 있어서
이게 어째서 일어나는가 싶어서 질문을 드립니다
[현재 HP 확인 노드]
키보드 3을 누를 시 HP를 카운트하여 알려준다.
[데미지 받는 노드]
키보드 1을 누를 시 HP가 0보다 작을 경우 당신은 죽었습니다 라는 문구가 나온다.
키보드 1을 누를 시 HP에서 데미지를 마이너스한 HP를 카운트하여 알려준다.
[체력회복하는 노드1]
키보드 2를 누를시 HP가 0보다 작을 경우 이미 사망하여 회복할 수 없습니다 라는 문구가 나온다.
키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 크거나 같을경우 이미 최대 체력입니다 라는 문구가 나온다.
키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 작을 경우 회복된 이후의 HP를 카운트하여 알려준다.
[체력회복하는 노드2]
키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 클 경우 HP를 MaxHP로 세팅하고 최대 체력으로 회복하였습니다라는 문구와 함께 최대HP를 카운트하여 알려준다.
여기서
체력확인이랑 데미지는 문제없었는데
체력을 회복할 때
다른곳에서는 문제가 전혀없었는데
체력이 120일때 회복을 하면 현재체력 120+ 체력회복 20으로 체력이 140이 되어야하는데
140을 건너뛰고 150으로 가더라구요...
데미지 입을때는 140 130 120 110 100 90 80 쭉쭉 건너뛰지않고 잘 내려가고
회복할때도 40일때 회복하면 60, 60일때 회복하면 80, 100 120 잘 가다가
120일때만 30이 회복되는게 왜그런가 궁금합니다!
답변 2
0
안녕하세요 벌써 5개월이 지났는데 이 문제에 대해서 고민 해결하셨는지 모르겠습니다.
저도 공부할겸..그리고 다른 학습하시는 분들을 위해서 제 의견을 한번 말씀드려봅니다!
체력회복하는 노드1에서 변수의 덧셈연산과 비교연산을 동시에 물려놔서 에러가 생긴거같아요... 저도 정확한 메카니즘은 모르겠습니다 120 -> 140 갈때 HP가 140으로 값으로 되면서 비교연산 진행할때 갑자기 hp를 또 더해버려서 160으로 인식해서 바로 풀HP판정을 내린건가 싶기도 하구요
그래서 덧셈연산과 비교 연산을 나눠주니까 질문자님께서 의도하신 기능이 잘 되더라구요!
AI인턴 너무 폐급이네요 뭔 오버플로우인지... 암만 몰라도 그건 아닌거같은디;;
아무튼 다들 건승하시길 바랍니다
0
안녕하세요, 인프런 AI 인턴입니다.
현재 체력이 특정 값일 때 회복하는 과정에서 예상치 못한 결과가 나오는 상황을 겪고 계신 것 같네요. 해당 문제와 유사한 상황에 대해 강사님이 직접 답변하신 사례가 있으니, 아래 링크를 참고해 보시는 것을 추천드립니다.
위 링크에서 강사님은 오버플로우 문제에 대해 언급하시며, 체력 회복 로직에서 최대 체력을 넘어서는 문제를 해결하는 방법에 대해 설명하고 계십니다. 현재 체력이 120일 때 회복하면 140이 되어야 하는데 150으로 넘어가는 문제를 해결하는 데 도움이 될 수 있습니다.
원하시는 답변이나 더 자세한 해석이 필요하시면 질문&답변 게시판의 해당 게시글에 직접 댓글을 추가로 남기셔서 상황을 설명하고 추가 질문을 하시는 것도 좋은 방법입니다.