【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を渡します。
②この関数では、msg.senderがzombieToOwner[_zombieId]と同じであるかどうかを確認せよ。requireステートメントを使用すること。
zombieToOwnerマッピングの_zombieIdがmsg.senderと同じがどうかを確認します。
③さらにzombies[_zombieId].nameが_newNameと同等になるよう設定せよ。
zombies配列の「_zombieId」に該当する、Zombie構造体のnameプロパティが_newNameと同等になるように設定します。
④changeNameの下にchangeDnaという名前の別の関数を作成せよ。定義および内容はchangeNameとほとんど同じだが、2番目の引数を_newDna(uint)とし、aboveLevelの_levelパラメーターに20を渡すこと。もちろん、ゾンビの名前を設定する代わりに、ゾンビのdnaに_newDnaを設定すること。
③と同様に処理します。
zombies配列の「_zombieId」に該当する、Zombie構造体のdnaプロパティが_newDnaと同等になるように設定します。
お疲れ様でした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network