⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hoopstestview.cpp

📁 使用HOOPS库开发的一个教学演示工具。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	if (danbai_jindu < 4)
	{
		danbai_jindu = 4;
	}
}

void ChoopstestView::OnTanhuang1()
{
	WriteToFile("看弹簧实验介绍");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/tanhuang_introduce");
		HC_Include_Segment("/tools/tanhuang");
	HC_Close_Segment();

	HC_Update_Display();
	state = 11;
	StopSim(2);
	if (tanhuang_jindu < 1)
	{
		tanhuang_jindu = 1;
	}
}

void ChoopstestView::OnTanhuang2()
{
	WriteToFile("做弹簧实验猜一猜");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/tanhuang_guess");
		HC_Include_Segment("/tools/tanhuang");
	HC_Close_Segment();

	HC_Update_Display();
	state = 12;
	StopSim(2);
	if (tanhuang_jindu < 2)
	{
		tanhuang_jindu = 2;
	}
}

void ChoopstestView::OnTanhuang3()
{
	WriteToFile("看弹簧实验做一做");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/tanhuang_try");
		HC_Include_Segment("/tools/tanhuang");
	HC_Close_Segment();

	HC_Update_Display();
	state = 13;
	StopSim(2);
	if (tanhuang_jindu < 3)
	{
		tanhuang_jindu = 3;
	}
}

void ChoopstestView::OnTanhuang4()
{
	WriteToFile("做弹簧实验想一想");

	HC_Open_Segment_By_Key(m_pHView->GetModelKey());
		HC_Flush_Contents(".","everything");
		HC_Include_Segment("/tanhuang_think");
		HC_Include_Segment("/tools/tanhuang");
	HC_Close_Segment();

	HC_Update_Display();
	state = 14;
	StopSim(2);
	if (tanhuang_jindu < 4)
	{
		tanhuang_jindu = 4;
	}
}
BOOL ChoopstestView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
	//屏蔽掉基类的鼠标滚轮Zoom处理
	//return CHoopsView::OnMouseWheel(nFlags, zDelta, pt);
	return FALSE;
}

void ChoopstestView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
	//屏蔽掉基类的鼠标双击事件处理
	//CHoopsView::OnLButtonDblClk(nFlags, point);
}

void ChoopstestView::OnLButtonDown(UINT nFlags, CPoint point)
{
	down_point = point;
	degree = fPhase;

	switch (state)
	{
	case 3:
		{
			WriteToFile("开始做单摆实验。默认实验道具为短线,小球");

			HC_Open_Segment_By_Key(m_pHView->GetModelKey());
				HC_Flush_Contents(".","everything");
				HC_Include_Segment("/danbai_dotry");
			HC_Close_Segment();
			HC_Update_Display();

			state = 5;
			LocalSetOperator(new HOpSelectArea(m_pHView));
			break;
		}
	case 5:
		{
			//让基类处理选择事件
			CHoopsView::OnLButtonDown(nFlags, point);
			CHoopsView::OnLButtonUp(nFlags, point);

			HSelectionSet * st = m_pHView->GetSelection();
			if(st->GetSize() > 0)
			{
				HC_KEY sg;
				sg = st->GetAt(0);
				if (sg == keyBigBall)
				{
					WriteToFile("道具选择为大球");
					fBallSize = 0.2;
				}
				if (sg == keySmallBall)
				{
					WriteToFile("道具选择为小球");
					fBallSize = 0.1;
				}
				if (sg == keyLongLine)
				{
					WriteToFile("道具选择为长线");
					fLineLength = 1.5;
				}
				if (sg == keyShortLine)
				{
					WriteToFile("道具选择为短线");
					fLineLength = 1;
				}
				if (sg == keyGO)
				{
					WriteToFile("运行单摆的模拟仿真");
					state = 6;

					//“运行”替换为“停止”
					HC_Open_Segment("/danbai_dotry/button");
						HC_Flush_Contents(".","everything");						HC_Translate_Object(-2,-1.2,0);						HC_Include_Segment("/texts/stop");
					HC_Close_Segment();
					SetTimer(1,1,NULL);
					SetTimer(4,1000,NULL);
				}
			}
			st->DeSelectAll();
			break;
		}
	case 6:
		{
			//让基类处理选择事件
			CHoopsView::OnLButtonDown(nFlags, point);
			CHoopsView::OnLButtonUp(nFlags, point);

			HSelectionSet * st = m_pHView->GetSelection();
			if(st->GetSize() > 0)
			{
				HC_KEY sg;
				sg = st->GetAt(0);
				if (sg == keySTOP)
				{
					WriteToFile("停止单摆的模拟仿真");
#ifdef SECEND
					fPhase = Max;
#endif
					StopSim(1);
					state = 5;
				}
			}
			break;
		}
	case 13:
		{
			WriteToFile("开始做弹簧实验。默认实验道具为粗弹簧,小球");

			HC_Open_Segment_By_Key(m_pHView->GetModelKey());
				HC_Flush_Contents(".","everything");
				HC_Include_Segment("/tanhuang_dotry");
			HC_Close_Segment();
			HC_Update_Display();

			state = 15;
			LocalSetOperator(new HOpSelectArea(m_pHView));
			break;
		}
	case 15:
		{
			//让基类处理选择事件
			CHoopsView::OnLButtonDown(nFlags, point);
			CHoopsView::OnLButtonUp(nFlags, point);

			HSelectionSet * st = m_pHView->GetSelection();
			if(st->GetSize() > 0)
			{
				HC_KEY sg;
				sg = st->GetAt(0);
				if (sg == keyBigBall)
				{
					WriteToFile("道具选择为大球");
					fBallSize = 0.2;
				}
				if (sg == keySmallBall)
				{
					WriteToFile("道具选择为小球");
					fBallSize = 0.1;
				}
				if (sg == keyBigTanhuang)
				{
					WriteToFile("道具选择为大弹簧");
					K = 5;
					sTanhuang = "/tools/bigtanhuang";
				}
				if (sg == keySmallTanhuang)
				{
					WriteToFile("道具选择为小弹簧");
					K = 3;
					sTanhuang = "/tools/smalltanhuang";
				}
				if (sg == keyGO)
				{
					WriteToFile("运行弹簧模拟仿真");
					state = 16;

					//“运行”替换为“停止”
					HC_Open_Segment("/tanhuang_dotry/button");
						HC_Flush_Contents(".","everything");						HC_Translate_Object(-2,-1.2,0);						HC_Include_Segment("/texts/stop");
					HC_Close_Segment();
					SetTimer(2,1,NULL);
				}
			}
			break;
		}
	case 16:
		{
			//让基类处理选择事件
			CHoopsView::OnLButtonDown(nFlags, point);
			CHoopsView::OnLButtonUp(nFlags, point);

			HSelectionSet * st = m_pHView->GetSelection();
			if(st->GetSize() > 0)
			{
				WriteToFile("停止弹簧模拟仿真");
				HC_KEY sg;
				sg = st->GetAt(0);
				if (sg == keySTOP)
				{
					StopSim(2);
					state = 15;
				}
			}
			break;
		}
	default:
		{
			break;
		}
	}
}

void ChoopstestView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	switch (state)
	{
	case 2:
		{
			if (nChar == 'A')
			{
				if (sDanbaiGuess.Find("A") == -1)
				{
					sDanbaiGuess += "A";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/A");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(0.6,0.5,0,"(A)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("A","");
					HC_Open_Segment("/danbai_guess/answer/A");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'B')
			{
				if (sDanbaiGuess.Find("B") == -1)
				{
					sDanbaiGuess += "B";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/B");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(0.8,0.5,0,"(B)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("B","");
					HC_Open_Segment("/danbai_guess/answer/B");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'C')
			{
				if (sDanbaiGuess.Find("C") == -1)
				{
					sDanbaiGuess += "C";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/C");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(1,0.5,0,"(C)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("C","");
					HC_Open_Segment("/danbai_guess/answer/C");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'D')
			{
				if (sDanbaiGuess.Find("D") == -1)
				{
					sDanbaiGuess += "D";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/D");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(1.2,0.5,0,"(D)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("D","");
					HC_Open_Segment("/danbai_guess/answer/D");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
#ifndef SECEND
			if (nChar == 'E')
			{
				if (sDanbaiGuess.Find("E") == -1)
				{
					sDanbaiGuess += "E";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/E");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(1.4,0.5,0,"(E)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("E","");
					HC_Open_Segment("/danbai_guess/answer/E");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'F')
			{
				if (sDanbaiGuess.Find("F") == -1)
				{
					sDanbaiGuess += "F";
					HC_Open_Segment("/danbai_guess");
						HC_Open_Segment("answer/F");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(1.6,0.5,0,"(F)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiGuess.Replace("F","");
					HC_Open_Segment("/danbai_guess/answer/F");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
#endif
			WriteToFile("单摆实验猜一猜答案:" + sDanbaiGuess);
			break;
		}
	case 4:
		{
			if (nChar == 'A')
			{
				if (sDanbaiThink.Find("A") == -1)
				{
					sDanbaiThink += "A";
					HC_Open_Segment("/danbai_think");
						HC_Open_Segment("answer/A");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(0,0.2,0,"(A)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiThink.Replace("A","");
					HC_Open_Segment("/danbai_think/answer/A");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'B')
			{
				if (sDanbaiThink.Find("B") == -1)
				{
					sDanbaiThink += "B";
					HC_Open_Segment("/danbai_think");
						HC_Open_Segment("answer/B");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(0.2,0.2,0,"(B)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiThink.Replace("B","");
					HC_Open_Segment("/danbai_think/answer/B");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'C')
			{
				if (sDanbaiThink.Find("C") == -1)
				{
					sDanbaiThink += "C";
					HC_Open_Segment("/danbai_think");
						HC_Open_Segment("answer/C");
							HC_Set_Text_Font("size = 0.03 sru");							HC_Set_Color("text = red");							HC_Insert_Text(0.4,0.2,0,"(C)");
						HC_Close_Segment();
					HC_Close_Segment();
				}
				else
				{
					sDanbaiThink.Replace("C","");
					HC_Open_Segment("/danbai_think/answer/C");
						HC_Flush_Contents(".","everything");
					HC_Close_Segment();
				}
			}
			if (nChar == 'D')
			{
				if (sDanbaiThink.Find("D") == -1)
				{
					sDanbaiThink += "D";
					HC_Open_Segment("/danbai_think");
						HC_Open_Segment("answer/D");
							HC_Set_Text_Font("size = 0.03 sru");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -