C#怎么写让游戏对象左右移动的代码?

这是游戏的基本算法,我做了个简单的例子。

如果你把VX+和VY+从数学中删除。Min(VX+),它将变成匀速运动。

直接复制以覆盖form类操作,无需控件。

公共?班级?最简单的加速运动

暗淡?左右,上下?作为?整数

暗淡?x,?y,?VX?VY?VA?作为?两倍

暗淡?WithEvents?时钟?作为?新的?计时器

暗淡?WithEvents?移动控件?作为?新的?标签

私人?Sub?Form1_Load(发送方?作为?对象,?e?作为?EventArgs)?手柄?我的基地。负荷

我。关键评论?=?真实的

VA?=?0.5

x?=?300.0

y?=?300.0

移动控制。背景色?=?颜色。中等人口

移动控制。尺寸?=?新的?尺寸(60,?60)

控制。添加(移动控件)

时钟。区间?=?25

启用时钟?=?真实的

结束?潜水艇

私人?Sub?Form1_KeyDown(发件人?作为?对象,?e?作为?KeyEventArgs)?手柄?我的基地。按键

如果?e .键码?=?钥匙。向上?然后呢?上下?=?-1

如果?e .键码?=?钥匙。下来?然后呢?上下?=?1

如果?e .键码?=?钥匙。向左?然后呢?关于什么?=?-1

如果?e .键码?=?钥匙。对吗?然后呢?关于什么?=?1

结束?潜水艇

私人?Sub?Form1_KeyUp(发件人?作为?对象,?e?作为?KeyEventArgs)?手柄?我的基地。击键

如果?e .键码?=?钥匙。向上?然后呢?上下?=?0

如果?e .键码?=?钥匙。下来?然后呢?上下?=?0

如果?e .键码?=?钥匙。向左?然后呢?关于什么?=?0

如果?e .键码?=?钥匙。对吗?然后呢?关于什么?=?0

结束?潜水艇

私人?Sub?Clock _Tick(发件人?作为?对象,?e?作为?EventArgs)?手柄?时钟。滴答声

VX?=?数学。闵(VX?+?关于什么?*?VA,?10)

VY?=?数学。闵(VY?+?上下?*?VA,?10)

x?+=?甲硫膦酸丙胺乙酯

y?+=?小牛肉酵母

如果?x?& lt?0?然后呢?x?=?2?:?VX?=?VX

如果?y?& lt?0?然后呢?y?=?2?:?VY?=?VY

如果?x?& gt?宽度?-?移动控制。宽度?然后呢?x?=?宽度?-?移动控制。宽度?-?2?:?VX?=?VX

如果?y?& gt?身高?-?移动控件。身高?然后呢?y?=?身高?-?移动控件。身高?-?2?:?VY?=?VY

移动控制。位置?=?新的?点(X,?y)

结束?潜水艇

结束?不好意思,是VB版的。以下是C#版本。

公共?部分?班级?Form1?:?形式?{

公共?Form1()?{

initialize component();

}

int?左右;

int?上下;

双倍?x;

双倍?y;

双倍?VX;

双倍?VY;

双倍?VA;

定时器?时钟?=?新的?timer();

标签?移动控件?=?新的?label();

私人?作废?Form1_Load(对象?发件人?EventArgs?e)?{

这个。关键评论?=?真实;

VA?=?0.5;

x?=?300.0;

y?=?300.0;

移动控制。背景色?=?颜色。中等人口;

移动控制。尺寸?=?新的?尺寸(60,?60);

控制。添加(移动控件);

按键?+=?form 1 _ KeyDown;

KeyUp?+=?form 1 _ KeyUp;

时钟。滴答?+=?Clock _ Tick

时钟。区间?=?25;

启用时钟?=?真实;

}

私人?作废?Form1_KeyDown(对象?发件人?KeyEventArgs?e)?{

如果?(e.KeyCode?==?钥匙。向上)

上下?=?-1;

如果?(e.KeyCode?==?钥匙。向下)

上下?=?1;

如果?(e.KeyCode?==?钥匙。左)

关于什么?=?-1;

如果?(e.KeyCode?==?钥匙。右)

关于什么?=?1;

}

私人?作废?Form1_KeyUp(对象?发件人?KeyEventArgs?e)?{

如果?(e.KeyCode?==?钥匙。向上)

上下?=?0;

如果?(e.KeyCode?==?钥匙。向下)

上下?=?0;

如果?(e.KeyCode?==?钥匙。左)

关于什么?=?0;

如果?(e.KeyCode?==?钥匙。右)

关于什么?=?0;

}

私人?作废?Clock _Tick(对象?发件人?EventArgs?e)?{

VX?=?数学。闵(VX?+?关于什么?*?VA,?10);

VY?=?数学。闵(VY?+?上下?*?VA,?10);

x?+=?VX;

y?+=?VY;

如果?(X?& lt?0)?{?x?=?2;?VX?=?-VX;?}

如果?(Y?& lt?0)?{?y?=?2;?VY?=?-VY;?}

如果?(X?& gt?宽度?-?移动控制。宽度)?{?x?=?宽度?-?移动控制。宽度?-?2;?VX?=?-VX;?}

如果?(Y?& gt?身高?-?移动控制。身高)?{?y?=?身高?-?移动控件。身高?-?2;?VY?=?-VY;?}

移动控制。位置?=?新的?点((int)X,?(int)Y);

}

}