C#トレーニング2019-10-23第7課ブロック移動Form制御ブロック前後運動解決方案


一、私の考え:二つの部分に分けて実現します.
1、20番目のブロックが移動する前に:まず第1回:第1のブロックが移動する;まず2回目のトリガ:1番目と2番目のブロックの移動;まず3回目のトリガ:1番目の2番目の3番目のブロックの移動;このように推す.
2、すべてが移動し続ける:一度トリガし、すべてのブロックがトリガする.
具体的なコードは以下の通りです.
	void m_tmr1_Tick( object sender, EventArgs e )
		{
     
			 // 1、Delay trigger by PositionIndex
			if( m_PositionIndex < m_nObjectNumber ) {
     
			    for( int i = 0; i <= m_PositionIndex; i++ ) {
     
			        EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
			    }
			}

			// 2、All blocks keep moving after trigger
			if( m_PositionIndex > m_nObjectNumber - 1 ) {
     
			    for( int i = 0; i <= m_nObjectNumber - 1; i++ ) {
     
			        EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
			    }
			}
		}

二、解決策:実は自身のm_PositionIndex自体が旗印であり、それを利用してどのブロックを直接制御することができ、m_PositionIndexが小さいと、それとそれ以前のブロックを移動し、このように順序動作の目的を実現した.
	void m_tmr1_Tick( object sender, EventArgs e )
		{
     
			for( int i = 0; i <= m_PositionIndex; i++ ) {
     
				EventCenter.Move( m_AllObjtctDirectionArray[ i ], i );
			}
			if( m_PositionIndex < m_nObjectNumber-1 ) {
     
				m_PositionIndex++;
			}
		}