2

 


Tom & Jerry 貓抓老鼠


 

這是我大一的時候寫過的程式,記得當時分數是 100%。多年以後,重寫此程式,從鍵盤控制,變成滑鼠點擊。證明我的程式能力有在進步。


- 界面介紹

圖面一開始便有一隻老鼠叫 Jerry, 一隻貓咪叫 Tom,當然還有一隻狗(完全抄襲著名動畫TOM&JERRY啊~)。

2  1


- 玩法介紹

每次遊戲30秒,看玩家能吃到多少的起司,碰到貓和狗都會提前結束遊戲,必須用滑鼠點擊來控制老鼠,3 秒後貓咪出來捕捉老鼠,5 秒後狗也會出來打貓,貓鼠狗的大亂鬥。

順帶一提,老鼠因為吃了起司會越跑越慢,要小心。


- 程式介紹

1. 判定碰撞發生。

正常來說,會把照片放入 Picturebox 裡面,且都是用 New Point 控制角色的移動。

而程式會以 Picturebox 的左上角為點位。( X, Y)

建議,計算角色中心與坐標的差別數字,在從圓心算出一個圓線,以此為碰撞臨界點。

本次程式使用正方形為準,因此玩起來會不太準確,但已經不錯了。

 

2. 移動角色。

一開始時,找出兩點的 X, Y 差距,然後再使用 Timer,不斷減少兩邊差距,直到兩點吻合。

但這看起來怪,因為角色可能會把 X 走完,然後走 Y。變成開始走斜線,後尾走直線。但相對寫法最簡單。

 

因此稍微改良一下,走法看起來比較正常。

 

假設,初始坐標:( x1, y1 ) ----->  目標坐標 ( x2, y2 )

首先,X = x1 - x2, Y = y1 - y1 

需要移動的總數 S = X + Y

每次給予的移動量 T = 10(假設)

(下一步往 X 方向的距離) sX = ( X / S ) * T

(下一步往 Y 方向的距離) sY = ( Y / S ) * T

 

例:若 x1 = x2 , X = 0, sX = 0,則只會走 Y 軸,反之。

 

a. 此算法不怕正負值, x1 , x2 排前後無所謂。

b. T 值越大,每次走越遠,且 T = sX + sY。

 

3. 角色的走位。

每個角色賦予一個 Timer。每次移動前獲得自己坐標,及目標坐標。計算下次移動的 sX & sY 。

 

4.更改移動定值。

更改移動定值,或更改 Timer 的 Interval。可使角色步伐變快。

例如,老鼠跑最快,貓咪第二,狗最慢。

其中,老鼠吃到起司後,越跑越慢;貓咪越來越生氣,所以越跑越快。

這些都是可以自行變化的。


- 結尾

VB.net 對於刷新畫面的頻率真的不太行。像 Timer 的 Interval 最低差不多到 10 已經極限了。

而且,移動時看起來也不是很順。所以,就將就一點好了。


- 下載

點擊此處下載本次小遊戲

---檔案過大可能會被誤判為病毒,此檔案保證無毒,請儘管放心---


 

 

 

 

 

 

查看原文 >>
相关文章