コード例 #1
0
ファイル: Scope.c プロジェクト: Climberirw/audiotools
BOOL DrawItem(WPARAM wParam, LPARAM lParam)
{
    LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam;
    RECT rect = lpdi->rcItem;
    HDC hdc = lpdi->hDC;

    SetGraphicsMode(hdc, GM_ADVANCED);

    switch (wParam)
    {
	// X scale

    case XSCALE_ID:
	return DrawXScale(hdc, rect);
	break;

	// Y scale

    case YSCALE_ID:
	return DrawYScale(hdc, rect);
	break;

	// Scope

    case SCOPE_ID:
	return DrawScope(hdc, rect);
	break;
    }
}
コード例 #2
0
void SightedBomb(
    float x, float y,        // 메인 캐릭터의 좌표
    float sx, float sy,      // 조준의 좌표
    float bvx, float bvy,    // 폭탄의 속도
    bool button              // 버튼의 상태(눌렸으면 true)
) {
    // 폭탄의 상태
    static bool bombing=false;  // 폭격중인지 아닌지를 나타내는 플래그
    static float bx, by;        // 폭탄의 좌표
    static float tx, ty;        // 착탄점의 좌표

    // 폭격중이 아닐 때:
    // 버튼이 눌렸다면 폭격을 수행함.
    // 폭탄의 초기좌표와 착탄점의 좌표를 설정함.
    if (!bombing) {
        if (button) {
            bombing=true;
            bx=x;
            by=y;
            tx=sx;
            ty=sy;
        }
    }

    // 폭격중 일 때:
    // 폭탄을 이동시킴.
    // 폭탄이 착탄점에 도달하였다면 폭발시킴.
    // 폭발의 구체적인 처리는 Explode 함수에서 수행하도록 함.
    else {
        bx+=bvx;
        by+=bvy;
        if (bx==tx && by==ty) {
            Explode();
            bombing=false;
        }
    }

    // 메인 캐릭터와 조준을 그리기:
    // 구체적인 처리는 DrawMyShip関数とDrawScope 함수에서 수행하기로 함.
    // 조준과 지상물과의 접촉 판정 처리를 수행하면,
    // 조준의 가장자리를 점멸하는 것도 가능.
    DrawMyShip(x, y);
    DrawScope(sx, sy);

    // 폭격중인 경우에는 착탄점과 폭탄을 그림:
    // 구체적인 처리는 DrawTarget 함수와 DrawBomb 함수에서 수행하기로 함.
    if (bombing) {
        DrawTarget(tx, ty);
        DrawBomb(bx, by);
    }
}