return 20 + 200 / (lines / 20 + 1);
}
-/*
-int reparenextturn (board_t *board, block_t **blocks, int nb_blocks, block_t **pblock, int *pcurrent, int *pxblock, int *pyblock, int *pnext, int player, int *scores, board_t *winblock)
-{
- char msg[128] = {0};
- int mode = 1:
- if (!testvalidpos (board, blocks + *pnext , boardwidth / 2, 0)) {
- sprintf (msg, "To bad, player %s looses. Score is %d / %d", (player == 0) ? "One" : "Two", scores[0], scores[1]);
- msgwindow (msg, xmsg, ymsg, lmsg);
- mode = 2;
- } else {
- *pblock = drawblock (board, blocks, nb_blocks, *pblock, pcurrent, pxblock, pyblock, pnext);
- boardwindow (winblock, 1);
- displayblock (winblock, blocks + *pnext, -1, -1);
- }
- return mode;
-}
-*/
-
/* main function for two players */
int twoplayers (int width, int height, int scale)
{
/* Player one */
if (settle_left) {
penalty_right = processsettlement (board_left, cblock_left, xblock_left, yblock_left, scores + 0, &lines, computetempo (lines));
- if (!testvalidpos (board_left, blocks + next , board_left->width / 2, 0)) {
- sprintf (msg, "To bad, player One looses. Score is %d / %d", scores[0], scores[1]);
- mode = 2;
- } else {
- cblock_left = drawblock (board_left, blocks, nb_blocks, cblock_left, ¤t_left, &xblock_left, &yblock_left, &next);
- boardwindow (nextblock, 1);
- displayblock (nextblock, blocks + next, -1, -1);
- }
- settle_left = 0;
+ mode = reparenextturn (board_left, blocks, nb_blocks, &cblock_left, ¤t_left, &xblock_left, &yblock_left, &next, 1, msg, scores, nextblock);
}
+ settle_left = 0;
/* Player two */
if (settle_right) {
penalty_left = processsettlement (board_right, cblock_right, xblock_right, yblock_right, scores + 1, &lines, computetempo (lines));
- if (!testvalidpos (board_right, blocks + next , board_right->width / 2, 0)) {
- sprintf (msg, "To bad, player Two looses. Score is %d / %d", scores[0], scores[1]);
- mode = 2;
- } else {
- cblock_right = drawblock (board_right, blocks, nb_blocks, cblock_right, ¤t_right, &xblock_right, &yblock_right, &next);
- boardwindow (nextblock, 1);
- displayblock (nextblock, blocks + next, -1, -1);
- }
- settle_right = 0;
+ mode = reparenextturn (board_right, blocks, nb_blocks, &cblock_right, ¤t_right, &xblock_right, &yblock_right, &next, 2, msg, scores, nextblock);
}
+ settle_right = 0;
/* Penalty */
while ((penalty_left > 0) || (penalty_right > 0)) {
if (penalty_left) {
if (!testvalidpos (board_left, cblock_left, xblock_left, yblock_left + 1)) {
penalty_right += processsettlement (board_left, cblock_left, xblock_left, yblock_left, scores + 0, &lines, computetempo (lines));
- if (!testvalidpos (board_left, blocks + next , board_left->width / 2, 0)) {
- sprintf (msg, "To bad, player One looses. Score is %d / %d", scores[1], scores[0]);
- mode = 2;
- } else {
- cblock_left = drawblock (board_left, blocks, nb_blocks, cblock_left, ¤t_left, &xblock_left, &yblock_left, &next);
- boardwindow (nextblock, 1);
- displayblock (nextblock, blocks + next, -1, -1);
- }
+ mode = reparenextturn (board_left, blocks, nb_blocks, &cblock_left, ¤t_left, &xblock_left, &yblock_left, &next, 1, msg, scores, nextblock);
}
int isempty = addline (board_left, nbholes);
if (!isempty) {
if (penalty_right) {
if (!testvalidpos (board_right, cblock_right, xblock_right, yblock_right + 1)) {
penalty_left += processsettlement (board_right, cblock_right, xblock_right, yblock_right, scores + 1, &lines, computetempo (lines));
- if (!testvalidpos (board_right, blocks + next , board_right->width / 2, 0)) {
- sprintf (msg, "To bad, player Two looses. Score is %d / %d", scores[0], scores[1]);
- mode = 2;
- } else {
- cblock_right = drawblock (board_right, blocks, nb_blocks, cblock_right, ¤t_right, &xblock_right, &yblock_right, &next);
- boardwindow (nextblock, 1);
- displayblock (nextblock, blocks + next, -1, -1);
- }
+ mode = reparenextturn (board_right, blocks, nb_blocks, &cblock_right, ¤t_right, &xblock_right, &yblock_right, &next, 2, msg, scores, nextblock);
}
int isempty = addline (board_right, nbholes);
if (!isempty) {