Beispiel #1
0
	GameStatus getStatus() {

		string name;
		int year;
		time_t timer, nextRound;

		wchar_t nameyearstr[MAX_CHAR_LEN];
		wchar_t timestr[MAX_CHAR_LEN];

		GetWindowText(nameyearH,nameyearstr,sizeof(nameyearstr));
		GetWindowText(timeH,timestr,sizeof(timestr));

		parseNameYear(nameyearstr, name, year);
		parseTimer(timestr, timer, nextRound);

		GameStatus gs = GameStatus(name, year, nextRound, nPlayer);


		for (int i = 0; i<nPlayer; ++i) {
			string pname;
			bool finishedTurn;
			Status status;
			int score;

			wchar_t * playerstr = new wchar_t[MAX_CHAR_LEN];
			wchar_t * pingstr = new wchar_t[MAX_CHAR_LEN];
			wchar_t * scorestr = new wchar_t[MAX_CHAR_LEN];
		
			GetWindowText(PlayerH[i].nameH,  playerstr, MAX_CHAR_LEN);
			GetWindowText(PlayerH[i].pingH,  pingstr,   MAX_CHAR_LEN);
			GetWindowText(PlayerH[i].scoreH, scorestr,  MAX_CHAR_LEN);

			parsePlayer(playerstr, pname, finishedTurn);
			parsePing(pingstr, status);
			parseScore(scorestr, score, status);

			delete[] playerstr;
			delete[] pingstr;
			delete[] scorestr;

			//Player p = new Player(pname, finishedTurn, status, score);
			gs.setPlayer(i, pname, finishedTurn, status, score);



		}

		return gs;
	}
Beispiel #2
0
static void
printTextBoard(FILE * pf, const matchstate * pms)
{

    TanBoard anBoard;
    char szBoard[2048];
    char sz[32], szCube[32], szPlayer0[MAX_NAME_LEN + 3], szPlayer1[MAX_NAME_LEN + 3],
        szScore0[35], szScore1[35], szMatch[35];
    char *apch[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
    unsigned int anPips[2];

    memcpy(anBoard, pms->anBoard, sizeof(anBoard));

    apch[0] = szPlayer0;
    apch[6] = szPlayer1;

    if (pms->anScore[0] == 1)
        sprintf(apch[1] = szScore0, _("%d point"), pms->anScore[0]);
    else
        sprintf(apch[1] = szScore0, _("%d points"), pms->anScore[0]);

    if (pms->anScore[1] == 1)
        sprintf(apch[5] = szScore1, _("%d point"), pms->anScore[1]);
    else
        sprintf(apch[5] = szScore1, _("%d points"), pms->anScore[1]);

    if (pms->fDoubled) {
        apch[pms->fTurn ? 4 : 2] = szCube;

        sprintf(szPlayer0, "O: %s", ap[0].szName);
        sprintf(szPlayer1, "X: %s", ap[1].szName);
        sprintf(szCube, _("Cube offered at %d"), pms->nCube << 1);
    } else {
        sprintf(szPlayer0, "O: %s", ap[0].szName);
        sprintf(szPlayer1, "X: %s", ap[1].szName);

        apch[pms->fMove ? 4 : 2] = sz;

        if (pms->anDice[0])
            sprintf(sz, _("Rolled %d%d"), pms->anDice[0], pms->anDice[1]);
        else if (!GameStatus((ConstTanBoard) anBoard, pms->bgv))
            strcpy(sz, _("On roll"));
        else
            sz[0] = 0;

        if (pms->fCubeOwner < 0) {
            apch[3] = szCube;

            if (pms->nMatchTo)
                sprintf(szCube, _("%d point match (Cube: %d)"), pms->nMatchTo, pms->nCube);
            else
                sprintf(szCube, _("(Cube: %d)"), pms->nCube);
        } else {
            size_t cch = strlen(ap[pms->fCubeOwner].szName);

            if (cch > 20)
                cch = 20;

            sprintf(szCube, _("%c: %*s (Cube: %d)"), pms->fCubeOwner ? 'X' :
                    'O', (int) cch, ap[pms->fCubeOwner].szName, pms->nCube);

            apch[pms->fCubeOwner ? 6 : 0] = szCube;

            if (pms->nMatchTo)
                sprintf(apch[3] = szMatch, _("%d point match"), pms->nMatchTo);
        }
    }



    if (pms->fResigned)
        sprintf(strchr(sz, 0), _(", resigns %s"), gettext(aszGameResult[pms->fResigned - 1]));

    if (!pms->fMove)
        SwapSides(anBoard);


    fputs(DrawBoard(szBoard, (ConstTanBoard) anBoard, pms->fMove, apch,
                    MatchIDFromMatchState(pms), anChequers[ms.bgv]), pf);

    PipCount((ConstTanBoard) anBoard, anPips);

    fprintf(pf, "Pip counts: O %u, X %u\n\n", anPips[0], anPips[1]);

}