void setup() { size(SCREEN_WIDTH, SCREEN_HEIGHT, P3D); colorMode(RGB, 255, 255, 255); frameRate(30); int i; GAME_COLORS = new color[8]; GAME_COLORS[0] = color( 0, 0, 0 ); //black GAME_COLORS[1] = color( 255, 0, 0 ); //red GAME_COLORS[2] = color( 255, 255, 0 ); //yellow GAME_COLORS[3] = color( 255, 128, 0 ); //orange (red + yellow) GAME_COLORS[4] = color( 0, 0, 255 ); //blue GAME_COLORS[5] = color( 128, 0, 128 ); //purple (blue + red) GAME_COLORS[6] = color( 0, 255, 0 ); //green (blue + yellow) GAME_COLORS[7] = color( 255, 255, 255 ); //white (blue + red + yellow) HUD = new HeadsUpDisplay(); HUD.Initialize(); BLACK = new Black[NUM_BLACK]; for( i = 0; i < NUM_BLACK; ++i ) { BLACK[i] = new Black(); BLACK[i].Initialize(); } COLORS = new Color[NUM_COLORS]; for( i = 0; i < NUM_COLORS; ++i ) { COLORS[i] = new Color(); COLORS[i].Initialize(); COLORS[i].m_UniqueID = i; } for( i = 0; i < NUM_USED_COLORS; ++i ) { COLORS[i].m_Used = true; } GRID = new Grid(); GRID.Initialize(); INPUT = new Input(); INPUT.Initialize(); } void draw() { //interpolate background color if necessary BACKGROUND_COLOR = GAME_COLORS[ HUD.colorQueue[5] ]; if( HUD.timeUntilNextColor < 10 ) { float ratio = (float)HUD.timeUntilNextColor / 10.f; BACKGROUND_COLOR = lerpColor( GAME_COLORS[ HUD.colorQueue[6] ], GAME_COLORS[ HUD.colorQueue[5] ], ratio ); } background( BACKGROUND_COLOR ); int i; if( PAUSED == false ) { --ADD_NEW_SQUARE_TIMER; if( ADD_NEW_SQUARE_TIMER < 0 ) { ADD_NEW_SQUARE_TIMER = ADD_NEW_SQUARE_TIMER_RESET; AddNewSquare(); } INPUT.Update(); HUD.Update(); GRID.AddBitsToGrid(); GRID.ComputeForcesOnBits(); for( i = 0; i < NUM_BLACK; ++i ) { BLACK[i].Update(); } for( i = 0; i < NUM_COLORS; ++i ) { COLORS[i].Update(); } } for( i = 0; i < NUM_COLORS; ++i ) { COLORS[i].Draw(); } INPUT.Draw(); for( i = 0; i < NUM_BLACK; ++i ) { BLACK[i].Draw(); } HUD.Draw(); //GRID.Draw(); } void RESET() { int i; HUD.Reset(); for( i = 0; i < NUM_BLACK; ++i ) { BLACK[i].Reset(); } for( i = 0; i < NUM_COLORS; ++i ) { COLORS[i].Reset(); } for( i = 0; i < NUM_USED_COLORS; ++i ) { COLORS[i].m_Used = true; } PAUSED = true; }