Lesson 2

第一次寫程式果真是一場硬仗。

請使用方向鍵操控此投影片。

最右邊的是回家作業,以及推薦寫的題目。

前言

前言

大家上週過得還好嗎?

下周我要去中央大學所以要請假一次。

今天前五分鐘開個網路

讓大家裝個有點用的東西叫做...sget

在終端機打下 npm install sget

我們可以利用他做一些極簡單遊戲

npm = node.js package manager

翻譯蒟蒻 -> node.js 套件管理員

套件跟我們待會要講的 function 有關係

install 就是安裝

所以你可以透過 npm install _____(套件名稱) 來安裝套件

npm install sget

https://www.npmjs.com/package/sget

裡面會有這個「套件」(Package) 的介紹與範例

var sget = require ('sget');

 

var something = sget ('Say something. I\'ll wait.');

console.log ('You said', something);

 

sget ('Leave word and you will be heard.', function(data) {

    console.log ('I heard you said', data);

});

console.log ('\nThis test is not over.');

sget 就是個你每次呼叫他,

他都會讓 Terminal 停下來等你打字輸入東西,

並擷取該行內容存起來的函式 (Function)。

 

有了這個再加上上一周我們教的東西,

就可以做很多小遊戲啦。

一定會輸的猜拳、猜數字、終極密碼...等等。

今日正課 Chapter 1

來用上周進度 + sget 來做點小東西。

首先,學會用 sget。

var sget = require ('sget');  // require 是呼叫套件用的函式

 

var something = sget ('Say something. I\'ll wait.'); // 呼叫 sget

console.log ('You said', something);

然後寫一個可以跟電腦猜拳的遊戲吧!

我們先當把 Y 當剪刀、O 當石頭、U 當布。

var sget = require ('sget'); // require 是呼叫套件用的函式
 
var PSS = sget ('Paper(U), Scissor(Y), Stone(O) ?');
if (PSS[0] == "U"){

}
else if (PSS[0] == "Y"){

}
//...剩下你們試著自己寫寫看

然後寫一個可以跟電腦猜拳的遊戲吧!

我們先當把 Y 當剪刀、O 當石頭、U 當布。

PSS[0] 是什麼東西呢?

是下一次上課的內容,[0] 代表的是此陣列的第一項。

陣列 (array) 是一個一次存有多項變數的...變數。

 

這次課程用到的 PSS[0]

代表著取出 PSS 這個字串(一堆字的陣列)的第一個字。

所以你輸入 You are smart. 他只會取得 Y。

第 0 項 [0] 是第 1 個字,第 1 項 [1] 則是取第二個字。

上次教到這。

所以往右往下都是新的內容

今日主題:自己寫寫看

大家加油 XD

今日主題:自己寫寫看

所以說要怎麼讓電腦會自己出拳?

隨機出拳?

http://lmgtfy.com/?q=JavaScript+random

Math.random()

console.log ( Math.random() );

// Math.random() 會產生一個 0 ~ 1 之間的亂數

// 也就是最小值是 0,最大值是 0.99999....,不會到 1。

var a = Math.random(); // 可以這樣取得該數字

// 該怎麼讓這個 Math.random() 變成我們要用的東西?

// 猜謎時間~我們怎麼讓它變成只有三種可能性?

Math.floor() 取小數點前面的整數

console.log ( Math.floor (Math.random() * 10) );

// Math.random() 會產生一個 0 ~ 1 之間的亂數

// 所以 * 10 之後,就會變成 0 ~ 10 之間的亂數

// Math.floor 之後只會取整數,所以是 0 ~ 9

//用 for 來試幾次看看吧!

 

console.log ( Math.floor (Math.random() * 10) + 10 );

// 在後面 + 10 後範圍就變成 10 ~ 19

讓電腦用亂數猜拳

GO!

讓電腦用亂數猜拳

現在試試看猜拳猜到有一方贏三把為止。

中場休息

我喝點水

今日正課 Chapter 1.5 

陣列 Array 與 字串 String

真希望可以教完陣列,你們就可以回家寫簡易的棋盤遊戲了

(像是五子棋、踩地雷等)

a = [1, 2, 3];

for(i = 0; i < 3; i++)

    console.log( a[i] );

//陣列的項次是從 0 開始的

//陣列有許多已經寫好的函式可用

//push, pop, shift, unshift, join, reverse, slice, sort......

// 可以回家自己試試看

a.push(4);

console.log( a );

a.reverse();

console.log( a );

a = "Happy New Year!";

for(i = 0; i < a.length; i++)

    console.log( a[i] );

//字串的項次也是從 0 開始的

//字串也有許多已經寫好的函式可用

//length, substring(), toLowerCase()... 等等

// 可以回家自己試試看

a = a.substring(0, 4)

console.log(a);

console.log(a.toLowerCase());

所以陣列能幹麻?

來,說說看

所以陣列能幹麻?

agar.io 的排行榜

應該說...各種遊戲的排行榜都有用到陣列的概念

將分數按大小排好,就是排序 (sort) 

很多遊戲做的掉寶率區間控制也是用陣列配合亂數來操作的

a = [6, 10, 100, 1, 76];

console.log(a);

 

a.sort();

console.log(a);

// 還可以做二維陣列,就像綠豆糕...我是說就像棋盤一樣

b = [ [11, 12], [21, 22] ]

console.log(b);

console.log( b[0][1] );

console.log( b[1][0] );

練習時間

把剛剛的猜拳再更新一下。

我們來把每回合的輸贏放進一個陣列裡,

最後印出猜拳的紀錄表。

今日正課 Chapter 2 

function()

function 函式

這對你們來說是新的觀念,容我解釋解釋

簡單來說,這是一個獨立的小程式。

function HelloHello() {

    console.log("Hello World!!");

}

function adder( a, b ){

    return a + b;

}

HelloHello();

console.log(adder(3, 7));

看起來好像沒什麼特別的,但是想想剛剛的猜拳...

如果今天猜拳要寫成:

猜五把,贏的多的人獲勝,

若平手,猜到一人連續贏兩把為止。

你要怎麼寫?

for(){

    //猜拳

}

 

while(){

    // 猜拳

        // 再猜拳

}

// 好像有點浪費空間阿

function PSS_game ( a ){

// a = 1(Y), 2(O), 3(U); 別忘記

//直接在這邊亂數生成並回傳誰贏

// return 1; 你贏,return 2; 電腦贏

}

for(){

    if ( PSS_game (PSS[0]) == 1)

    ...

}

 

while(){

...

}

完成這個吧。

function likeLoop ( a ){

//function 還可以呼叫自己

    if ( a < 10 ){

        console.log(a);

        a = a + 1;

        likeLoop(a);

    }

}


likeLoop ( 0 );

這種直接或間接地呼叫自己的做法,

我們稱之為遞迴 (Recursion),跟 for, while 迴圈 (Loop) 相似

 

然而這兩者的功能與效能不太一樣,

幾乎所有的 迴圈 可以由 遞迴 來實作,但反過來就不行。

看似好用,但是遞迴非常的浪費資源

練習時間

用遞迴的方法算算看 1 + 2 + ... + N

回家作業 

請安裝 Unity3D,自己學著安裝吧!

另外,大家不是都有 FB 所以改用 Google Groups,快接受邀請

回家作業

你們可以來寫踩地雷跟五子棋了喔喔喔喔喔喔喔喔

可以遇到問題就寄信騷擾老師

老師之後就要去找工作了但是還是有時間回信幫助你們的

Lesson 2 上完這堂課就可以自己寫棋盤類遊戲啦!

By every85713

Lesson 2 上完這堂課就可以自己寫棋盤類遊戲啦!

  • 450