【CryptoZombies】各レッスン、チャプター1のおさらい、備忘録

CryptoZombies難しいよぉぉぉ

 

CryptoZombiesがおもしろい

my-foolish.hatenablog.com

のだけれど、JavaとかJavaScriptとか、そういったおしゃれ言語を扱ったことがなく、CryptoZombiesは初心者向けではあるもののおしゃれ言語を多少知っている前提で作られている。

CryptoZombiesを進めていると、初心者向けであるにも関わらず、何がなんだかわからなくなることが多々ある。

ので、各チャプターごとのポイントをまとめ、備忘録として書き留めておこう。

 

 

〔目次〕

 

 レッスン1

f:id:taitono99:20180307205058p:plain

いきなり、別の言語(Javascript等)をある程度知っている前提、と強めにでてくる教官。恐ろしい。

 

チャプター1

f:id:taitono99:20180307205316p:plain

ゾンビのDNAは16桁で決まる。

スライダーを動かして、楽しむだけなのでfxxking easyだ。

 

チャプター2

f:id:taitono99:20180307205934p:plain

(いきなり間違えている・・・)

・Solidityのバージョンを入れる

・contractを作る

 contractは、イーサリアムアプリケーションの基本ブロック。

 

チャプター3

f:id:taitono99:20180307210202p:plain

・変数の宣言と変数への代入方法

 →Uintは符号なし整数。マイナスは入れられないやつ。

 

チャプター4

f:id:taitono99:20180307210529p:plain

・変数を使用した演算方法

 a % b で、aをbで割った余り

 a ** b で、aのb乗の計算ができる

 

チャプター5

f:id:taitono99:20180307210913p:plain

・ 構造体(struct)

 構造体は、複数の変数を構成する要素を持つ雛型的なもの。

 この構造体に名前を付けて、大量に複製することができる。

 例)「人間」という構造体を作り、構成要素は「年齢」「身長」「体重」とする。

   「人間」を使用して、

    さとし、年齢:18、身長:100、体重:50

    まさこ、年齢:80、身長:150、体重:60

   と、複製できる。

   上記を作成した後、「さとしの体重」とすると、50をとりだせる。

 

チャプター6

f:id:taitono99:20180307212219p:plain

・配列を作れる

・自分が作った構造体の配列も作れる。

 struct Zombie{

  struct name;

  uint dna;

 } ←ここまでで、ゾンビ構造体を作成

 Zombie zombies; ←ゾンビの構造体で、ゾンビーズという配列を作る。

 

チャプター7

f:id:taitono99:20180307212837p:plain

・関数(function)と引数を作る

・関数は引数を渡して呼び出すことで、その引数を使用してなんらかのことをしてくれるもの

 

チャプター8

f:id:taitono99:20180307213141p:plain

(一気に意味不明になりました)

・pushをすると、配列に格納する

 uint numbers;

 numbers.push(1) で、numbersの配列に1を格納できる。

 

 zombies.push(Zombie(_name, _dna));

 ゾンビーズという配列に、ゾンビ構造体(_nameと_dna)を入れる。

 ゾンビ構造体は、引数を格納している。

 ”_”は、元の変数が呼び出し元にあるよ っていうのを表しているのかな。

 

チャプター9

f:id:taitono99:20180307214953p:plain

・関数のプライベート化

 

チャプター10

f:id:taitono99:20180307215247p:plain

・戻り値の設定

 function _generateRandomDna(string _str) private view returns (uint)

 returns(uint)←uintが戻ってくる

 

チャプター11

f:id:taitono99:20180311100836p:plain

・ランダム値の設定

keccak256を使用して、ランダムなハッシュ値をとる

・「余り」を用いて、下桁を取得する

・ファンクションの戻り値を、returnで返す

 

チャプター12

f:id:taitono99:20180311101919p:plain

・前回作成したcreateZombieに、引数の_nameと、

 _nameをランダム値にして取得した16桁の値を渡し、新しいゾンビを作る

 

チャプター13

f:id:taitono99:20180311114514p:plain

・ イベントを作る。イベントを使うことで、フロントエンドに伝えることができる

・zombies.push(_name, _dna)で、zombies配列の最後尾に_nameと_dnaを入れている

・zombies.push(_name, _dna) - 1 が、追加したゾンビのインデックス・・・?

 →配列.push()は、配列に値を格納しつつ新しい配列のIDを返す(と思われる)

  ので、追加したゾンビのインデックスを入手するためには-1をする。

 

チャプター14

f:id:taitono99:20180311120212p:plain

javascriptがいろいろ書いてあったりするが、

ひとまず自分のゾンビの名前を入れればよい

 

終わり!

f:id:taitono99:20180311120305p:plain

答えを見ながらも、なんとかかんとか終了

ちゃんと理解しながら進めないと、どんどんわからなくなっちゃうからなぁ

基礎があってこそ、いろいろできる!

 

 

難しかったところ

やっぱり、配列。

配列にpushして、最後尾に格納しつつ、-1の値が今pushした配列のindexだ。というのが難しかった。

ここは、しっかり覚えないといけない。

 

よーし、どんどん進めていくぞ!