クリプト

CryptoZombies奮闘記その4 -マッピングとmsg.sender-

alisnoga's icon'
  • alisnoga
  • 2018/07/06 06:22


Content image

今日から第2章~。

レッスン2-2

新しく「マッピング」という言葉が出てきました。

なにそれ。面白い番組やってないかな~ってチャンネル変えまくるやつのこと?

、、、それはザッピング。

はいすみません。要するに連想配列みたいなものですね。

配列の値と、それを参照するキーのペアを作るということです。

CryptoZombiesの例だと以下のようになっていて、

//idを基にアドレスにゾンビを保管

mapping(uint => address) public zombieToOwner;

//addressに格納されるゾンビの数を保管

mapping(address => uint) ownerZombieCount;

という2ステップでアドレスにゾンビの数が保存される仕組みにしています。

レッスン2-3

ゾンビを作ったら、ちゃんと自分の持っているゾンビの数を増やさないといけません。それをレッスン2-2のマッピングを利用してやろうという回ですね。

ここでまず覚えるべきは「msg.sender」というグローバル変数。

この先めちゃめちゃ出てくるし、実際開発する時でも必ず使用する必須アイテム。FFのポーション。ドラクエのやくそう。(多分違う)

その関数を呼び出したユーザー(またはスマートコントラクト)の addressを参照できるようになります。逆にこれを使わないと一生関数を使えない。

CryptoZombieでのコードは以下のとおり。(太字が追加されたこのレッスンでコード)

function _createZombie(string _name, uint _dna) private {

uint id = zombies.push(Zombie(_name, _dna)) - 1;

zombieToOwner[id] = msg.sender;

ownerZombieCount[msg.sender]++;

NewZombie(id, _name, _dna);

}

新しく作ったidをmsg.sender(自分のアドレス)に紐づけて、それをownerZombieCountで、インクリメント(++)しているという流れですね。

レッスン2-4

createRandomZombie関数をゲーム中1回しか呼べないようにします。じゃないとずっとrandomなzombieをcreateできちゃうからね。そこで用いるのが「require」。PHPとかだと外部ファイル読み込みに使ってたような気がしますが、Solidityだと違うんだね。

それにしてもせっかく作った関数なのに、1回しか呼べないようにするなんて悲しいことだぜ。。。

function createRandomZombie(string _name) public {

require(ownerZombieCount[msg.sender] == 0);

uint randDna = _generateRandomDna(_name);

_createZombie(_name, randDna);

}

上記のコードで「この関数を呼び出している人が持っているゾンビの数が0の時だけ」、createRandomZombie関数を呼び出すようにしているわけです。

今日はこのへんで。

では良いゾンビライフを!

書いた人

【twitter】https://twitter.com/nogacrypto?lang=ja

【voicy】https://voicy.jp/channel/545

【note】https://note.mu/nogacchi


公開日:2018/07/06
獲得ALIS:6.36
alisnoga's icon'
  • alisnoga
  • @alisnoga
voicyもやってます。【voicy】https://voicy.jp/channel/545

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Uniswap(ユニスワップ)で$ALISのイールドファーミング(流動性提供)してみた

Like token Tip token
59.99 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

Like token Tip token
43.10 ALIS
Eye catch
クリプト

【初心者向け】$MCHCの基本情報と獲得方法

Like token Tip token
31.32 ALIS
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Like token Tip token
69.90 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS
Eye catch
クリプト

コインチェックに上場が決まったEnjin Coin(エンジンコイン)コインを解説

Like token Tip token
21.49 ALIS
Eye catch
クリプト

スーパーコンピュータ「京」でマイニングしたら

Like token Tip token
1.06k ALIS
Eye catch
クリプト

【初心者向け】JPYCを購入して使ってみました!

Like token Tip token
30.03 ALIS
Eye catch
クリプト

バイナンスの信用取引(マージン取引)を徹底解説~アカウントの開設方法から証拠金計算例まで~

Like token Tip token
3.50 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS