static void format_state( int k, CString* pStr ) { if ( k == 0 ) // 2마 pStr->Format( _T("%d승%d패\n\n%d승%d패"), LOWORD(Mo()->anPlayerState[k][0]), HIWORD(Mo()->anPlayerState[k][0]), LOWORD(Mo()->anPlayerState[k][2]), HIWORD(Mo()->anPlayerState[k][2]) ); else pStr->Format( _T("%d승%d패\n%d승%d패\n%d승%d패"), LOWORD(Mo()->anPlayerState[k][0]), HIWORD(Mo()->anPlayerState[k][0]), LOWORD(Mo()->anPlayerState[k][1]), HIWORD(Mo()->anPlayerState[k][1]), LOWORD(Mo()->anPlayerState[k][2]), HIWORD(Mo()->anPlayerState[k][2]) ); }
// 핫 스팟을 클릭할 때 불리는 함수 // LPVOID 값이 0 이면 종료 (X자를 클릭) 요청 void DStartUp::OnClick( LPVOID pVoid ) { if ( m_nMode == 0 ) { // 초기 메뉴 // 이 다이얼로그가 pVoid==0 으로 닫히면 // 초기메뉴일 경우 게임 종료임 if ( !pVoid ) Mw()->PostMessage( WM_CLOSE ); switch ( (int)pVoid ) { case 0: DSB::OnClick(0); break; case 0xffffffff: case 1: { VERIFY( CreateOnePlayerGame() ); break; } case 2: (new DStartUp(m_pBoard))->Create( 1 ); DSB::OnClick(0); break; break; case 3: (new DAbout(m_pBoard))->Create(); break; } } else { // 멀티플레이어 메뉴 // 이 다이얼로그가 pVoid==0 으로 닫히면 // 초기 메뉴를 호출 if ( !pVoid ) (new DStartUp(m_pBoard))->Create( 0 ); switch ( (int)pVoid ) { case 0: DSB::OnClick(0); break; case 0xffffffff: case 1: // 서버가 됨 Ib()->ShowChat(); // 채팅창 표시 (new DConnect(m_pBoard))->Create( 0, Mo()->rule.nPlayerNum, false ); DSB::OnClick(0); break; case 2: // 다른 곳으로 접속 Ib()->ShowChat(); // 채팅창 표시 (new DConnecting(m_pBoard))->Create(); DSB::OnClick(0); break; case 3: // Mighty.Net break; } } }
void DDetailScore::OnResetscore() { if ( AfxMessageBox( _T("지금까지 쌓아왔던 전적을 삭제하겠습니까?"), MB_YESNO | MB_ICONQUESTION ) == IDYES ) { for ( int i = 0; i < MAX_PLAYERS - 1; i++ ) { for ( int j = 0; j < 3; j++ ) Mo()->anPlayerState[i][j] = 0; format_state( i, &m_sScore[i] ); SetDlgItemText( IDC_SCORE1 + i, m_sScore[i] ); } } }
Foam::tmp<Foam::volScalarField> Foam::phasePair::Ta() const { return Re()*pow(Mo(), 0.23); }
// 현재 옵션에 기초해서 1인용 마이티 MFSM 을 생성(new)한다 // AI 파일 로드 실패 시 에러 DSB 를 띄우고 // 0 을 리턴한다 bool DStartUp::CreateOnePlayerGame() { int i; int nPlayers = Mo()->rule.nPlayerNum; CPlayer* apPlayers[MAX_CONNECTION]; // Human Player 생성 apPlayers[0] = new CPlayerHuman( 0, Mo()->aPlayer[0].sName, *m_pBoard ); // AI Players 생성 bool bFailed = false; CString sFailedDLL; for ( i = 1; i < nPlayers; i++ ) { CPlayerMai* pPlayer = new CPlayerMai( i, Mo()->aPlayer[i].sName, *m_pBoard, Mo()->aPlayer[i].sAIDLL, Mo()->aPlayer[i].sSetting ); apPlayers[i] = pPlayer; if ( !pPlayer->IsDLLWorking() ) { bFailed = true; sFailedDLL = Mo()->aPlayer[i].sAIDLL; } } // Dummy Players 생성 for ( ; i < MAX_CONNECTION; i++ ) { apPlayers[i] = new CPlayerDummy(i, *m_pBoard); } // 돈을 적당히 준다 for ( int j = 0; j < nPlayers; j++ ) apPlayers[j]->SetMoney( BASE_MONEY ); // 이제 SetMFSM 을 하는 순간 this 를 비롯한 모든 DSB 가 사라진다 // 경고 메시지를 띄우기 위해 m_pBoard 를 보관하자 CBoardWrap* pBoard = m_pBoard; // 새로운 MFSM 을 생성한다 CMFSM* pMFSM = new CMFSM( Mo()->rule.Encode(), apPlayers ); pMFSM->Init( 0 ); m_pBoard->SetMFSM(pMFSM); // DLL 로드가 실패했을 때 경고 메시지를 준다 if ( bFailed && !sFailedDLL.IsEmpty() ) { LPCTSTR asLine[8]; asLine[0] = _T("다음의 AI DLL 을 읽는데 실패했습니다"); asLine[1] = _T(""); asLine[2] = sFailedDLL; asLine[3] = _T(""); asLine[4] = _T("옵션 대화상자의 AI 탭에서 이 파일의"); asLine[5] = _T("경로를 다시 확인하세요"); asLine[6] = _T(""); asLine[7] = _T("임시로 기본 AI 를 읽어들입니다"); DMessageBox* pMB = new DMessageBox(pBoard); // 위의 pBoard 를 사용 if ( Mo()->bUseSound ) MessageBeep( MB_ICONEXCLAMATION ); pMB->Create( true, 8, asLine ); } return true; }