Powered by and 圖示來源

2008年8月27日 星期三

這個遊戲算是PSP上的一個輕鬆小品,本來我對這怪怪的遊戲是不感興趣的,不過官方居然很有誠意的發行了繁體中文版,那我只好不厭其煩的玩看看。

不玩還好,一玩就上癮。

在遊戲中,我們扮演的是的角色,這是老梗了,當神的遊戲何其多。

但是這款很特別。

神能做的事,就是利用戰鼓發號司令。

戰時,告訴子民們,該進攻還是防守。平時,要跟各職業村民玩節驟遊戲,換取所需道具。

故事一開始,玩家會遇到一群神槍兵,不過在這個世界中,所有的人(?)都以pon做稱呼,所以玩家遇到的這群應該叫做神槍pon。

這群pon想要到世界的盡頭,看看那邊有什麼。就這樣,神帶領這群pon走向世界的盡頭。(神還真好說話)

一開始只有pata鼓跟pon鼓的神,能下達的指令只有前進跟攻擊兩個。隨著故事的進行,我們會慢慢的拿到chaka鼓跟don鼓。

它們分別對應到:
□:pata
△:chaka
○:pon
╳:don

有了這些鼓之後就能得到:
前進: pata pata pata pon (□,□,□,○)
攻擊: pon pon pata pon (○,○,□,○)
防守: chaka chaka pata pon(△,△□,○)
後退: pon pata pon pata(○,□,○□)
蓄氣: pon pon chaka chaka(○,○,△,△)
神蹟: don dondon dondon(╳, ╳╳, ╳╳)

基本上我都是蠻幹型的,除了最後一關的王,我都是前進跟攻擊一路到底(有些關一定要神蹟的當然也要召喚神蹟)。

一般來說,combo10之後就會進入fever狀態,如果按的好,不必到combo10就能進fever,在fever各兵種的戰力都會加強,所以要過關一定要練到一路fever到底。

平常小pon們只會複頌神的指令,然後做出動作,但是fever時,小pon們不再複頌,轉而高唱戰歌,戰歌的曲調滿好聽的,加上類似open將的發音,聽起來還真是令人愉快。

他們跟本就是在郊遊。Happy的勒。


上面提到神槍pon,當然整個遊戲不只有這個pon,遊戲到最後會一共會有:
神槍pon : 食材+木材
盾兵pon : 食材+石材
箭士pon : 木材+石材
騎士pon : 石材+石材
大大pon : 合金+食材 or 農作物
米茄pon : 合金+木材

上列兵種後面的東西就是生產pon所需的原物料。

一次出戰只能有3個部隊,一開始就是神槍pon+箭士pon+盾兵pon,等到最後米茄pon出現之後,我就換成神槍pon+箭士pon+米茄pon。

戰術是死的,用人也是死的,一切蠻幹,從頭到尾固定班底,只下固定指令,哈哈哈。

再來就是同樣的pon也有等級之分,等級是在出生時餵下去的原物料判斷的。

每種原料有1-4級,所以兩個原料加到一起就會有2-8級,共7種等級的pon。

原物料區可看到每一類的原料都有4種。

特地把所有等級pon的介紹拍下來,除了2級的白pon之外,每一級的pon都有各自的優點。

不過依我以不變應萬變的作法,當然是有多好的pon就產多好的,直到最後,7與8級做決擇時,8級一次要用兩個4級的原料,太浪費了,所以整團都是摩丘級的pon。

3-6級pon的特點
7-8級pon的特點
上面有提到,除了作戰之外,平時也要跟各職業pon玩玩小遊戲,它們是:
喇叭pon: 1級食材->很多低等級原料
農夫pon: 1級木材->農作物
礦工pon: 2級食材->石材
廚師pon: 大眼捲心菜->料理 (出戰時用)
鐵匠pon: 石材->合金。 這個是最重要的,用4級的石材-米斯里魯可以打造神級兵器。(所以米斯里魯在前期省點用)

這個遊戲跟暗黑一樣,很講運氣的,不是要什麼有什麼,除了神兵之外,所有的裝備都是打來的,打的到是運,打不到是命,原物料亦如是。

而且王打敗一次,下次就會升級,整個遊戲的王總共不過9隻,要洗就這機隻可以洗而已。

所以我都趁王還很肉腳時就先洗,沒打到好寶就讀取存檔重打,不然等牠們等級高了,苦的就是自己了。


最後.... patapon的村民到達了世界的盡頭,他們看到了什麼呢?

最後.... 這是他們的決定,這是伏筆吧?


沒錯,戰鼓啪打碰(PataPon)要出2代了。

趁二代還沒出,手上有psp的朋友,試著玩玩看這款輕鬆小品吧!

20080918註: 新增日文廣告一部


2008年8月21日 星期四

最近,阿扁A錢的事鬧的很大,我想阿扁就算沒死也半條命了,就算只是小小的違法,但是把錢匯出去,我個人還是看不下去。

阿扁去吃屎吧!

不過這件事卻喚醒了一大群在選後不出聲,沒有任何立場的中間選民。由他們大量的轉寄,轉貼,我在24小時內,已經收到3次訊息,而該網站人次在中午時即衝破5萬人次,這樣的人氣已經超過了火紅的網路作家九把刀的個人blog,也許有機會跟彎彎的blog一較高下。

果然這群人骨子裡是藍色的,不管是淡藍還是天空藍,就是藍。只是他們不想,也懶得討論政治,所以隱身為中間選民。

怎麼綠卡的事這麼久了,我卻沒收過類似的網站link。在我心理,這兩件事都沒有模糊地帶,很明顯的是非對錯。

那麼來談談為什麼政治需要討論吧

常言道:"政治是高明的騙術",這話一點也不假。

當你長時間關心政治時,你就會發現其中的棱棱角角,而不關心的人就會被騙術欺騙,就像中了幻術而不自知。

而討論政治的過程中,交換大家觀察出來的心得,進而了解真像,避免被欺騙而連公投要投什麼都不知道就說不要公投

那麼什麼樣的人才適合跟他討論政治呢?
1,必需有基本的認知,了解人情事故,否則很多運作原理是說了也沒辦法懂的。
2,必需與主題沒有利害關係。(討論軍公教就不要跟軍人老師討論,他們一定為自身利益為主。要討論阿扁的對錯,當然也不用找趙建民談,談下去只會動手)
3,對政治要有一定了解,你連馬英九是誰,該做什麼你都不知道,那怎麼聊的下去。(相對的,連馬英九是誰,以及他該做什麼都不知道的人,應該禁止投票)

討論政治不是壞事,但是如果對方的立場非常偏,我們應該可以找到背後的一些利害關係,然後說服自己,不要再聊了,我們想的不是同一個東西,不會有結論的。

回過頭來,說說赤貧之戰。它盡其所能的把阿扁醜化,徹底的打跨了扁家,但是對我而言,我早就看不起阿扁,並不需要這樣的作品來推波助攔,而且個人的笑點比較高,說真的很難笑

最近看了一部電影叫做"大衛特大號",從頭到尾我都沒有笑。所以我說很難笑,沒有惡意,除非自認搞笑天才,比艾迪墨菲更加高明。

就算今天再抓十個A了十億的人出來,就算都是民進黨,我還是不會把票投給國民黨,這不是比爛就能決解的問題,我個人不支持國民黨並不是因為民進黨好。

民進黨倒了,總會有另一個黨起來。

我個人不支持國民黨並不是因為民進黨好。這句話應該很熟,選前很多轉寄信件都是這樣寫的,但是我有我理由,放心,我不會拿什麼228白色恐怖來算舊帳,我之所以不喜歡國民黨的原因是因為他們太照顧特定族群,而且幻術高明,騙的越利害,騙的越成功,卻讓我卻有不能被騙的決心。

怎麼說他們很會騙呢?

前陣子的行政院大家都領教過了,同一件事可以依時間,依人物而有不同的說法,如果行政院要搞瞎子摸象,這個我來就行了,不如我做院長。

再來,法案該過不過,專門亂搞,先看看錢坑法案。這就是你我的血汗錢,如果你不關心一下政治,你會知道立法院在這樣搞嗎?真的還要做中間選民嗎?

選前大家都說要陽光法案,雙方人馬都一直加碼,一個比一個陽光,一條比一條嚴格,現在呢?
陽光法案呢?

還有一條最大條的1160億擴大內需,這個要唸就唸不完了,真正有興趣的人可以上網找找。如果有人有懶人包還是懶人網址可以幫助了解擴大內需,歡迎提供。


所以,相信我,我只是討厭國民黨,不是支持民進黨,不像轉寄信件把話說的好聽而已,我是真真正正討厭國民黨,今天如果國民黨不再亂搞了,不再通過這些狗屁法案,不再只討好特定族群,跟本不需要阿扁A錢案,我自動會好好的當個中間選民。

真真正正的中間選民。

所以我至今仍是泛綠,就算有十部赤貧之戰也無法讓我反叛


2008年8月12日 星期二

寫玩之後,自己試玩了一下,說真的,不好玩,聲光效果太差了,加上javascipt 沒有delay, wait之類的function,只能用Timer繞路寫出想要的功能,不好寫。

本來預計要寫的功能,應該不會再加上去了,不好玩,沒成就感。 -_- (好像在IE上會有些問題,同樣的圖片會一直上server抓,造成畫面出不來)

=====================遊戲區開始=====================

=====================遊戲區結束=====================


這失敗品就當是在練javascript 跟 data structure了


2008年8月7日 星期四

原文出處

你所想像不到的 JavaScript

原文排版亂掉了,我重新排過。

這不是一篇教你如何在網頁中應用 JavaScript 的教材。
這是一篇讓你明瞭看似簡單的 JavaScript,其實其核心語法功能強大。我將在這篇文章中說明 JavaScript 物件導向的特性,並說明如何透過這些特性,達到傳統程式語言 (C++/Java) 所難以完成的功能。

Written by Edward Hsieh/謝鎮澤 January 04, 2002

Everything is Object in JavaScript
開宗明義:在 JavaScript 中任何東西都是物件:變數是物件、函式是物件,常數也是物件。證明方式:

alert (typeof('abc'));
alert (typeof(123));
var ary = [123, "abc"];
alert (typeof(ary));

上面的 typeof 會顯示物件資料型態。得到結果分別是 string, number, object。

Create Objects in JavaScript
既然任何東西都是物件,那建立物件的方法就多了。直接看個例子:

var main = new Object; // 建立新物件
main.x = 123; // 設定物件成員變數(屬性)之一
main["y"] = "XYZ"; // 設定物件成員變數(屬性)之二
alert(main["x"]); // 取得物件屬性並輸出
alert(main.y);

可以看到在 JavaScript 中,main.x 與 main["x"] 這兩種語法是通用的。其實在其他語言中,這兩種表示法的語意並不相同。我稍後再作說明。

List All Members in an Object
這是 JavaScript 的必殺技,使用 JavaScript 的人務必要學會這個技巧。底下函式可以傳回一個物件的所有成員的字串表達式,包

括物件中的屬性及方法。在物件導向程式設計中,這種技術叫 reflection。

function listMember(main) {
var s = "";
for( key in main ) // 使用 in 運算子列舉所有成員
s += key + ": " + main[key] + "n";
return s;
}

範例碼中的 key 會對應到物件中的屬性名稱,如 "x" 或 "y",而 main[key] 則對應到屬性值。

說這項技巧是必殺技的原因是,你可以透過這項技巧,將物件封裝的黑箱打開來,看看裡面藏有什麼東西。我常用這項技巧來看看

IE 與 Mozilla 的 Dom 物件模型有何不同。試試看下面呼叫範例,就可以知道這項技巧的強大了:

var ary = [123, "abc"];
alert (listMember(ary));
alert (listMember(document.location));

Construct Object with Initial Value
要在建立物件的同時指定物件初始值,必須先透過 function 建立一個「原型物件」(或稱為 constructor),再透過 new 運算子建

立新物件。例如以下程式碼會建立一個二維陣列的原型,再產生一個新的二維物件。

function Array2DVar(x,y) { // 定義二維陣列原型
this.length = x;
this.x = x; // x 維度長度
this.y = y; // y 維度長度
for(var i = 0; i < this.length; i++) // 初始各元素值為 null this[i] = new Array(y); // this 代表物件本身 } var a2dv = new Array2DVar(10, 10); // 建立新的 10*10 的二維陣列 a2dv[1][3] = "ABC"; // 設定二維陣列元素值 a2dv[2][6] = "XYZ"; a2dv[9][9] = 1000; alert( a2dv[1][3]); // 取得二維陣列元素值,並顯示出來 alert( a2dv[2][6]); alert( a2dv[9][9]); Initial Array Object 在 JavaScript 中陣列也是物件 (其實近代多數語言中陣列也都是物件,只有像 C 或 Assembly 這類古老的

語言才不把陣列看成物件),因此也可以用 constructor 的語法來建構。當然 JavaScript 還提供了 [] 語法,以更方便建構陣列,

範例如下:

a = new Array("abc", "xyz", 1000); // constructor 語法,或 a = ["abc", "xyz", 1000]; // 陣列標準語法

陣列的元素可以是簡單的資料、其他物件,或是函數。舉個例子來在陣列裡面放函式:

b = [ // 使用函式作為陣列元素
function () { alert("這個好玩!") }, function () { alert("再按一次離開!") }, function () { alert("再來一次!") }, function () { alert("最後一次!") } ];

for (var i = 0; i < b.length ; i++) b[i](); 最後一個 for 迴圈是個有趣的應用。由於 b 陣列中現在存放的所有元素都是函式,因此我們可以對 b 的每個元素進行呼叫。 Object as Association Array
關連陣列 (Assocation Array) 又稱作 Map 或 Dictionary,是一種物件容器,其中可以放置許多的 key-value pair,以存取子物

件。在JavaScript 中,物件本身就可以作為關連陣列。以關連陣列的方式初始化物件的範例如下:

obj1 = {"a" : "Athens" , "b" : "Belgrade", "c" : "Cairo"};
alert(obj1["a"]); // 顯示 Athens
obj2 = { name: "Edward", showName: function() { alert(this.name); } // 使用函式作為物件屬性 }
obj2.showName(); // 顯示 Edward obj2.age = 23; // 屬性可以動態加入

其 中 obj1 儲存了三個子元素,其鍵 (key) 為 "a", "b" 與 "c",而值 (value) 為 "Athens", "Belgrade" 與 "Cairo"。obj2 中

showName 鍵所對應的值為 function,因此 obj2.showName() 即為函式呼叫。

Object as Return Value
雖然 Javascript 的函式只能傳回一個變數,但您卻可以將傳回值設定為物件,達到傳回 1個以上變數值的效果

function a () { return [32, 17]; }
b = a();
alert( b ); // 或 alert(a());

function pixel () { return {"x": 32, "y":17}; }
point = pixel ();
alert (point.x + "n" + point.y); // 或 alert (pixel().x + "n" + pixel().y);

Delegation Function Object
函式也是物件,只是其中包含的是程式的邏輯。這項特性可拿來作為委任式的程式設計,亦即使用委任函式當作另一函式的參數:

function doloop(begin, end, func) { // 這個函式是個 iterator
for (var i = begin; i < end; i++) { func(i); } } function func1(i) { // 印出 ** n ** document.writeln("** " + i + " ** "); } doloop(1, 10, func1); // 印出 1o 行 ** n ** doloop(20, 29, function(i) {document.writeln("## " + i + " ## "); }); Object = Properties + Behaviors
古有明訓:程式 = 資料結構 + 演算法。而物件是建構程式的基本單位,自然的具有相同的性質。物件除了有屬性 (property),也

可具有操作 (behavior),也就是函式。
假如我們要使用一維陣列來模擬二維陣列,那麼就無法使用 ary[x][y] 這種表示法來設定或取得陣列成員。不過我可以定義一個

set 方法來設定成員變數,而以 get方法來取得成員變數值。原型函式定義如下:

function Array2D(x,y){ // 以一維陣列模擬二維陣列的原型物件
this.length = x * y; // 陣列總長
this.x = x; // x 維度長度
this.y = y; // y 維度長度
for(var i = 0; i < this.length; i++) // 初始各元素值為 null this[i] = null; this.get = function(x,y){ // 成員函式:取得陣列第 [x,y]個元素值 return this[x*this.x + y]; } this.set = function(x,y,value){ // 成員函式:設定陣列第 [x,y] 個元素值 this[x*this.x + y] = value; } } 我們接著來使用它: var a2d = new Array2D(10, 10); // 建立新的「二維」陣列 a2d.set(1, 3, "ABC"); // 設定「二維」陣列元素值 a2d.set(2, 6, "XYZ"); a2d.set(9, 9, 1000); alert( a2d.get(1,3) ); // 取得「二維」陣列元素值,並顯示出來 alert( a2d.get(2,6) ); alert( a2d.get(9,9) ); Member Function Outside of Constructor
我們也可以將物件成員函式寫於原型物件之外。以下的Array2D物件與上一個範例中的 Array2物件有相同的作用,只不過這次是寫在原型物件之外。

function Array2D(x,y){ // 以一維陣列模擬二維陣列的原型物件
this.length = x * y; // 陣列總長
this.x = x; // x 維度長度
this.y = y; // y 維度長度
for(var i = 0; i < this.length; i++) // 初始各元素值為 null this[i] = null; this.get = Array2DGet; // 用這種方式把成員函式掛進來 this.set = Array2DSet; } function Array2DGet(x,y){ // 成員函式:取得陣列第 [x,y] 個元素值 return this[x*this.x + y]; } function Array2DSet(x,y,value){ // 成員函式:設定陣列第 [x,y] 個元素值 this[x*this.x + y] = value; } Dynamic Object Function
這裡說明如何為一個已定義物件,動態的加上其他操作的方法。
如 果一物件已定義完成,而您也使用它來建立了新的物件,這時候您想為原型物件增加新的操作 (而不修改原型物件的原始碼),讓

所有該物件的複本都能使用該操作,該如何達成呢?方法是使用物件的 prototype 屬性。以下這個例子,為 Array 這類 Object 在

執行期加入一個 max 方法,以取得陣列元素之最大值 (修改自微軟 jscript.chm之範例):

function array_max(){ // 定義求取 Array 最大值之函式
var i, max = this[0];
for (i = 1; i < this.length; i++){ if (max < this[i]) max = this[i]; } return max; } Array.prototype.max = array_max; // 在 Array 原型中加入 max 函式 上面的程式碼,首先建立一個 array_max 方法,以求取陣列之最大元素。接著將這個方法設定給 Array 原型物件。 var x = new Array(1, 2, 3, 4, 5, 6); // 透過 Array 建構子建立一陣列 // 想求取 x 中某一元素之最大值 var y = x.max( ); // 取得 x 之最大元素 Dynamic Mix in
假如物件 dynamic 有 mathod1, method2 兩個函式;而另一物件 main 有 methodA 及 methodB 兩個函式。現在我想把 dynamic 的

所有特性 (feature) 匯入到 main 中,我們可以在 main 中加上一個 imports 函式:

function main(){ // main 之建構子
// ...
this.imports = function (object) {
if( typeof object =="object")
for( value in object )
this[value] = object[value];
}
// ...
}

obj = new main();

main.imports(new dynamic()); // 匯入 dynamic 物件之所有功能

這個 imports 函式可以動態的為 main 加上另一物件的所有操作。這種 Mix in 的功能可是 C++/Java 的 static type 語言所望塵莫及的。


2008年8月4日 星期一

這個專家已經解說過非常多的遊戲,他對遊戲的"精屁"見解,配上熟練的操作與靈活的腦袋,包準各位對每一個他介紹過的遊戲都能印像深刻。

今天先拿一個大家比較熟析的超級瑪琍,來讓大家看看。

先想像一下這位教授是李季準,這樣比較能快速的"進入狀況"。

記得把聲音開大一點,這是講解,沒有聲音就不叫講解了,這個很重要

警告: 若首次觀賞此人作品,在末了解作者風格前,請專心觀看,不要分心吃飯或喝水,以免發生意外。

講解超級瑪琍


附加: 講解武林外傳 part1


附加: 講解武林外傳 part2


附加: 教你練神功part1


附加: 教你練神功part2


附加: 教你修電腦




##HIDEME##

##HIDEME##