void DungeonLayer::_consumeMonsterRoomDatas() {
  for (auto data : _monsterRoomDatas) {
    auto dice = data->getMonsterDice();
    auto room = data->getRoom();
    
    dice->roll();
    
    auto coordinate = Game::getInstance()->getDungeon()->getCoordinateForRoom(room);
    auto roomSprite = this->_getRoomSpriteForCoordinate(coordinate);
    roomSprite->addDice(dice);
  }
  
  _monsterRoomDatas.clear();
}
示例#2
0
void CDiceView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(buttonRect.PtInRect(point))
	{
		btnClicked =false;
		CWnd::InvalidateRect(buttonRect);

	//	players[0].maxConnection = countMaxConnection(0);
		addDice(0);

		players[0].isMyTurn = false;
		CWnd::InvalidateRect(players[0].maxConnectionRect);

		AIaction();
	}

	CView::OnLButtonUp(nFlags, point);
}
示例#3
0
void CDiceView::actInTurn(int country)
{
	set<int> finishedNodes;
	MSG msg;
	while(1)
	{
		for(set<int>::iterator iter = players[country].nodes.begin(); iter != players[country].nodes.end(); iter++)
		{
			int AIchosenNode = *iter;
			if(finishedNodes.find(AIchosenNode) != finishedNodes.end())
				continue;

			for(set<int>::iterator pNeighbor = path[*iter].begin(); pNeighbor != path[*iter].end(); pNeighbor++)
			{
				int selectedNode = *pNeighbor;
				if(isFightable(AIchosenNode, selectedNode) && nodes[AIchosenNode].diceNum >= nodes[selectedNode].diceNum)
				{
					nodes[AIchosenNode].isChosen = true;
					nodes[selectedNode].isChosen = true;
					CWnd::InvalidateRect(nodes[AIchosenNode].nodeRect);
					CWnd::InvalidateRect(nodes[selectedNode].nodeRect);
				//	CWnd::Invalidate();
				//	GetMessage(&msg,NULL,0,0);	
				//	TranslateMessage(&msg);
				//	DispatchMessage(&msg);
				//	::Sleep(10);
					fight(AIchosenNode, selectedNode);
					
				}
			}
			finishedNodes.insert(AIchosenNode);
		}
		if(finishedNodes.size() == players[country].nodes.size())
			break;
	}
	players[country].maxConnection = countMaxConnection(country);
	addDice(country);
}
示例#4
0
/* Definition of main */
int main(int argc, char* argv[])
//int main(void)
{
        
	if(argc == 1){
          printf("%d\n", rolltimes);
          return 1;
	  }
	else if(argc > 3){
          printf("No\n");
          return 1;
	  }
	else if(argc == 3)
	  
	  {
	   if(strtod(argv[2], '\0'))
		{
		astkDelimitor = strtod(argv[2], '\0');
		}
  	   }	
	if(strtod(argv[1], '\0')){
	  rolltimes = strtod(argv[1], '\0');
	  printf("Rolltime:%d\n", rolltimes);  	
          int dice1, dice2, sum, increment, percentCounter;
	  double expectedPercentage[13] = {0, 0, 1, 2, 3, 4, 5, 6, 5,
					  4, 3, 2, 1};
	  int values[13] = {0};
	  for( increment = 0 ; increment < rolltimes ; increment++ ) 
		{
		rollDice(&dice1, &dice2);
		addDice(&sum, &dice1, &dice2);
		switch (sum){
			case 1: values[1]++;   break;
			case 2: values[2]++;   break;
			case 3: values[3]++;   break;
			case 4: values[4]++;   break;
			case 5: values[5]++;   break;
			case 6: values[6]++;   break;
			case 7: values[7]++;   break;
			case 8: values[8]++;   break;
			case 9: values[9]++;   break;
			case 10: values[10]++; break;
			case 11: values[11]++; break;
			case 12: values[12]++; break;
			}
		}
	  printHistogram(values, &astkDelimitor);
	  printf("Percentages\n\t Expected %\tActual %\tDifference\n");
	  //printf("%d Rolltime:", rolltimes);
	  for(percentCounter=2;percentCounter<=12;percentCounter++){
		printf("%d\t %.2lf\t\t%.2lf\t\t%.2lf\n", percentCounter,
		((expectedPercentage[percentCounter]/36)*100), (((values
		[percentCounter])/rolltimes)*100),(((expectedPercentage
		[percentCounter]/36)*100)-(((values[percentCounter])/
		rolltimes)*100)));
		//printf("!!!!!!!!!!!!!!!!%d", values[e]);
		//printf("%d", (values[e]/rolltimes));
		}
	  }

}