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 已经极限了。

而且,移动时看起来也不是很顺。所以,就将就一点好了。


- 下载

点击此处下载本次小游戏

---档案过大可能会被误判为病毒,此档案保证无毒,请尽管放心---


 

 

 

 

 

 

查看原文 >>
相关文章