还有一个问题,鼠标滚轴向上滚动时,汽车向右旋转10°,向下滚动时,汽车向左旋转10°。
34 个解决方案
#1
帮顶
#2
游戏?看着挺有意思,期待高手回答
#3
满有意思的,帮顶
#4
鼠标滚轴向上滚动时,汽车向右旋转10°,向下滚动时,汽车向左旋转10°。
--------------------------------------------------------------
在鼠标事件里捕获。判断鼠标的动作是滚动后,给出相应动作。
鼠标移动到哪儿,汽车就到哪儿,
---------------------------
鼠标事件里的第二个参数e.X,e.Y就是鼠标位置,把汽车移到该位置,就OK。
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
-------------------------------------------------------------------------------------
在汽车的move事件里判断边界是否与其他控件边界相交,也就是判断汽车控件里的任何一点在其他静态物体的控件里了。若相交,那么给汽车另一个状态。
--------------------------------------------------------------
在鼠标事件里捕获。判断鼠标的动作是滚动后,给出相应动作。
鼠标移动到哪儿,汽车就到哪儿,
---------------------------
鼠标事件里的第二个参数e.X,e.Y就是鼠标位置,把汽车移到该位置,就OK。
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
-------------------------------------------------------------------------------------
在汽车的move事件里判断边界是否与其他控件边界相交,也就是判断汽车控件里的任何一点在其他静态物体的控件里了。若相交,那么给汽车另一个状态。
#5
撞车模拟,有创意,帮顶
#6
汽车旋转不好实现啊。兄弟,可能需要用GDI画图了。比较麻烦。
#7
#8
先用代码具体实现一下:汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
#9
UP
#10
假设你已经使你的汽车控件在移动了(你可以用Timer实现控件的移动)。(这里用Button代替你的汽车)
你随便建个项目,放个FORM,FORM里在水平的位置放两个BUTTON,默认设置就行了。然后在BUTTON添加一个MOVE事件。
然后用下面的代码替换你的FORM1.CS里的代码。就可以了。
这代码效果是,如果button1撞到button2后就回退,没撞到就一直前进。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
bool isback = false; //是否碰到button2的标志
Timer timer1 = new Timer();
public Form1()
{
InitializeComponent();
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (isback)
this.button1.Left -= 10;
else
this.button1.Left += 10;
}
private void button1_Move(object sender, EventArgs e)
{
if (button1.Left + button1.Width > button2.Left)
{
isback = true;
}
}
}
}
#11
友情帮顶!
#12
帮顶~~~~~
#13
private void button1_Move(object sender, EventArgs e)
{
if (button1.Left + button1.Width > button2.Left)
{
isback = true;
}
}
个人认为button1.Left + button1.Width == button2.Left 就应该算是撞上了
难道需要产生形变?
如果有形变的那么按钮的大小是否也应该变?
这时候就有更复杂的东西需要考虑了 呵呵
#14
在滚轮滚动时候 btn的移动方向也有改动
反正无聊 我来帮你实现实现 嘿嘿
关键问题是 汽车的速度?
反正无聊 我来帮你实现实现 嘿嘿
关键问题是 汽车的速度?
#15
13楼要注意计算机模拟与现实的区别。你自己搞个边界相等的状态出来看看?
#16
友情帮顶
#17
说说线路问题
汽车与墙撞后,汽车发生改变,
-------------------------
和光线折射路线差不多,入射角等于折射角,有公式,你可以查查物理书
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
---------------------------------------
这个两者都会改变,而且遵守动量守恒定律,速度,方向都会改变,线路角度依然类似光线折射
汽车与墙撞后,汽车发生改变,
-------------------------
和光线折射路线差不多,入射角等于折射角,有公式,你可以查查物理书
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
---------------------------------------
这个两者都会改变,而且遵守动量守恒定律,速度,方向都会改变,线路角度依然类似光线折射
#18
深切关注~~~~~
#19
顶起,顺便问下,汽车是外形改变还是路径改变?
#20
帮你友情UP下吧
#21
外形改变,撞车了嘛,所以要改变
#22
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace car
{
public partial class Form1 : Form
{
bool isback = false; //是否碰到button2的标志
Timer timer1 = new Timer();
public Form1()
{
InitializeComponent();
timer1.Disposed += new EventHandler(timer1_Disposed);
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
}
void timer1_Disposed(object sender, EventArgs e)
{
MessageBox.Show("win");
}
void Form1_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta == 120)
{
int temp1 = up;
up = temp1 + 2;
int temp2 = down;
down = temp2 + 2;
}
else
{
int temp1 = up;
up = temp1 - 2;
int temp2 = down;
down = temp2 - 2;
}
}
int up = 0;
int down = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (isback)
{
this.button1.Left -= 10;
this.button1.Top += up;
}
else
{
this.button1.Left += 10;
this.button1.Top += down;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
MessageBox.Show("lose!");
return;
}
private void button1_Move_1(object sender, EventArgs e)
{
if (track())
{
isback = true;
textBox1.Text = "sos";
}
}
bool track()
{
Rectangle rec = button2.Bounds;
Point pt = new Point(button1.Right, button1.Top);
Point pt2 = new Point(button1.Right, button1.Top - button1.Width);
if (rec.Contains(pt))
{
return true;
}
else if (rec.Contains(pt2))
{
return true;
}
else
{
return false;
}
}
}
}
基本套用8楼的代码
加了两个变量
同时加了一个方法检测是否两个按钮牛有接触
使用了矩形的Contains()
通过MouseWheel 事件来控制移动的方向的偏转
#23
基本上就是这个思路吧
楼主自己设置下移动的速度
包括timer的计算速度
同时位移坐标 以及碰撞的算法
楼主自己设置下移动的速度
包括timer的计算速度
同时位移坐标 以及碰撞的算法
#24
何必要引用GDI ?
改变控件上图片的位置就可以了撒
还有就是 10°的角度这个计算 应该是看你的控件大小以及移动的位移来确定的
#25
up
#26
学习..
帮顶..
收藏..
帮顶..
收藏..
#27
顶。。。。。。。。。
#28
ding
#29
hehe
#30
这个东西你自己写?....
我觉得套用某个物理模型更实际一点
我觉得套用某个物理模型更实际一点
#31
顶
#32
路过,飘过,看过,顶过...
#33
不信遇不到高人
#34
有点意思
#1
帮顶
#2
游戏?看着挺有意思,期待高手回答
#3
满有意思的,帮顶
#4
鼠标滚轴向上滚动时,汽车向右旋转10°,向下滚动时,汽车向左旋转10°。
--------------------------------------------------------------
在鼠标事件里捕获。判断鼠标的动作是滚动后,给出相应动作。
鼠标移动到哪儿,汽车就到哪儿,
---------------------------
鼠标事件里的第二个参数e.X,e.Y就是鼠标位置,把汽车移到该位置,就OK。
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
-------------------------------------------------------------------------------------
在汽车的move事件里判断边界是否与其他控件边界相交,也就是判断汽车控件里的任何一点在其他静态物体的控件里了。若相交,那么给汽车另一个状态。
--------------------------------------------------------------
在鼠标事件里捕获。判断鼠标的动作是滚动后,给出相应动作。
鼠标移动到哪儿,汽车就到哪儿,
---------------------------
鼠标事件里的第二个参数e.X,e.Y就是鼠标位置,把汽车移到该位置,就OK。
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
-------------------------------------------------------------------------------------
在汽车的move事件里判断边界是否与其他控件边界相交,也就是判断汽车控件里的任何一点在其他静态物体的控件里了。若相交,那么给汽车另一个状态。
#5
撞车模拟,有创意,帮顶
#6
汽车旋转不好实现啊。兄弟,可能需要用GDI画图了。比较麻烦。
#7
#8
先用代码具体实现一下:汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
#9
UP
#10
假设你已经使你的汽车控件在移动了(你可以用Timer实现控件的移动)。(这里用Button代替你的汽车)
你随便建个项目,放个FORM,FORM里在水平的位置放两个BUTTON,默认设置就行了。然后在BUTTON添加一个MOVE事件。
然后用下面的代码替换你的FORM1.CS里的代码。就可以了。
这代码效果是,如果button1撞到button2后就回退,没撞到就一直前进。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
bool isback = false; //是否碰到button2的标志
Timer timer1 = new Timer();
public Form1()
{
InitializeComponent();
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (isback)
this.button1.Left -= 10;
else
this.button1.Left += 10;
}
private void button1_Move(object sender, EventArgs e)
{
if (button1.Left + button1.Width > button2.Left)
{
isback = true;
}
}
}
}
#11
友情帮顶!
#12
帮顶~~~~~
#13
private void button1_Move(object sender, EventArgs e)
{
if (button1.Left + button1.Width > button2.Left)
{
isback = true;
}
}
个人认为button1.Left + button1.Width == button2.Left 就应该算是撞上了
难道需要产生形变?
如果有形变的那么按钮的大小是否也应该变?
这时候就有更复杂的东西需要考虑了 呵呵
#14
在滚轮滚动时候 btn的移动方向也有改动
反正无聊 我来帮你实现实现 嘿嘿
关键问题是 汽车的速度?
反正无聊 我来帮你实现实现 嘿嘿
关键问题是 汽车的速度?
#15
13楼要注意计算机模拟与现实的区别。你自己搞个边界相等的状态出来看看?
#16
友情帮顶
#17
说说线路问题
汽车与墙撞后,汽车发生改变,
-------------------------
和光线折射路线差不多,入射角等于折射角,有公式,你可以查查物理书
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
---------------------------------------
这个两者都会改变,而且遵守动量守恒定律,速度,方向都会改变,线路角度依然类似光线折射
汽车与墙撞后,汽车发生改变,
-------------------------
和光线折射路线差不多,入射角等于折射角,有公式,你可以查查物理书
界面上有些静态物体,如果移动时,汽车与静态物体发生碰撞,那么汽车发生改变,或者静态物体发生改变。
---------------------------------------
这个两者都会改变,而且遵守动量守恒定律,速度,方向都会改变,线路角度依然类似光线折射
#18
深切关注~~~~~
#19
顶起,顺便问下,汽车是外形改变还是路径改变?
#20
帮你友情UP下吧
#21
外形改变,撞车了嘛,所以要改变
#22
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace car
{
public partial class Form1 : Form
{
bool isback = false; //是否碰到button2的标志
Timer timer1 = new Timer();
public Form1()
{
InitializeComponent();
timer1.Disposed += new EventHandler(timer1_Disposed);
timer1.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new EventHandler(timer1_Tick);
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
}
void timer1_Disposed(object sender, EventArgs e)
{
MessageBox.Show("win");
}
void Form1_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta == 120)
{
int temp1 = up;
up = temp1 + 2;
int temp2 = down;
down = temp2 + 2;
}
else
{
int temp1 = up;
up = temp1 - 2;
int temp2 = down;
down = temp2 - 2;
}
}
int up = 0;
int down = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (isback)
{
this.button1.Left -= 10;
this.button1.Top += up;
}
else
{
this.button1.Left += 10;
this.button1.Top += down;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
MessageBox.Show("lose!");
return;
}
private void button1_Move_1(object sender, EventArgs e)
{
if (track())
{
isback = true;
textBox1.Text = "sos";
}
}
bool track()
{
Rectangle rec = button2.Bounds;
Point pt = new Point(button1.Right, button1.Top);
Point pt2 = new Point(button1.Right, button1.Top - button1.Width);
if (rec.Contains(pt))
{
return true;
}
else if (rec.Contains(pt2))
{
return true;
}
else
{
return false;
}
}
}
}
基本套用8楼的代码
加了两个变量
同时加了一个方法检测是否两个按钮牛有接触
使用了矩形的Contains()
通过MouseWheel 事件来控制移动的方向的偏转
#23
基本上就是这个思路吧
楼主自己设置下移动的速度
包括timer的计算速度
同时位移坐标 以及碰撞的算法
楼主自己设置下移动的速度
包括timer的计算速度
同时位移坐标 以及碰撞的算法
#24
何必要引用GDI ?
改变控件上图片的位置就可以了撒
还有就是 10°的角度这个计算 应该是看你的控件大小以及移动的位移来确定的
#25
up
#26
学习..
帮顶..
收藏..
帮顶..
收藏..
#27
顶。。。。。。。。。
#28
ding
#29
hehe
#30
这个东西你自己写?....
我觉得套用某个物理模型更实际一点
我觉得套用某个物理模型更实际一点
#31
顶
#32
路过,飘过,看过,顶过...
#33
不信遇不到高人
#34
有点意思