Skip to content

Commit

Permalink
Merge branch 'master' into feature/lesson-3-translated-pt-br
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardonunesp committed Jan 28, 2018
2 parents b8140d6 + d393163 commit f0b6eed
Show file tree
Hide file tree
Showing 73 changed files with 6,898 additions and 420 deletions.
35 changes: 35 additions & 0 deletions en/lander.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
en:
ogdescription: CryptoZombies is an interactive code school that teaches you to write smart contracts in Solidity through building your own crypto-collectables game.
ogtitle: CryptoZombies - Learn to code games on Ethereum. Powered by Loom Network
langshort: EN #should be recognizable in local languages, like chinese would be 中文
learn_title: Learn to Code Ethereum DApps By Building Your Own Game
learn_desc: CryptoZombies is an interactive code school that teaches you to write smart contracts in Solidity through building your own crypto-collectables game.
get_started: Get Started, It's Free
learn_more: Learn More
what_title: What is CryptoZombies?
what_desc1: CryptoZombies is a free, interactive code school that teaches you to build games on Ethereum.
what_desc2: The course is designed for beginners to Solidity and starts off with the absolute basics. So if you've never coded with Solidity before, don't worry — we'll walk you through step by step.
collect_title: Earn Crypto-Collectibles
collect_desc1: Earn crypto-collectible Zombies and bonuses by completing coding lessons.
collect_desc2: After completing all lessons and deploying your DApp, pit your zombie army against other players' zombies in one of the world's first blockchain-based games! Half code-school, half MMO crypto-collectible strategy game.
collect_desc3: What are you waiting for? Click the button below to dive into lesson 1 and build your first DApp. It's free!
start_title: Get Started Now
int_title: Interactive Coding Lessons
inbrowser_desc: In-browser step-by-step lessons take you from the very basics of Solidity to creating your own fully-functional blockchain-based game. Even by the end of Lesson 1 (which can be completed in one sitting), you'll know enough to officially call yourself a Solidity developer!
zombie_title: Build a Zombie Army
zombie_desc: In Lesson 1, you will build a Zombie Factory to build your army. Every Zombie you create will have randomly generated DNA and have his own unique appearance. Further lessons (1 released each week) will add more functionality to your game, like the ability to battle other people's zombies!
who_made: Who Made CryptoZombies and Why Is It Free?
who_made1: CryptoZombies was made by the team at
who_made2: . We're building a platform for running large-scale applications on Ethereum sidechains.
who_made3: We think blockchains are capable of a lot more than just payments, and we want to get more developers thinking outside the box and trying to build large-scale DApps. Games are one of the areas where we think blockchain will really revolutionize things. So we built CryptoZombies to help educate and inspire the next generation of blockchain game devs.
find_us: Aside from CryptoZombies, we're working on some really cool projects. If you'd like to follow us, get in touch for a project, or just say hi, you can find us on
and_our: and our
email_us_at: ", or email us at"
footer_network: Network
footer_info: Information
footer_contact: Contact
footer_contact_jobs: Jobs
footer_email: Email
footer_about: About
footer_desc: CryptoZombies.io is a free teaching platform to teach existing developers or complete newcomers the ins and out of programming for the Blockchain. Powered by Loom Network - a platform for building commerical scale apps on Ethereum.
17 changes: 9 additions & 8 deletions jp/1/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ material:
contract ZombieFactory {
// declare our event here
// イベントをここで宣言するのだ
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
Expand All @@ -23,7 +23,7 @@ material:
function _createZombie(string _name, uint _dna) private {
zombies.push(Zombie(_name, _dna));
// and fire it here
// ここでイベントを発生させるのだ
}
function _generateRandomDna(string _str) private view returns (uint) {
Expand Down Expand Up @@ -91,20 +91,21 @@ function add(uint _x, uint _y) public {
}
```

Your app front-end could then listen for the event. A javascript implementation would look something like:
アプリのフロントエンドをリッスン(接続待ち)状態にできる。javascriptで実装すると次のように書けるのだ:

```
YourContract.IntegersAdded(function(error, result) {
// do something with result
// 結果について何らかの処理をする
}
```

# それではテストだ

We want an event to let our front-end know every time a new zombie was created, so the app can display it.
新しいゾンビを作る毎にそれをフロントエンドに伝えて、アプリ上に表示させたい。

1. Declare an `event` called `NewZombie`. It should pass `zombieId` (a `uint`), `name` (a `string`), and `dna` (a `uint`).
1. `NewZombie`を呼び出す`event`を宣言せよ。`zombieId` (`uint`) `name` (`string`)`dna` (`uint`)の値を渡すのだ。

2. Modify the `_createZombie` function to fire the `NewZombie` event after adding the new Zombie to our `zombies` array.
2. `_createZombie`関数を編集し、`zombies`配列に新しいゾンビを追加したら `NewZombie`イベントが発生させよ。

3. ゾンビの`id`が必要だ。`array.push()`は新しい長さの`uint`配列を返し、配列の最初のインデックスは0であるから、`array.push() - 1` が追加したゾンビのインデックスだ。そこで、`zombies.push() - 1`結果を`id`という名前の`uint`に格納し、次の行で作成する`NewZombie`イベントで使用できるようにせよ。

3. You're going to need the zombie's `id`. `array.push()` returns a `uint` of the new length of the array - and since the first item in an array has index 0, `array.push() - 1` will be the index of the zombie we just added. Store the result of `zombies.push() - 1` in a `uint` called `id`, so you can use this in the `NewZombie` event in the next line.
18 changes: 9 additions & 9 deletions jp/1/lessoncomplete.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
---
title: Lesson 1 Complete!
actions: ['checkAnswer', 'hints']
title: レッスン1終了!
actions: ['答え合わせ', 'ヒント']
material:
lessonComplete:
answer: 1
---

Congratulations! You have completed lesson 1, and you have created the first zombie in your army.
よく頑張った!レッスン1を無事に終えた上に、ゾンビ軍団の最初のゾンビを作ったのだ。

# Next Steps
# 次のステップ

This is just the beginning. We will be releasing a new CryptoZombies lesson each week, to build out the game further and further and keep growing your zombie army.
喜ぶのはまだ早い。毎週新しいCryptoZombiesのレッスンを実施するぞ。ゲームをどんどん進めて、ゾンビ軍団を成長させてくれ。

### 1. Sign in to save your progress
### 1. サインインして進捗を保存

**_Sign in_** to save your progress by clicking the "Save Progress" link at the top of the page. We'll let you know as soon as we add a new lesson.
**_サインイン_** すると画面上の”進捗の保存”リンクで進捗を保存できる。新しいレッスンの準備ができたら直ぐに呼ぶから、それまでおとなしく待つようにな。

### 2. Share your zombie with your friends
### 2. ゾンビを友達とシェアする

**_Share_** your zombie on Twitter, blah blah, etc. (Need to insert images / links)
ツイッターでもなんでも自分のゾンビを**_シェア_** できるぞ。 (画像・リンクを挿入する必要があります。)
48 changes: 24 additions & 24 deletions jp/1/web3js.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Web3.js
actions: ['checkAnswer', 'hints']
actions: ['答え合わせ', 'ヒント']
material:
saveZombie: true
zombieResult:
Expand All @@ -10,54 +10,54 @@ material:
answer: 1
---

Our Solidity contract is complete! Now we need to write a javascript frontend that interacts with the contract.
これでSoliditiyのコントラクトが完成だ!せっかくだからコントラクトがやり取りできるようにjavascriptでフロントエンドの作り方も教えてやろう。

Ethereum has a Javascript library called **_Web3.js_**.
イーサリアムには**_Web3.js_**というJavascriptライブラリがある。

In a later lesson, we'll go over in depth how to deploy a contract and set up Web3.js. But for now let's just look at some sample code for how Web3.js would interact with our deployed contract.
Web3.jsの設定とかコントラクトに実装する方法とか詳しいことは後で教えてやる。今はとりあえずサンプルコードを見せるから、それをみてWeb3.jsがどういう風にコントラクトとやり取りをするのかを学ぶのだ。

Don't worry if this doesn't all make sense yet.
今は全然わからなくても構わないぞ。

```
// Here's how we would access our contract:
// これがコントラクトにアクセスする方法だ:
var abi = /* abi generated by the compiler */
var ZombieFactoryContract = web3.eth.contract(abi)
var contractAddress = /* our contract address on Ethereum after deploying */
var ZombieFactory = ZombieFactoryContract.at(contractAddress)
// `ZombieFactory` has access to our contract's public functions and events
// `ZombieFactory`はコントラクトのpublic関数とイベントにアクセスできるようになったぞ。
// some sort of event listener to take the text input:
// 入力テキストを取得する類のイベントのリスナーだ:
$("#ourButton").click(function(e) {
var name = $("#nameInput").val()
// Call our contract's `createRandomZombie` function:
// `createRandomZombie`関数を呼び出す部分だ:
ZombieFactory.createRandomZombie(name)
})
// Listen for the `NewZombie` event, and update the UI
// `NewZombie`イベントをリッスンしてUIを更新する部分だ
var event = ZombieFactory.NewZombie(function(error, result) {
if (error) return
generateZombie(result.zombieId, result.name, result.dna)
})
// take the Zombie dna, and update our image
// ゾンビのdnaを取得して画像を更新する部分だ
function generateZombie(id, name, dna) {
let dnaStr = String(dna)
// pad DNA with leading zeroes if it's less than 16 characters
// 16桁未満の場合はDNAの先頭に0をつける部分だ
while (dnaStr.length < 16)
dnaStr = "0" + dnaStr
let zombieDetails = {
// first 2 digits make up the head. We have 7 possible heads, so % 7
// to get a number 0 - 6, then add 1 to make it 1 - 7. Then we have 7
// image files named "head1.png" through "head7.png" we load based on
// this number:
// 最初の2桁は頭の部分だ。頭部は7種類用意してあるから、%7して
// 0から6の番号を取得したら、そこに1を足して1から7にするのだ。
// これを基にして、"head1.png" から"head7.png"までの
// 画像ファイルを用意する部分だ:
headChoice: dnaStr.substring(0, 2) % 7 + 1,
// 2nd 2 digits make up the eyes, 11 variations:
// 次の2桁は目の部分だ。11種類用意してあるぞ:
eyeChoice: dnaStr.substring(2, 4) % 11 + 1,
// 6 variations of shirts:
// シャツの部分は6種類用意してある:
shirtChoice: dnaStr.substring(4, 6) % 6 + 1,
// last 6 digits control color. Updated using CSS filter: hue-rotate
// which has 360 degrees:
// 最後の6桁は色の部分だ。 CSSのフィルタを使用して更新できる。
// 360度の色相回転(hue-rotate)を使うぞ:
skinColorChoice: parseInt(dnaStr.substring(6, 8) / 100 * 360),
eyeColorChoice: parseInt(dnaStr.substring(8, 10) / 100 * 360),
clothesColorChoice: parseInt(dnaStr.substring(10, 12) / 100 * 360),
Expand All @@ -67,11 +67,11 @@ function generateZombie(id, name, dna) {
return zombieDetails
}
```
javascriptが何をしているのか説明するぞ。まず `zombieDetails`で生成した値を取得して、ブラウザベースのjavascriptのフレームワーク(ここではVue.js)を使って画像を置き換えて、そこにCSSフィルタを適用しているのだ。コードが欲しければ、後でコードを全て君にやろう。

What our javascript then does is take the values generated in `zombieDetails` above, and use some browser-based javascript magic (we're using Vue.js) to swap out the images and apply CSS filters. You'll get all the code for this in a later lesson.
# さぁ、自分でやってみるのだ!

# Give it a try!
右のボックスに自分の名前を入力し、どんなゾンビになるのかその目で確かめるのだ!

Go ahead — type in your name to the box on the right, and see what kind of zombie you get!
**自分の名前のゾンビで楽しんだら、”次のチャプター”をクリックしてゾンビを保存せよ。これでレッスン1は終了だ!**

**Once you have a zombie you're happy with, go ahead and click "Next Chapter" below to save your zombie and complete lesson 1!**
12 changes: 12 additions & 0 deletions jp/2/00-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: ゾンビが人間を襲う
header: レッスン 2までよくぞたどり着いた!
roadmap: roadmap2.jpg
---

おお、人間よ!お前は私が思っていたよりもコードがよくできるようだな。

このレッスン 2では、**人間に噛み付いてゾンビ軍団を倍増させる方法を教えてやるが、怖がらずにしっかり学ぶのだ**

このレッスンで、ちょっと難し目のSolidityのコンセプトを説明していくから、レッスン 1を終了していないとさっぱりわからなくなるぞ。しっかりやっておくようにな。

33 changes: 33 additions & 0 deletions jp/2/1-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: レッスン 2 の概要
actions: ['答え合わせ', 'ヒント']
material:
saveZombie: false
zombieBattle:
zombie:
lesson: 1
humanBattle: true
ignoreZombieCache: true
answer: 1
---

レッスン 1では、名前を取得し、それを使ってランダムなゾンビを作り出し、それをブロックチェーン上のゾンビデータベースに追加するところまで教えたな。

レッスン 2では、このアプリをもっとゲームのようなものに変えるのだ:マルチプレーヤー対応にして、ゾンビの作り方もランダムではなくて、もっとも面白い方法に変えていくぞ。

新しいゾンビをどうやって作るのかだって? ゾンビに人間達を”喰わせる”のだっ!

## ゾンビの感染

ゾンビが人間を噛むと、噛まれた人間にウィルスが感染するのだ。このウィルスは人間をゾンビに変えてお前の軍団に加えることができるものだ。新しいゾンビのDNAはゾンビのDNAと人間のDNAを計算した結果で生成されるのだ。

ゾンビの好物はどんな人間か、だと・・・?

なかなか面白いやつだ・・・ レッスン2を無事に終えることができたらわかるだろう!

# それではテストだ
餌となる人間をゾンビに与える簡単なデモを右に用意してある。餌となる人間をクリックして、ゾンビに喰わせてやるとどうなるのかを見よ!

新しいゾンビのDNAが元のゾンビと噛まれた人間のDNAで決定されることがわかるだろう。

次に進む準備ができたら、「次のチャプター」をクリックせよ。次のチャプターではこのアプリをマルチプレーヤーゲームにしていくぞ。
Loading

0 comments on commit f0b6eed

Please sign in to comment.