//---------------------------------------------------------------------
void BaseTween::Update(float _dt)
{
	if(!IsStarted() || IsPaused() || IsKilled())
    {
		return;
    }

	m_dt = _dt;

	if(!IsInit())
    {
		Initialize();
    }

	if(IsInit())
	{
		UpdateRelaunch();
		UpdateStep();
		UpdateCompletion();
	}

	m_currentTime += m_dt;
	m_dt = 0.0f;
}
Exemple #2
0
int main() {
	FILE *file,*file2;
	//int list[65536][28];
	char node[65536][2];
	int temp;
	unsigned short int move[65536][2];
	std::vector<unsigned short int> list[65536][2];

	//file=fopen("list.txt","w");
	//file2=fopen("node.txt","w");

	for (int turn=0;turn<2;turn++) {
		for (int fin=0;fin<65536;fin++) {
			list[fin][turn].clear();
			for (int from=0;from<2;from++) {
				for (int to=0;to<2;to++) {
					if (!IsKilled(fin,from,turn) && !IsKilled(fin,to,turn?0:1)) {
						for (int shift=-3;shift<=3;shift++) {
							temp=doxor(fin,(bool)from,(bool)to,shift,(bool)turn);
							std::vector<unsigned short int>::iterator it = std::find(list[fin][turn].begin(),list[fin][turn].end(),temp);
							if (it == list[fin][turn].end()) list[fin][turn].push_back(temp);
						}
					}
				}
			}
			for ( std::vector<unsigned short int>::iterator it = list[fin][turn].begin() ; it!=list[fin][turn].end() ; ++it ) {
				if (it!=list[fin][turn].begin()) ;//printf(" ");
				//printf("%d",*it);
			}
			//printf("\n");
		}
	}

	memset(node,0,sizeof(node));
	memset(move,0,sizeof(move));

	for (int i=0;i<65536;i++) {
		if (IsKilled(i,0,0) && IsKilled(i,1,0)) {
			node[i][0]=2;
			node[i][1]=2;
		} else if (IsKilled(i,0,1) && IsKilled(i,1,1)) {
			node[i][0]=1;
			node[i][1]=1;
		}
	}
	
	for (int i=0;i<500;i++) {
		bool noflag=true;
		for (int fin=0;fin<65536;fin++) {
			if (node[fin][0]==0) {
				bool tsumi=true;
				for ( std::vector<unsigned short int>::iterator it = list[fin][0].begin() ; it!=list[fin][0].end() ; ++it ) {
					if (node[*it][1] == 1) {
						node[fin][0] = 1;
						move[fin][0] = *it;
						noflag=false;
						break;
					}
				}
			}
			if (node[fin][1]==0) {
				bool tsumi=true;
				for ( std::vector<unsigned short int>::iterator it = list[fin][1].begin() ; it!=list[fin][1].end() ; ++it ) {
					if (tsumi) {
						if (node[*it][0] != 1) {
							tsumi=false;
						}
					}
				}
				if (tsumi && node[fin][1]==0) {
					node[fin][1]=1;
					move[fin][1]=list[fin][1][0];
					noflag=false;
				}
			}
		}
		if (noflag) {
			//printf("%d\n",i);
			break;
		}
	}

	for (int fl=2;fl<100;fl++) {
		int win,total;
		for (int fin=0;fin<65536;fin++) {
			if (node[fin][1]==0) {
				bool tsumi=true;
				win=0;
				total=0;
				for ( std::vector<unsigned short int>::iterator it = list[fin][1].begin() ; it!=list[fin][1].end() ; ++it ) {
					if (node[*it][0]<fl && node[*it][0]!=0) {
						win++;
					}
					total++;
				}
				if ((win>5 && total-win==1) || (double)win/(double)total>=0.9) {
					node[fin][1]=fl;
					for ( std::vector<unsigned short int>::iterator it = list[fin][1].begin() ; it!=list[fin][1].end() ; ++it ) {
						if (node[*it][0]<fl && node[*it][0]!=0) {
							move[fin][1]=*it;
							break;
						}
					}
				}
			}
		}
		for (int fin=0;fin<65536;fin++) {
			if (node[fin][0]==0) {
				bool tsumi=true;
				for ( std::vector<unsigned short int>::iterator it = list[fin][0].begin() ; it!=list[fin][0].end() ; ++it ) {
					if (node[*it][1] == fl) {
						node[fin][0] = fl;
						move[fin][0]=*it;
						break;
					}
				}
			}
		}
	}

	for (int i=0;i<15000;i++) {
		printf("%04x",move[i][0]);
	}

	//puts("end");

	//fclose(file);
	//fclose(file2);

	return 0;
}