I know it's not as cool as a lot of the projects on here, but it's one of my first so I don't care
I use a 204 HD44780 compatible display and the (8 bit currently, 4 bit later) LiquidCrystal library that has been slightly modified to work with my 204 display.
"Screen" terminal application transmits 'w' and 's' for player one and 'o' and 'l' for player two via serial, and the arduino does the processing.
Yes. It could just as easily be done with buttons though
At the moment it's sent via serial and then the arduino performs the movements etc.
Using the linux command "screen /dev/ttyUSB0" (or wherever your arduino device is) you can effectively transmit all your terminal input to the arduino and have all the arduino's serial output displayed in the terminal window.
The reason that I edited the setCursor function is that when I output the data using the old library it wrote to the first line, then the third, then the second, then the fourth - which was a bit annoying
@scootabug: If you wanted to use a Serial LCD I expect you would then use the Wire library instead of the LiquidCrystal one. My program takes data and formats/outputs it using the LiquidCrystal library into a form the LCD can understand. Serial LCDs already have that build inside of them, you just need to send a character over serial. Take a look here: http://arduino.cc/en/Reference/Wire