매거진 개발실습

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

스마트 컨트랙트 공부

by SKKRYPTO


1*2fu6l5fK-vz7vHWWnngeog.jpeg


Lesson4 시작하겠습니다.

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


1*aVVxhyxYtErF3opzEBhAug.png


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

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


1*T26lhjtQcBf7VyGido6o3Q.png


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


1*MviSUezLbIljfV1bOONdGA.png


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


1*wOhjz2TsDNmWxah3OQ4wBw.png


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


1*UPurid6z8-ud6THIZff57g.png


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


1*wQhorl3W5HQeQ3Z0Gf8pPg.png


코드를 작성해 줍시다.


1*XA52q_dniHMHQuibxzf2Ng.png


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


1*EF1OcQIlPyViaPwy-igDBg.png


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


1*4dEq1L2sFITx7d4UFQCMzA.png


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

1*hy0RLZ5qRKIcNRtAxjpNXQ.png


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


1*S98EGNNiufCxtZGyMYq-vA.png


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


1*6quOXbBtMil4diStMgOoWQ.png


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


1*aLxWlY_EsogIEylI11oJQg.png



1*E9ImZjs4rpiH2Tv5Lrid_w.png


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


1*bplJSdP3KtwqZ4JNE7Ve1Q.png


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


1*qqvopt2cDQYI24-v2nncqw.png


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


1*jGwFeEyvUCl0rorv1eXLRw.png


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

1*ZDG3lmKnOWufL4ALb3RC6g.png


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


1*QGesgT4X6OmIgyJDNExUkA.png


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


1*t-Htw4BHwLM9GA-HuNwvyA.png


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


1*qYLtJtCjLh27eiO9jNcBAA.png


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


1*lzfbfsRpB3-0obj42jHGSQ.png


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


1*VvaAUUSgOU924yeqE1YT4w.png


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

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





이정민(dlwoabsdk@gmail.com)

keyword
매거진의 이전글[크립토 좀비 실습] - Lesson 3