brunch

매거진 개발실습

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Mar 06. 2020

[크립토 좀비 실습] - Lesson 4

스마트 컨트랙트 공부



Lesson4 시작하겠습니다.

여기에서는 저번에 한것에 이어 좀비 전투 시스템을 만드는 것을 다루고 있습니다.            



챕터 1에서는 함수 제어자에 대해서 다시 언급하고 있습니다. 그 중 어디서 호출될 수 있는 지 접근 제어자(private, internal, external, public)에 대한 설명과 상태 제어자인(view, pure), 사용자 정의 제어자에 대해서 설명하고 있고 이러한 제어자들은 함수 하나에 함께 사용할 수 있다는 것을 말하고 있습니다.

또한 여기서는 payable이라는 제어자에 대해서 소개하는데요 이더를 받게 해줄 수 있는 특별한 함수 유형이라고 합니다!      



직접 해보기에서는 o.oo1 이더를 레벨업을 하는 금액으로 설정하여 이더를 받으면 좀비의 레벨을 올려주는 함수를 만들어 주었습니다.            



챕터 2에서는 이더를 받고 인출하는 함수에 대해서 소개합니다. this.balance라는 것과 transfer를 이용하여 이더를 인출합니다.      



다음과 같이 직접 해보기에 나와있는 대로 함수를 작성해 줍니다.            



챕터 3에서는 좀비어택.sol 이라는 파일을 만들어 전투를 위한 기능을 추가하려고 합니다. 바로 직접 해보기로 넘어가      



코드를 작성해 줍시다.            



챕터 4에서는 전투할 때 무작위성을 위해 난수 발생에 관한 것으로 keccak256를 통해 난수를 발생시킨다고 합니다.            



마찬가지로 코드 작성을 해줍시다.            



챕터 5에서는 아까 만든 난수에 이어서 좀비 전투에서 결과를 계산하기 위한 변수와 함수를 추가하려고 합니다.            


변수와 함수의 관한 코드를 작성 합니다.            



챕터 6에서는 기존의 구조가 보안에 취약하다는 것을 알려주면서 attack 함수를 실행시킬 때 오로지 소유자 자신만 공격하게 만드는 방법에 대해서 말합니다.            



따라서 다음과 같이 제어자를 추가하고 함수를 수정해 줍니다.            





ownerOf 함수를 추가 해준 뒤 require부분은 제거해 줍니다.            



이 챕터 또한 계속 코드 작성입니다. 바로 작성해 줍시다.            



myZombie와 enemyZombie를 설정하여 각 좀비를 가리키는 포인터 같은 역할(주소를 가리키는)을 해주는 것을 만들었습니다.            



챕터 9에서는 좀비가 이겼을 시, 좀비가 졌을 시에 필요한 변수들을 설정하고 기존 함수들을 수정합니다.            


따라서 변수 선언과 좀비를 만들 때 0승 0패로 시작하게 0, 0을 추가해 줍니다.            



챕터 10에서는 좀비의 공격해서 승리할 확률이 70퍼 이므로 아까 만들어둔 rand를 통해 70퍼 보다 같거나 작음(즉 숫자 상 70이내이므로 이기는 것)이면 이기게 만들어주는 코드를 작성해줍니다.      



if 문을 통해 작성하였습니다.            



챕터 11은 그 전 챕터에 이어서 좀비가 졌을 시 상황에 대해서 코드 작성을 요구합니다.      



그래서 else문을 통해 졌을 때의 상황을 코드로 작성해 줍시다.            



챕터 12에서는 지금까지 해온 좀비 공격 시스템을 직접 해보는 시간으로 좀비가 공격을 하게 되면 좀비의 wincount가 증가 하는 모습을 보실 수 있습니다!

이렇게 Lesson4를 마쳤습니다. 감사합니다.





이정민(dlwoabsdk@gmail.com)

매거진의 이전글 [크립토 좀비 실습] - Lesson 3
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari