求泡泡龙泡泡发射轨道算法.就是在泡泡龙发射的那个箭头前面加个瞄准线(200分)

  • 主题发起人 主题发起人 学习DELPHI
  • 开始时间 开始时间

学习DELPHI

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,拜托了~~~.
 
搞了半晚上没算出来,全画的不对,郁闷
 
收回,跟边碰撞还是很复杂的
 
我晕
初中数学题
第一步 要把坐标转换一下,Delphi是以左上角为0,0的
映射一下,把发射点变为 0,0
假设发射点为(x0,y0),真实点发坐标为(x1,y1)
则 新坐标映射公式为 x = x1 - x0; y = y0 - y1 ;(y取反值)
反向映射 为 x1 = x+x0; y1=y0-y;

原点知道,角度知道,很容易画线了吧?
原点(0,0) 计算直线另一点公式
tin(a)=y/x,壁是Y 则计算X 故 x = y/ tin(a) ; 是不是写成tin我就不太清楚了,数学公式没怎么用过,手上没Delphi.就是正切角.

碰撞反射没什么复杂的
左碰撞 角度 a 变成 a-Pi
右碰撞 角度 a 变成 a+Pi

只是数学题而已,代码就不用写了吧.

至于结束点 就是遇到物体结束的这个,就是沿路径检查而已.
可以反向检查,就是检查物体有没有落在路径之上.
 
画虚线的代码,ALPHA为角度,FromY,FromX为起点,CN_Right,CN_left,CN_top为边界
var step,x,y:integer;
step:=0;
while y>CN-top do
begin
step:=step+6;
y:=-round(step*sin(ALPHA))+FromY;
x:=round(step*cos(ALPHA))+FromX;
//旁边墙壁碰撞
if x>=CN_Right then
begin
FromX:=2*CN_Right-FromX;
ALPHA:=pi-ALPHA;
end;
if x<=CN_Left then
begin
FromX:=2*CN_Left-FromX;
ALPHA:=pi-ALPHA;
end;
//检查x,y处是否有球,有就退出循环
form1.Canvas.Pixels[x,y]:=clred;//画虚线的点
end;
 
还是有点难度的啊..呵呵.
 
谢谢各位,还有个问题没解决啊.怎么知道泡泡龙的发射角度?那是个图形?难道还要比较图形?,能不能给个例子啊.发我邮箱.谢谢

eagles007@126.com
 
发射角度是你自己定的呀,用户操作时改变的就是发射角度而已呀!
那你用户操作的是什么?
 
我不知道发射角度.只有一个窗体的句柄.最多能抓各图.那可能就是看看她角度的步长是多少吧.能给个源代码不.虫虫大侠
 
的看样没有人回答了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部