X-Git-Url: http://git.shiar.net/netris.git/blobdiff_plain/0e934ad47c5e35e9a652dbe56961a707a32e7a54..a48189e5c6981f787eb634e94c940ca5b2e517e2:/board.c diff --git a/board.c b/board.c index c6c4837..2655580 100644 --- a/board.c +++ b/board.c @@ -15,8 +15,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id: board.c,v 1.15 1999/05/16 06:56:24 mhw Exp $ */ #include "netris.h" @@ -94,10 +92,10 @@ int ShapeIterate(char s, int scr, int y, int x, ShapeDrawFunc func) int i, j, result; char type, rotation; - type = s/4; - rotation = s&3; - for (i = 0; i<4; i++) - for (j = 0; j<4; j++) + type = s / 4; + rotation = s & 3; + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) if (shapes[type][rotation][i][j]) if (result = func(scr, y-i, x+j, shapes[type][rotation][i][j])) return result; @@ -112,9 +110,10 @@ char ChooseOption(float options[7]) int i; float total = 0, val; - for (i = 0; i<7; i++) total += options[i]; - val = Random(0, 32767)/32768.0*total; - for (i = 0; i<7; i++) if ((val -= options[i])<0) return i<<2; + for (i = 0; i < 7; i++) total += options[i]; + val = Random(0, 32767) / 32768.0 * total; + for (i = 0; i < 7; i++) if ((val -= options[i]) < 0) + return i << 2; return 0; } @@ -161,7 +160,7 @@ int RefreshBoard(int scr) for (y = Players[scr].boardVisible - 1; y >= 0; y--) if ((c = changed[scr][y])) { //line changed for (x = 0; c; (c >>= 1), x++) - if ((c & 1) && board[scr][y][x] != oldBoard[scr][y][x]) { + if (c & 1 && board[scr][y][x] != oldBoard[scr][y][x]) { PlotBlock(scr, y, x, board[scr][y][x]); oldBoard[scr][y][x] = board[scr][y][x]; } @@ -319,9 +318,9 @@ int CheckFall(int scr) unsigned char z; if (!Game.gravity) return 0; - for (y = Players[scr].boardHeight-1; y > 0; y--) + for (y = Players[scr].boardHeight - 1; y > 0; y--) for (x = 0; x < Players[scr].boardWidth; x++) { - if (((z = GetBlock(scr, y, x)) > BT_none) && ((z & 160) == 0)) { + if ((z = GetBlock(scr, y, x)) > BT_none && (z & 160) == 0) { //doesn't stick left/up => topleft block if (BlockFree(scr, x, y, 240)) { BlockFall(scr, x, y, 240); @@ -361,9 +360,9 @@ int ClearFullLines(int scr) while (LineIsFull(scr, from)) { from++; //skip for (x = 0; x1) - SetBlock(scr, from-2, x, GetBlock(scr, from-2, x)&223); + SetBlock(scr, from, x, GetBlock(scr, from, x) & 239); + if (from > 1) + SetBlock(scr, from-2, x, GetBlock(scr, from-2, x) & 223); } //don't stick blocks to line which we'll remove } //full lines CopyLine(scr, from++, to++); @@ -388,7 +387,7 @@ void InsertJunk(int scr, int color, int count, int column) CopyLine(scr, y, y + count); for (y = 0; y < count; ++y) for (x = 0; x < Players[scr].boardWidth; ++x) - SetBlock(scr, y, x, (x == column) ? BT_none : color + 1 + SetBlock(scr, y, x, x == column ? BT_none : color + 1 + 64 * (x != column-1 && x < Players[scr].boardWidth-1) + 128 * (x != column+1 && x > 0)); Players[scr].curY += count; //move piece up..