初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

【CryptZombies】レッスン3チャプター9:ゾンビ修飾子

aboveLevel修飾子を使って次のような関数を作ります。

・ゾンビのレベルが2以上なら、ユーザーは名前を変更できるようになる。

・ゾンビのレベルが20以上なら、カスタムDNAを与えることができるようになる。

// ユーザーの年齢を格納するマッピングだ:
mapping (uint => uint) public age;

// 一定の年齢よりユーザーの年齢が高いことを要件とする修飾子だ:
modifier olderThan(uint _age, uint _userId) {
  require (age[_userId] >= _age);
  _;
}

// 車の運転は16歳以上だな(米国の場合だ。日本は18歳だな)。
function driveCar(uint _userId) public olderThan(16, _userId) {
  //  関数のロジックだ
}

 

テストの実行

①changeNameという関数を作成せよ。引数は_zombieId(uint)と、_newName(string)の2つとする。またexternalで宣言せよ。関数はaboveLevel修飾子を持ち、_levelパラメーターに2を渡すこと。(_zombieIdも忘れずに渡すようにな!)

aboveLevel修飾子は、_level(uint)と_zombieId(uint)の2つの引数を持っています。

ここでは、_levelパラメーターに2を渡します。

f:id:nomadomama:20181210011232p:plain

 

②この関数では、msg.senderがzombieToOwner[_zombieId]と同じであるかどうかを確認せよ。requireステートメントを使用すること。

zombieToOwnerマッピングの_zombieIdがmsg.senderと同じがどうかを確認します。

f:id:nomadomama:20181210011611p:plain

 

③さらにzombies[_zombieId].nameが_newNameと同等になるよう設定せよ。

zombies配列の「_zombieId」に該当する、Zombie構造体のnameプロパティが_newNameと同等になるように設定します。

f:id:nomadomama:20181210012523p:plain

 

④changeNameの下にchangeDnaという名前の別の関数を作成せよ。定義および内容はchangeNameとほとんど同じだが、2番目の引数を_newDna(uint)とし、aboveLevelの_levelパラメーターに20を渡すこと。もちろん、ゾンビの名前を設定する代わりに、ゾンビのdnaに_newDnaを設定すること。

③と同様に処理します。

zombies配列の「_zombieId」に該当する、Zombie構造体のdnaプロパティが_newDnaと同等になるように設定します。

f:id:nomadomama:20181210012545p:plain

 

お疲れ様でした!

 

 

<参考>

CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network