#Haskell, 156 bytes
Haskell, 156 bytes
h 0="O" h n|n>0=' ':c n "/\\ "++"\nO"++c(n-1)" /"++" O\n "++c n "\\/ " |0<1=" O\n/ \\\n"++c(-n-1)"\\ /\n \\\n/ \\\n"++"\\ /\n O" c x=concat.replicate x You can then write it as:
*Main> putStrLn $ h 1 /\ O O \/ *Main> putStrLn $ h 0 O *Main> putStrLn $ h (-1) O / \ \ / O *Main> putStrLn $ h 3 /\ /\ /\ O / / O \/ \/ \/ *Main> putStrLn $ h (-3) O / \ \ / \ / \ \ / \ / \ \ / O *Main>