コード例 #1
0
ファイル: 1754.cpp プロジェクト: AntSworD/ACM
void PushUp(int now)
{
	TN.data = max(tree[TL].data, tree[TR].data);
	if(now == 1)
		return ;
	PushUp(TT);
}
コード例 #2
0
ファイル: CChat.cpp プロジェクト: DarkKlo/maf2mp
void CChat::AddChatMessage( CNetworkPlayer * pNetworkPlayer, const char * szMessage )
{
	// Is the player invalid?
	if( !pNetworkPlayer )
		return;

	// Check for the % character
	char * szChar = (char *)memchr( szMessage, '%', strlen(szMessage) );
	char szMessageToSet [ 129 ];

	// Did we find the character?
	if( szChar )
	{
		//
		char szMessageA [ 129 ];
		int offset1 = 0;
		int offset2 = 0;
		strcpy ( szMessageA, szMessage );

		while ( true )
		{
			if ( szMessageA[ offset1 ] == '%' )
			{
				szMessageToSet[ offset2 ] = '%';
				szMessageToSet[ offset2 + 1 ] = '%';
				offset2 += 2;
				offset1 ++;
				continue;
			}
			else if ( szMessageA[ offset1 ] == '\0' || offset1 == 128 || offset2 == 128 )
			{
				szMessageToSet[ offset2 ] = '\0';
				break;
			}
			else
			{
				szMessageToSet[ offset2 ] = szMessageA[ offset1 ];
				offset1 ++;
				offset2 ++;
			}
		}
	}
	else
		strcpy ( szMessageToSet, szMessage );

	// Push all the messages up
	PushUp ();

	// Get the player colour
	CColor colour( pNetworkPlayer->GetColour(), true );

	// Set the chat line data
	strcpy_s( m_chatLine[ 0 ].szMessage, (MAX_MESSAGE_LEN + 1), szMessageToSet );
	sprintf( m_chatLine[ 0 ].szName, "%s: ", pNetworkPlayer->GetNick().Get() );
	m_chatLine[ 0 ].ulMsgColour = D3DCOLOR_ARGB( 255, 255, 255, 255 );
	m_chatLine[ 0 ].ulNameColour = colour.dwHexColor;
	m_chatLine[ 0 ].fNameExtent = pCore->GetGraphics()->GetTextWidth( m_chatLine[0].szName, 1.0f, "tahoma-bold" );
}
コード例 #3
0
void build(int l, int r, int rt = 1)
{
	if (l == r)
	{
		sum[rt] = num[l];
		return;
	}
	int m = (l + r) >> 1;
	build(lson);
	build(rson);
	PushUp(rt);
}
void Build(int l, int r, int rt)
{
    if (l == r)
        seq[rt] = 1;
    else
    {
        int m = (l + r) >> 1;
        Build(lhs);
        Build(rhs);
        PushUp(rt);
    }
}
void Update(int s,int t,int v,int l,int r,int rt)
{
    if (s<=l && r<=t)
    {
        add[rt]+=v;
        sum[rt]+=v*(r-l+1);
        return ;
    }
    PushDown(rt,r-l+1);
    int m=(l+r)>>1;
    if (s<=m)   Update(s,t,v,l,m,rt<<1);
    if (m<t)    Update(s,t,v,m+1,r,rt<<1|1);
    PushUp(rt);
}
コード例 #6
0
ファイル: Tree.cpp プロジェクト: cwchym/ACM
void build(int l,int r,int rt)
{
	if(l==r)
	{
		scanf("%d",&_max[rt]);
		_min[rt]=_max[rt];
		return;
	}

	int mid=(l+r)>>1;
	build(l,mid,rt<<1);
	build(mid+1,r,rt<<1|1);
	PushUp(rt);
}
コード例 #7
0
void build(int l,int r,int pos)
{
    if(l==r)
    {
        color[pos]=1;
        return;
    }
    int mid=(l+r)>>1;

    build(l,mid,pos<<1);
    build(mid+1,r,pos<<1|1);

    PushUp(pos);
}
コード例 #8
0
ファイル: 1754.cpp プロジェクト: AntSworD/ACM
void Updata(int now, int pos, int k)
{
	if(TN.l == TN.r)
	{
		TN.data = k;
		PushUp(TT);
		return ;
	}
	int mid = (TN.l + TN.r) >> 1;
	if(pos > mid)
		Updata(TR, pos, k);
	else
		Updata(TL, pos, k);
}
コード例 #9
0
ファイル: game_ui.c プロジェクト: larso0/2048
void Run(UI* ui)
{   if(ui == NULL) return;
    NewGame(ui->game);
    NextTurn(ui->game);
    int c, running = 1;
    while(running && ui->game->status != GAME_STATUS_ERROR)
    {   DisplayGame(ui);
        c = getch();
        switch(c)
        {
        case KEY_LEFT:
            if(ui->game->status != GAME_STATUS_LOST)
            {	if(PushLeft(ui->game)) NextTurn(ui->game);
                else CheckTurn(ui->game);
            }
            break;
        case KEY_RIGHT:
            if(ui->game->status != GAME_STATUS_LOST)
            {	if(PushRight(ui->game)) NextTurn(ui->game);
                else CheckTurn(ui->game);
            }
            break;
        case KEY_UP:
            if(ui->game->status != GAME_STATUS_LOST)
            {	if(PushUp(ui->game)) NextTurn(ui->game);
                else CheckTurn(ui->game);
            }
            break;
        case KEY_DOWN:
            if(ui->game->status != GAME_STATUS_LOST)
            {	if(PushDown(ui->game)) NextTurn(ui->game);
                else CheckTurn(ui->game);
            }
            break;
        case 'q':
            running = 0;
            break;
        case 'n':
            NewGame(ui->game);
            NextTurn(ui->game);
            break;
        case 'r':
            StartGame(ui->game);
            NextTurn(ui->game);
            break;
        default:
            break;
        }
    }
}
コード例 #10
0
ファイル: 1754.cpp プロジェクト: AntSworD/ACM
void BuildTree(int now, int l, int r)
{
	TN.l = l;
	TN.r = r;
	TN.data = 0;
	if(TN.l == TN.r)
	{
		scanf("%d", &TN.data);
		PushUp(TT);
		return ;
	}
	int mid = (l + r) >> 1;
	BuildTree(TL, l, mid);
	BuildTree(TR, mid + 1, r);
}
コード例 #11
0
ファイル: TerrainTest.cpp プロジェクト: McManning/fro_client
void TerrainTest::Event(SDL_Event* event)
{
	switch (event->type)
	{
		case SDL_KEYUP:
		{
			switch (event->key.keysym.sym)
			{
				case SDLK_n:
					NewGrid(Width() / TILE_SIZE, Height() / TILE_SIZE);
					break;	
				case SDLK_q:
					if (m_iUpperHeight < MAX_HEIGHT)
						m_iUpperHeight++;
					break;
				case SDLK_a:
					if (m_iUpperHeight > 0)
						m_iUpperHeight--;
					break;
				case SDLK_w:
					if (m_iLowerHeight < MAX_HEIGHT)
						m_iLowerHeight++;
					break;
				case SDLK_s:
					if (m_iLowerHeight > 0)
						m_iLowerHeight--;
					break;
				case SDLK_t:
					m_bDisplayTypeMap = !m_bDisplayTypeMap;
					break;
				default: break;
			}
		} break;
		case SDL_MOUSEMOTION:
		{
			int x, y;
			if (gui->IsMouseButtonDown(MOUSE_BUTTON_LEFT, &x, &y))
			{
				PushUp(x / TILE_SIZE, y / TILE_SIZE);
			}
			else if (gui->IsMouseButtonDown(MOUSE_BUTTON_RIGHT, &x, &y))
			{
				PushDown(x / TILE_SIZE, y / TILE_SIZE);
			}
		} break;
		default: break;
	}
}
コード例 #12
0
ファイル: CChat.cpp プロジェクト: DarkKlo/maf2mp
void CChat::AddDebugMessage( const char * szDebug, ... )
{
	// Push all the messages up
	PushUp();

	// Get the arguments
	va_list args;
	va_start( args, szDebug );
	vsnprintf( m_chatLine[ 0 ].szMessage, 128, szDebug, args );
	va_end( args );
	
	// Set the chat line data
	m_chatLine[ 0 ].szMessage[ MAX_MESSAGE_LEN ] = '\0';
	m_chatLine[ 0 ].ulMsgColour = D3DCOLOR_ARGB( 255, 179, 179, 179 );
	m_chatLine[ 0 ].fNameExtent = 0.0f;
}
コード例 #13
0
ファイル: CChat.cpp プロジェクト: DarkKlo/maf2mp
void CChat::AddInfoMessage( CColor colour, const char * szInfo, ... )
{
	// Push all the messages up
	PushUp();

	// Get the arguments
	va_list args;
	va_start( args, szInfo );
	vsnprintf( m_chatLine[ 0 ].szMessage, 128, szInfo, args );
	va_end( args );
	
	// Set the chat line data
	m_chatLine[ 0 ].szMessage[ MAX_MESSAGE_LEN ] = '\0';
	m_chatLine[ 0 ].ulMsgColour = colour.dwHexColor;
	m_chatLine[ 0 ].fNameExtent = 0.0f;
}
コード例 #14
0
void update(int p,int l,int r,int pos)
{
    if(l==r)
    {
        if(p==l)
            t[pos]++;
        return;
    }

    int mid=(l+r)>>1;

    if(p<=mid)
        update(p,l,mid,pos<<1);
    else
        update(p,mid+1,r,pos<<1|1);
    PushUp(pos);
}
void Query(int p, int value, int l, int r, int rt)
{
    if (l == r)
    {
        seq[rt] = 0;
        order[l] = value;
    }
    else
    {
        int m = (l + r) >> 1;
        if (seq[rt << 1] > p)
            Query(p, value, lhs);
        else
            Query(p - seq[rt << 1], value, rhs);
        PushUp(rt);
    }
}
コード例 #16
0
void update(int L, int c, int l, int r, int rt = 1)
{
	if (L == l && l == r)
	{
		sum[rt] = c;
		return;
	}
	int m = (l + r) >> 1;
	if (L <= m)
	{
		update(L, c, lson);
	}
	else
	{
		update(L, c, rson);
	}
	PushUp(rt);
}
コード例 #17
0
void update(int a,int b,int v,int l,int r,int pos)
{

    if(a<=l && b>=r)
    {
        mix[pos]=false;
        color[pos]=v;
        return;
    }

    if(l==r)    return;
    int mid=(l+r)>>1;
    PushDown(pos);

    if(a<=mid)
        update(a,b,v,l,mid,pos<<1);
    if(b>mid)
        update(a,b,v,mid+1,r,pos<<1|1);

    PushUp(pos);
}
コード例 #18
0
void query(int a,int b,int l,int r,int pos)
{
    if(!mix[pos])
    {
        in[color[pos]]=true;
        return;
    }

    PushDown(pos);

    if(l==r)    return;

    int mid=(l+r)>>1;


    if(a<=mid)
        query(a,b,l,mid,pos<<1);
    if(b>mid)
        query(a,b,mid+1,r,pos<<1|1);

    PushUp(pos);
}
コード例 #19
0
void Insert(priorityQueue *pqueue, huffman_node_t *node){
    if(pqueue->size<CHARCOUNT){
        pqueue->queue[pqueue->size++]=node;
        PushUp(pqueue,pqueue->size-1);
    }
}
コード例 #20
0
ファイル: tetris.cpp プロジェクト: osgcc/osgcc2-OMGWTFADD
void Tetris::Attack(game_info* gi, int severity)
{
	// add a line!
	// add two lines!!
	// rotate board!!!

	int gameover = 0;
	int good = 0;

	engine.audio.PlaySound(SND_ADDLINE);

	if (severity == 1)
	{		
		// ok dokey
		int i;

		for (i=0; i<10; i++)
		{
			if (gi->board[i][0] != -1)
			{
				// game over!
				gameover = 1;
				break;
			}
		}

		PushUp(gi, 1);

		for (i=0; i<10; i++)
		{
			gi->board[i][23] = rand() % 7;
			if (gi->board[i][23] == 6)
			{
				good = 1;
				gi->board[i][23] = -1;
			}
		}

		if (!good)
		{
			gi->board[rand() % 10][23] = -1;
		}

		// send this line!
		engine.PassMessage(MSG_PUSHUP, 1,0,0);
		engine.PassMessage(MSG_ADDBLOCKS_A,gi->board[0][23], gi->board[1][23],gi->board[2][23]);
		engine.PassMessage(MSG_ADDBLOCKS_B,gi->board[3][23], gi->board[4][23],gi->board[5][23]);
		engine.PassMessage(MSG_ADDBLOCKS_C,gi->board[6][23], gi->board[7][23],gi->board[8][23]);
		engine.PassMessage(MSG_ADDBLOCKS_D,gi->board[9][23], 0,0);
	}
	else if (severity == 2)
	{
		// move two lines
		// ok dokey
		int i;

		for (i=0; i<10; i++)
		{
			if (gi->board[i][0] != -1)
			{
				// game over!
				gameover = 1;
				break;
			}
			if (gi->board[i][1] != -1)
			{
				// game over!
				gameover = 1;
				break;
			}
		}

		PushUp(gi, 2);

		for (i=0; i<10; i++)
		{
			gi->board[i][23] = rand() % 7;
			if (gi->board[i][23] == 6)
			{
				good |= 1;
				gi->board[i][23] = -1;
			}

			gi->board[i][22] = rand() % 7;
			if (gi->board[i][22] == 6)
			{
				good |= 2;
				gi->board[i][22] = -1;
			}
		}

		if (!(good & 1))
		{
			gi->board[rand() % 10][23] = -1;
		}

		if (!(good & 2))
		{
			gi->board[rand() % 10][22] = -1;
		}

		// send these lines!
		engine.PassMessage(MSG_PUSHUP, 2,0,0);
		engine.PassMessage(MSG_ADDBLOCKS_A,gi->board[0][23], gi->board[1][23],gi->board[2][23]);
		engine.PassMessage(MSG_ADDBLOCKS_B,gi->board[3][23], gi->board[4][23],gi->board[5][23]);
		engine.PassMessage(MSG_ADDBLOCKS_C,gi->board[6][23], gi->board[7][23],gi->board[8][23]);
		engine.PassMessage(MSG_ADDBLOCKS_D,gi->board[9][23], 0,0);
		engine.PassMessage(MSG_ADDBLOCKS2_A,gi->board[0][22], gi->board[1][22],gi->board[2][22]);
		engine.PassMessage(MSG_ADDBLOCKS2_B,gi->board[3][22], gi->board[4][22],gi->board[5][22]);
		engine.PassMessage(MSG_ADDBLOCKS2_C,gi->board[6][22], gi->board[7][22],gi->board[8][22]);
		engine.PassMessage(MSG_ADDBLOCKS2_D,gi->board[9][22], 0,0);
	}
	else if (severity == 3)
	{
		// rotate!
		gi->attacking = 1;
		gi->attack_rot = 0;

	}

	if (gameover)
	{
		engine.GameOver();
	}
}