DealCards: SprtWid = GetSpriteWidth(1) //All cards will have the same height and width SprtHt = GetSpriteHeight(1) // There will eventually be a maximum of 10 players. I am only using 2 and 4 players to get the card dealing correct If NumPlayers = 2 PlayerPosX[1] = ScrnWid/2 - SprtWid/6 PlayerPosY[1] = ScrnHt - 2 * SprtHt CardAngle[1] = 0 PlayerPosX[2] = ScrnWid/2 - SprtWid/6 PlayerPosY[2] = 10 + SprtHt CardAngle[2] = 180 endif If NumPlayers = 4 PlayerPosX[1] = ScrnWid - 2 * SprtHt PlayerPosY[1] = ScrnHt/2 - 10 CardAngle[1] = 90 PlayerPosX[2] = ScrnWid/2 - SprtWid/6 PlayerPosY[2] = ScrnHt - 2 * SprtHt CardAngle[2] = 180 PlayerPosX[3] = SprtWid PlayerPosY[3] = ScrnHt/2 - 10 CardAngle[3] = 270 PlayerPosX[4] = ScrnWid/2 - SprtWid/6 PlayerPosY[4] = 10 + SprtHt CardAngle[4] = 0 endif //Deal: For i = 1 to NumPlayers Move[i] = 1 Next i Do // Set cards 2 and 5 to be at the coordinates of the player with the other cards offset up, down or sideways. The enables simple location // as each additional player is added. For j = 1 to 6 For i = 1 to NumPlayers If PlayerPosX[i] = ScrnWid - 2 * SprtHt //It's on the right side of the screen OffsetX[1] = 0 OffsetY[1] = SprtWid + 2 OffsetX[2] = 0 OffsetY[2] = 0 OffsetX[3] = 0 OffsetY[3] = - SprtWid - 2 OffsetX[4] = - SprtHt - 2 OffsetY[4] = SprtWid + 2 OffsetX[5] = - SprtHt - 2 OffsetY[5] = 0 OffsetX[6] = - SprtHt - 2 OffsetY[6] = - SprtWid - 2 Elseif PlayerPosY[i] = ScrnHt - 2 * SprtHt //It's on the bottom side of the screen OffsetX[1] = - SprtWid - 2 OffsetY[1] = 0 OffsetX[2] = 0 OffsetY[2] = 0 OffsetX[3] = SprtWid + 2 OffsetY[3] = 0 OffsetX[4] = - SprtWid - 2 OffsetY[4] = - SprtHt + 2 OffsetX[5] = 0 OffsetY[5] = - SprtHt - 2 OffsetX[6] = SprtWid + 2 OffsetY[6] = - SprtHt - 2 Elseif PlayerPosX[i] = SprtWid //It's on the left side of the screen OffsetX[1] = 0 OffsetY[1] = - SprtWid - 4 OffsetX[2] = 0 OffsetY[2] = 0 OffsetX[3] = 0 OffsetY[3] = SprtWid + 4 OffsetX[4] = SprtHt + 4 OffsetY[4] = - SprtWid - 4 OffsetX[5] = SprtHt + 4 OffsetY[5] = 0 OffsetX[6] = SprtHt + 4 OffsetY[6] = SprtWid + 4 Elseif PlayerPosY[i] = 10 + SprtHt //It's on the top side of the screen OffsetX[1] = - SprtWid + 2 OffsetY[1] = 0 OffsetX[2] = 0 OffsetY[2] = 0 OffsetX[3] = SprtWid + 2 OffsetY[3] = 0 OffsetX[4] = - SprtWid - 2 OffsetY[4] = SprtHt + 2 OffsetX[5] = 0 OffsetY[5] = SprtHt + 2 OffsetX[6] = SprtWid + 2 OffsetY[6] = SprtHt + 2 Endif // Frome here to the noted end of this section is where I believe the problem lies. That is, one of the cards dealt to each player // is not locating properly repeat OriginalX[NumberOfCards + 1 - i] = GetSpriteX(NumberOfCards + 1 - i) OriginalY[NumberOfCards + 1 - i] = GetSpriteY(NumberOfCards + 1 - i) DistanceX[i] = PlayerPosX[i] + OffsetX[j] - OriginalX[NumberOfCards + 1 - i] DistanceY[i] = PlayerPosY[i] + OffsetY[j] - OriginalY[NumberOfCards + 1 - i] DistanceFromAtoB[i] = Sqrt((DistanceX[i] * DistanceX[i]) + (DistanceY[i] * DistanceY[i])) if (DistanceFromAtoB[i] <> 0.0) DirectionX[i] = DistanceX[i] / DistanceFromAtoB[i] DirectionY[i] = DistanceY[i] / DistanceFromAtoB[i] endif if (Move[i] > 0 ) NewX = GetSpriteX(NumberOfCards + 1 - i) + DirectionX[i] * Move[i] NewY = GetSpriteY(NumberOfCards + 1 - i) + DirectionY[i] * Move[i] if (Move[i] < DistanceFromAtoB[i]) Move[i] = Move[i] + 1 //2 else Move[i] = 0 endif SetSpritePosition((NumberOfCards + 1 - i), NewX, NewY) SetSpriteAngle(NumberOfCards + 1 - i, CardAngle[i]) endif // This marks the end of the section where I believe the problem of the card location is contained // Sleep(500) Sync() until (Move[i] = 0) Move[i] = 1 Next i NumberOfCards = NumberOfCards - NumPlayers If j = 6 exit endif Next j Sleep(500) sync() If j = 6 exit endif loop Return