———— / 作品賞析 / ————
今天CC哥引用國外一個小朋友做的小游戲,來跟大家講解一下如何把一個小游戲增加一些特效來變得更好玩和更好看。這個小游戲并不復雜,但是CC哥自己玩了半天,仍然沒有突破網友玩的最高分,再接再厲!
CC哥第一眼被這個小游戲吸引的就是這個小球的虛影,碰撞游戲很多,但是大多沒有虛影,第二個CC哥覺得有意思的是,當我點擊結束按鈕時,游戲能恢復到初始畫面,這個怎么實現的?今天CC哥帶著大家一步一步來分析這個小程序,看看亮點在哪里。
———— / 正式開講 / ————
我么從第一步看,當程序開始的時候會有一個程序封面,就跟一本書的封面一樣,封面越漂亮,越吸引大家去玩,也就是作品的第一印象,所以很值得用心設計。
———— / 程序封面角色代碼 / ————
通常,程序的封面會顯示1~2面后會慢慢消失。進入初始界面。那這個慢慢消失的小技巧是怎么做的?
大家看一下代碼,中間的一段10次的循環就是讓封面逐漸虛化消失的關鍵。這里注意,虛像這個參數代表了透明度,0為不透明,100為完全透明。當參數每次增加10到100的時候,封面就完全虛化掉了。然后廣播一個‘begin’,通知初始界面可以顯示了。那么最后一段循環是做什么用的?
程序技巧:按了停止按鈕后,程序的執行。
通常按了停止按鈕之后,理論上所有的程序都會停止,但是值得注意的是,我們在程序中給角色做的任何特效的改變,也會回到角色的初始狀態。所以這段程序就是保證程序封面時刻顯示在最上方,只是因為是透明的,所以你看不見。(完全透明不等于隱藏)所以當你在任何時候按停止按鈕的時候,程序封面回到初始狀態,特效消失,也就重新顯示出來了。
———— / 程序初始化界面(結束界面)代碼 / ————
這個角色包含了兩個造型,一個是程序的初始界面,一個是程序的結束界面。請注意,在結束界面里面有一個黃色的0,這也是一個小技巧。其實它是一個變量。變量在程序界面上有三種顯示形式,其中一種就是只顯示變量的值,不顯示變量的名稱。(雙擊變量可以切換顯示方式)通常游戲都會有記分,等游戲結束后顯示一下得分。這個小技巧就是,把變量拖到要顯示得分的位置上,在程序結束后顯示得分。
程序部分就沒什么好介紹了,當收到開始和結束的消息的時候,進行造型切換。在收到開始的時候等待鼠標按下,鼠標按下后隱藏角色,通知其他角色程序開始。當游戲失敗后,將角色顯示出來,然后把造型切換到結束造型。
———— / 程序初始化界面(結束界面)代碼 / ————
四個擋板的代碼比較簡單,很好理解。大家注意到沒?這四個擋板的位置是根據鼠標移動的,兩個豎的擋板始終x位置是不變的,而y的位置始終是跟隨鼠標y的位置。而橫向擋板的y的位置是不變的,而x的位置始終是跟隨鼠標x的位置。
這里不得不佩服編程者的想象力,咱們平常做這種彈球小游戲的時候,擋板通常只做一個,而這個作者用了這么簡單的方法,就同時控制了4個擋板,將咱們平常的彈球小游戲的好玩性大大提高了。所以編程不是要做得多復雜,而是看你有多大的想象力!經常國內的培訓班一會教大家做瘋狂小雞了,一會跑酷了,一會我的世界了,程序越教越復雜,好像學會了很多東西,但是卻沒有想想這些都是一些別人做過的游戲了,并不能培養孩子們的想象力。所以CC哥愿意用國外的一些例子,不是因為這些例子有多復雜,而是讓大家學習一下他們的想象力。
———— / 小球的代碼 / ————
小球的代碼部分為主要代碼,其中最主要的一部分代碼是正常運行的小球代碼:跟擋板碰撞后的代碼和沒有碰到邊緣或擋板時正常移動的代碼。
這段代碼比較簡單,但是注意兩個點,第一是每次碰到檔板后180度反轉,同時加上一個隨機偏差。這樣既保證了小球能夠反彈回來,同時方向還能發生一定范圍的隨機轉向。第二是為了增加游戲的趣味性,一定要適當的不斷增加難度,這里面就是小球的速度會越來越快。
另一部分代碼是小球碰到邊界時游戲結束的代碼。
———— / 小球的特效 / ————
本講座一開始的時候CC哥就提到了這個游戲的一個亮點,就是小球的虛影,我們來看作者是怎么實現的。
這段程序CC哥都很佩服,非常簡單,構思卻非常巧妙。作者很巧妙的用了克隆體的概念,從程序開始就不斷的克隆自己,然后讓每一個克隆體快速的不斷虛化到透明后刪除克隆體,這樣就使小球在運動的時候,不斷的在身后留下一個個不斷虛化的克隆體。
———— /總結 / ————
好了今天的程序講解就到這里,大家有沒有通過這個作品看到一個好作品的創意。所以CC哥這個講座想告訴大家的是一個好的程序不在乎到底有多復雜,而想象力才是王道!
超乎想象的使用體驗