이더리움에서 게임을 만든다? 크립토 좀비(4. 좀비 전투 시스템(2))

민식킴·2021년 3월 8일
0

크립토 좀비

목록 보기
7/9
사족

10일차.
이번 크립토키티는 아주 이해하기 쉬웠다. 배웠던 내용에 조금 더하기만 했기 때문일것,,(내가 잘하는건감?1)

CH.6,7 공통 로직 구조 개선하기 & 구조 더 개선하기

이전에 코드를 짜면서 보안을 위해 require문을 통해 컨트랙트를 실행시킨 주소와 좀비가 저장된 주소가 같은지 확인했었다.
require(msg.sender == zombieToOwner[_zombieId]);
이번엔 에초에 함수에서 부터 막을 수 있게 짜볼 것이다.

modifier reqq(uint _zombieId)
{
	require(msg.sender == zombieToOwner[_zombieId]);
    _;
}

바로 이렇게 함수 제어자를 만드는 것..! (modifier)

그리고

function 함수1(uint value) internal reqq(value2) { // 함수제어자 reqq
}

끝. 뭐야, 넘나 쉬운것

CH.8~11 공격으로 돌아가자! & 좀비 승리와 패배

별거 없었다,

Zombie storage myZombie = zombies[_zombieId];
Zombie storage enemyZombie = zombies[_targetId];

storage포인터를 사용하여 구조체 변수에 접근했다.
만일 이겼다면(난수 결과값이 기대값 이하일때)

if (rand <= attackVictoryProbability) {
      myZombie.winCount++; // 승리 카운트
      myZombie.level++; // 레벨
      enemyZombie.lossCount++; // 적좀비 패배 카운트
      feedAndMultiply(_zombieId, enemyZombie.dna, "zombie"); // 좀비 생성
}

그렇게 공격에 성공해 탄생한 나의 부하좀비..

레슨 4 끄읕
profile
우리의 꿈, 우리의 희망

0개의 댓글