Easy/Fun Games to Program

Hello. Anybody know of any fun, and somewhat easy, games to program (I will be using Java if that matters)? I was thinking some card games, like blackjack or poker, any other ideas? To get an idea of the level of easyness I am looking for, I have made Sudoku, and Conway's Game of Life. I spent the last day or so making Sudoku and it prints a board, asks the user for a value and spot, replaces the spot with the new value, and prints the board again, also the program can check to see if a Sudoku board has a correct solution. I am mostly wanting something that would be fun and take some thought.

I'm guessing it will player vs CPU rather than player vs player which kind of limits your choices because for some games (like chess) designing the AI would be very hard. I think definitely Poker is a nice one. You could also do a Mario/Sonic type of game.

How about Connect 4. The goal of the game is to line up 4 of the same color chips (Horizontally, Vertically or Diagonally). If you are doing it text based you could use X and O. The board could be 10x10 and you would need to parse the board each time to see if there are 4 chips next to each other.