이더리움에서 게임을 만든다? 크립토 좀비(2. 좀비가 희생물을 공격한다2)

민식킴·2021년 2월 28일
0

크립토 좀비

목록 보기
3/9
사족

6일차
이해하기 힘든부분이 중간중간있었으나 그래도 느낌오는 느낌

CH.8 좀비 DNA

생성되는 좀비 DNA는 좀비DNA와 희생물DNA를 조합하여 나온다.(여기서는 단순히 평균값을 내었다.)

CH.9: 함수 접근 제어자 더 알아보기

전에 나는 private와 public이란 함수접근 제어자를 알아보았다.
private은 컨트랙트 외부에서 접근을 제한한단 뜻(상속된 컨트랙트도 불가능), public은 전체공개한단 뜻이다.
여기에 internal과 external이란 제어자도 있는데,
internal은 private과 비슷한데, 상속된 컨트랙트도 접근할 수 있다!
external은 신기한 친구인데 컨트랙트 내에서 호출할 수 없고 오로지 컨트랙트 외부에서만 호출 할 수 있다.

CH.10: 좀비가 무엇을 먹나요?

이 크립토 좀비들은 크립토 키티(!)를 아주 좋아한다고 한다.
정말이고 말고
참고로 크립토 키티는 구글 이미지 검색

그러니까 블록체인 상에서 존재하는 크립토 키티의 컨트랙트에 접근하겠단 뜻이다.(정보(키티ID)만 따겠다는 것이다.)

그러기 위해선 우선 인터페이스를 설정해야 한다.

contract A_Interface {
  function A_function(value) public view returns (uint);
}
~//다른 컨트랙트에서
A_interface의 주소 = 0x~
A_Interface B_contract = A_Interface(A_Interface의 주소)
uint num = B_contract.A_function(msg.sender); // A_function함수를 호출!
// msg.sender는 현재 호출자로서 

예시 하나 더

struct Voter {
        uint weight; // weight 는 대표단에 의해 누적됩니다.
        bool voted;  // 만약 이 값이 true라면, 그 사람은 이미 투표한 것 입니다.
        address delegate; // 투표에 위임된 사람
        uint vote;   // 투표된 제안의 인덱스 데이터 값
}
    
// 이것은 각각의 가능한 주소에 대해
// `Voter` 구조체를 저장하는 상태변수를 선언합니다.
mapping(address => Voter) public voters;

chairperson = msg.sender; // chairperson은 msg.sender, 즉 나의 주소가 되고
voters[chairperson].weight = 1; // 내 주소값에 저장된 구조체에서 weight를 변화시킨다.

다른 컨트랙트와 상호작용하고자 하는 함수만을 선언할 뿐 다른 함수나 상태 변수는 언급하지 않는다.
여기서 우리는 키티함수를 따와서 키티ID를 받아 먹이로 줄 것이다.

CH.12 다수의 반환값 처리하기

나는 c를 배웠던 사람으로서 리턴값이 하나밖에 없는것이 불편했는데

솔리디티는이것이됩니다_

function multipleReturns() internal returns(uint a, uint b, uint c) {
  return (1, 2, 3);
}

function processMultipleReturns() external {
  uint a;
  uint b;
  uint c;
  (a, b, c) = multipleReturns(); // 이게 된다고?!?!
  (,,c) = multipleReturns(); // 하나의 리턴값만 받을수도 있다!(빈칸에 유의)
}

CH.13 If 문

전에 if문과 비슷한 require문을 알아봤는데 솔리디티에도 온전히 if문이 있다.

if (keccak256(sandwich) == keccak256("햄치즈")) { // 쓰는것 역시 같다.
    eat();
}

보너스

만약 좀비가 '키티'를 좀비로 만들었다면 그증거로 고양이 꼬리와 다리가 생기게 하고싶다.
이를 위해 키티로 인해 생성된 좀비의 Id는 마지막 두자리를 99로 만들 것이다.
마지막 두자리를 99로 만드는 방법:
A = A - A % 100 + 99;
A = (A / 100) * 100 + 99; 등등

인터페이스로 이쁘게 만들면 이렇게 선택하는 창이 나오고 선택하면...
좀비고양이가 됬다!!!
다시한번 말하지만 우리 키티는 전혀 해가 없다! Id만 빌려온 것 뿐!


ps

직접 내가 솔리디티를 짜면서 어떤 목표로 짤것이고 어떻게 구현되는지 눈으로 볼수 있어 재미도 있고 흥미도 많이 생긴다. 얼마나 도움이 될진 모르겠지만 이렇게 즐겁게 공부할 수 있다는 것 자체가 감사하다. 레슨 3에서 보자~

profile
우리의 꿈, 우리의 희망

0개의 댓글