void checkBuf() { if (!buffer1Active && !buffer2Active && !buffer3Active) { clearTile(&buffer1); clearTile(&buffer2); clearTile(&buffer3); setRandomTile(&buffer1); setRandomTile(&buffer2); setRandomTile(&buffer3); buffer1Active = true; buffer2Active = true; buffer3Active = true; } if (currentBufferInUse == 1 && !buffer1Active) { currentBufferInUse++; checkBuf(); } if (currentBufferInUse == 2 && !buffer2Active) { currentBufferInUse++; checkBuf(); } if (currentBufferInUse == 3 && !buffer3Active) { currentBufferInUse=1; checkBuf(); } fixBounds(); }
/* * At the moment, the main() function is primarily used for testing and * debugging. */ int main() { clearArray(moving); clearArray(fixed); srand(0); /* Initialize random seed */ /* Debugging info */ int j; for (j = 0; j < 10; j++) { fixed[10][j] = 1; } printf("Initial board:\n"); printArray(&fixed, 24, 10); printf("Checking array\n"); checkBoard(); printArray(&fixed, 24, 10); printf("Points: %d \n", points); /* More debugging info */ printf("Printing moving board:\n"); printArray(&moving, 24, 10); printf("Adding random tile:\n"); int k; for (k = 0; k < 7; k++) { setRandomTile(); printArray(&moving, 24, 10); printf("\n\n\n"); clearArray(moving); } /* trying to move left */ setRandomTile(); printArray(&moving,24,10); printf("\n\n\n"); moveLeft(); printArray(&moving,24,10); /*move right*/ printf("\n\n\n"); moveRight(); printArray(&moving,24,10); getchar(); return 0; }
void startGame() { gc_InitGraph(); gc_DrawBuffer(); gc_SetTextColor(0xFF00); gc_FillScrn(0xFF); gc_SwapDraw(); srand(*(unsigned long*)0xF30044); clearTile(&buffer1); clearTile(&buffer2); clearTile(&buffer3); setRandomTile(&buffer1); setRandomTile(&buffer2); setRandomTile(&buffer3); buffer1Active = true; buffer2Active = true; buffer3Active = true; currentBufferInUse = 1; exitSection = false; movesRemaining = true; boardx = 3; boardy = 18; selectx = 0; selecty = 0; score = 0; drawBoardStart(); canDrawTileBool = true; while (exitSection == false) { checkBuf(); drawBoardRF(); gc_SetTextXY(275, 5); gc_PrintInt(score, 5); if (currentBufferInUse == 1) { drawTileHover(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { drawTileHover(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { drawTileHover(buffer3, selectx, selecty); } /*if (canDrawTileBool == true) { gc_SetColorIndex(0x47); gc_NoClipRectangleOutline(selectx * 21 + boardx, selecty * 21 + boardy, 21, 21); } else { gc_SetColorIndex(0xE0); gc_NoClipRectangleOutline(selectx * 21 + boardx, selecty * 21 + boardy, 21, 21); }*/ drawBuffers(); gc_SwapDraw(); if (!darkMode) { gc_SetColor(0xFF, gc_RGBTo1555(255, 255, 255)); } else { gc_SetColor(0xFF, gc_RGBTo1555(26, 26, 26)); } gc_FillScrn(0xFF); key = kb_ScanGroup(kb_group_7); if (key & kb_Down) { if (currentBufferInUse == 1) { inBounds(buffer1, selectx, selecty+1); } if (currentBufferInUse == 2) { inBounds(buffer2, selectx, selecty+1); } if (currentBufferInUse == 3) { inBounds(buffer3, selectx, selecty+1); } if (selecty < 9 && canDrawTileBool) { selecty++; if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } } } if (key & kb_Up) { if (currentBufferInUse == 1) { inBounds(buffer1, selectx, selecty-1); } if (currentBufferInUse == 2) { inBounds(buffer2, selectx, selecty-1); } if (currentBufferInUse == 3) { inBounds(buffer3, selectx, selecty-1); } if (selecty > 0 && canDrawTileBool) { selecty--; if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } } } if (key & kb_Left) { if (currentBufferInUse == 1) { inBounds(buffer1, selectx-1, selecty); } if (currentBufferInUse == 2) { inBounds(buffer2, selectx-1, selecty); } if (currentBufferInUse == 3) { inBounds(buffer3, selectx-1, selecty); } if (selectx > 0 && canDrawTileBool) { selectx--; if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } } } if (key & kb_Right) { if (currentBufferInUse == 1) { inBounds(buffer1, selectx+1, selecty); } if (currentBufferInUse == 2) { inBounds(buffer2, selectx+1, selecty); } if (currentBufferInUse == 3) { inBounds(buffer3, selectx+1, selecty); } if (selectx < 9 && canDrawTileBool) { selectx++; if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } } } if (selectx > 9 || selectx < 0) { selectx = 0; } if (selecty > 9 || selecty < 0) { selecty = 0; } key = kb_ScanGroup(kb_group_6); if (key & kb_Clear) { exitSection = true; } key = kb_ScanGroup(kb_group_1); if (key & kb_2nd) { if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } if (canDrawTileBool) { if (currentBufferInUse == 1) { drawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { drawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { drawTile(buffer3, selectx, selecty); } if (currentBufferInUse == 1) { buffer1Active = false; clearTile(&buffer1); } if (currentBufferInUse == 2) { buffer2Active = false; clearTile(&buffer2); } if (currentBufferInUse == 3) { buffer3Active = false; clearTile(&buffer3); } currentBufferInUse++; if (currentBufferInUse == 4) { currentBufferInUse = 1; } checkBuf(); checkForTileRows(); if (currentBufferInUse == 1) { canDrawTile(buffer1, selectx, selecty); } if (currentBufferInUse == 2) { canDrawTile(buffer2, selectx, selecty); } if (currentBufferInUse == 3) { canDrawTile(buffer3, selectx, selecty); } anyMovesLeft(); if (!movesRemaining) { exitSection = true; } } } if (key & kb_Mode) { darkMode = !darkMode; while (kb_AnyKey()) { } } key = kb_ScanGroup(kb_group_2); if (key & kb_Alpha) { currentBufferInUse++; if (currentBufferInUse == 4) { currentBufferInUse = 1; } checkBuf(); dbg_printf(dbgout, "cbiu %d", currentBufferInUse); while (kb_AnyKey()) { } } } saveNewHS(score); dead(); }