19,464
社区成员
发帖
与我相关
我的任务
分享
//设置光照和深度模型
Init();
// 调用场景绘制函数
f (m_Show==2)
{
OnFlash();
}
// 完成图形的绘制
glFinish();
// 启用双缓冲
SwapBuffers(m_pDC->GetSafeHdc());
void CMycodeView::OnFlash() //动态演示过河过程
{
int lc, rc; //左、右岸小人个数
rc = 0;
int mc; //需要移动的小人个数
mc = 0;
int i; //循环变量
int c_last;
c_last = p->node.cannibal;
if(p->node.boat == 0)
{ //如果船在左岸,人移动到右岸,并修改船标志
lc = p->node.cannibal;
//计算要移动的人数
mc = abs(c_last - lc);
//计算右岸人数
rc = Max_p - lc - mc;
//画左岸小人
for(i=0; i <lc; i++)
{
glLoadIdentity(); // Reset The Current Modelview Matrix
glBegin(GL_TRIANGLES); // Draw A Triangle
glColor3f(0.0f,1.0f,0.0f); // Set The Color To green
glVertex3f( -0.5f-i*0.12f, 0.37f, 1.0f);
glVertex3f( -0.45f-i*0.12f, 0.5f, 1.0f);
glVertex3f( -0.4f-i*0.12f, 0.37f, 1.0f);
glEnd();
}
//画移动的人
for(i=0; i <mc; i++)
{
glLoadIdentity();
glTranslatef(t_c1,0.0f,0.0f); //Translate along x axis
glBegin(GL_TRIANGLES);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( -0.5f-i*0.12f, 0.37f, 1.0f);
glVertex3f( -0.45f-i*0.12f, 0.5f, 1.0f);
glVertex3f( -0.4f-i*0.12f, 0.37f, 1.0f);
glEnd();
}
//控制移动变量
if(t_c1 <1.2f)
{
t_c1+=0.005f;
}
if(t_c1==1.2f)
{
t_c1 = 0.f;
}
c_last = p->node.cannibal;
rc+=mc;
}
//如果船在右岸代码同上,省略
//画界河的代码省略
}
void CMycodeView::OnFlash() //动态演示过河过程
{
int lc, rc; //左、右岸小人个数
rc = 0;
int mc; //需要移动的小人个数
mc = 0;
int i; //循环变量
int c_last;
c_last = p->node.cannibal;
if(p->node.boat == 0)
{ //如果船在左岸,人移动到右岸,并修改船标志
lc = p->node.cannibal;
//计算要移动的人数
mc = abs(c_last - lc);
//计算右岸人数
rc = Max_p - lc - mc;
//画左岸小人
for(i=0; i <lc; i++)
{
glLoadIdentity(); // Reset The Current Modelview Matrix
glBegin(GL_TRIANGLES); // Draw A Triangle
glColor3f(0.0f,1.0f,0.0f); // Set The Color To green
glVertex3f( -0.5f-i*0.12f, 0.37f, 1.0f);
glVertex3f( -0.45f-i*0.12f, 0.5f, 1.0f);
glVertex3f( -0.4f-i*0.12f, 0.37f, 1.0f);
glEnd();
}
//画移动的人
for(i=0; i <mc; i++)
{
glLoadIdentity();
glTranslatef(t_c1,0.0f,0.0f); //Translate along x axis
glBegin(GL_TRIANGLES);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( -0.5f-i*0.12f, 0.37f, 1.0f);
glVertex3f( -0.45f-i*0.12f, 0.5f, 1.0f);
glVertex3f( -0.4f-i*0.12f, 0.37f, 1.0f);
glEnd();
}
//控制移动变量
if(t_c1 <1.2f)
{
t_c1+=0.005f;
}
if(t_c1==1.2f)
{
t_c1 = 0.f;
}
c_last = p->node.cannibal;
rc+=mc;
}
//如果船在右岸代码同上,省略
//画界河的代码省略
}
//设置光照和深度模型
Init();
// 调用场景绘制函数
f (m_Show==2)
{
OnFlash();
}
// 完成图形的绘制
glFinish();
// 启用双缓冲
SwapBuffers(m_pDC->GetSafeHdc());
p = output.front->next;
while(p!=output.rear)
{
p = p->next;
InvalidateRect(NULL,FALSE);
}