java小球碰撞实验报告_小球撞击试实验报告.doc

这篇博客详细介绍了如何使用Java进行小球碰撞的物理过程模拟。通过VC++加载位图资源,实现小球的显示与动态移动。利用定时器更新坐标,结合物理公式处理碰撞,并添加背景图片,提供用户输入小球的质量和速度参数。
摘要由CSDN通过智能技术生成

小球撞击试实验报告

小球撞击试验报告

试验目的:实现两个质量,速度不同的小球碰撞的物理过程。

试验要求:可以任意输入两小球的速度和质量。

试验实现过程:

首先要有两个不同的小球,分别命名为小球A,小球B,通过画图软件画两个不同颜色的立体小球。其格式为.bmp。通过VC++的位图引入加载到资源当中。

小球引入到资源后,就该实现两球的碰撞。第一个要问题是怎样把引入的小球在窗口中显示。通过classwizard在视图类加载消息响应函数oncreat,创建一个窗口,用位图显示的语句使小球在窗口中显示。小球在窗口显示之后就该让小球动起来。小球的运动本质上是通过时间让小球的坐标不断的改变。这就该想到用classwizard在视图类添加消息响应函数timer,通过制定一个时间定时器调用时间函数timer。这步做好之后,就该考虑怎样实现小球碰撞的物理过程,利用物理公式来实现这个过程。然后添加背景图片。

代码如下:

声明视图类变量。

public:

double mass_1,mass_2;

double v1,v2;

double m_ptpos1_x,m_ptpos1_y,m_ptpos2_x,m_ptpos2_y;

CBitmap m_Bitmap,m_Bitmap1,m_Bitmap2;

double n_FrameWidth,n_FrameWidth1,n_FrameWidth2;

double n_FrameHeight,n_FrameHeight1,n_FrameHeight2;

int i;

CBrush m_BKBrush;

2添加资源。

3.初始化函数。

mass_1=0;

mass_2=0;

v1=0;

v2=0;

i=0;

CBitmap *pBitmap=new CBitmap;

ASSERT(pBitmap);

pBitmap->LoadBitmap(IDB_BITMAP4);

m_BKBrush.CreatePatternBrush(pBitmap);

delete pBitmap;

4. 添加消息响应函数OnCreate。

CRect rect;

GetClientRect(&rect);

CXiaoQiudialog dlg;

m_Bitmap2.LoadBitmap(IDB_BITMAP3);

m_Bitmap.LoadBitmap(IDB_BITMAP1);

m_Bitmap1.LoadBitmap(IDB_BITMAP2);

BITMAP bm,bm1,bm2;

m_Bitmap2.GetBitmap(&bm2);

n_FrameHeight2=bm2.bmHeight;

n_FrameWidth2=bm2.bmWidth;

m_Bitmap1.GetBitmap(&bm1);

n_FrameHeight1=bm1.bmHeight;

n_FrameWidth1=bm1.bmWidth;

m_Bitmap.GetBitmap(&bm);

n_FrameWidth=bm.bmWidth;

n_FrameHeight=bm.bmHeight;

mass_1=dlg.m_M1;

mass_2=dlg.m_M2;

v1=dlg.m_V1;

v2=dlg.m_V2;

m_ptpos1_x=0;

m_ptpos1_y=50;

m_ptpos2_x=900;

m_ptpos2_y=50;

SetTimer(1,1,NULL);

5.添加消息响应函数OnTimer。

CRect rect(m_ptpos1_x,m_ptpos1_y,m_ptpos1_x+n_FrameWidth,m_ptpos1_y+n_FrameHeight);

CRect rect3(m_ptpos2_x,m_ptpos2_y,m_ptpos2_x+n_FrameWidth1,m_ptpos2_y+n_FrameHeight1);

InvalidateRect(&rect3);

InvalidateRect(&rect);

UpdateWindow();

CString str,str1;

CStatusBar *pstatus=(CStatusBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR);

if (pstatus)

{

str1.Format("小球A的质量:%f,小球B的质量:%f",mass_1,mass_2);

str.Format("速度:v1=%f:v2=%f",v1,v2);

pstatus->SetPaneText(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值