Use that picture array (three-dimensional) that we looked at last week. When you draw your 54 little pictures, don't draw them "manually". For each one of the pictures look in the P array for what little picture to draw. Your sides are numbered 0 through 5. Your rows and columns are numbered 0 through 2. Let's say, for example, you are drawing side 2, row 1, col 0. Now, instead actually drawing the "ninth" of picture 2 corresponding to row 1 and col 0, Look up P[2][1][0] in your data structure. That data structure will tell you what picture row and col you should ACTUALLY draw there. Perhaps picture 5 row 0 col 2. So THAT would be the picture you would draw at side 2, row 1, col 0. That picture has been rotated into that position as the result of turning some of the sides of the Rubik's cube. The data structure will ALSO tell you how much you need to rotate that picture before you place it on the cube (0, 90, 180, 270). For example, let's you rotate side 0. The center square of side 0 (row 1, col 1) doesn't change position. It's still in the same place, but it's been rotated. It's not "pointing" the same way. Every time you spin a side, 21 pictures have to be moved around in the P data structure. But don't worry about that first!!! First write the code that looks up the "proper" sticker from the P data structure and it's rotation and places that sticker on the portion of the cube you're trying to draw. And initialize the P data structure so that when the program begins, everything is where it should be. (P[4][2][2] starts out containing side 4, row 2, col 2, etc.) THEN write the code for the 12 possible rotations. Each possible rotation changes 21 stickers. Which sticker goes where. Does the orientation of the sticker change?