Cheat

Project Proposal by Martin Stacey


Cheat

Software

An object oriented language

Covers

Programming, system design, interface design, heuristic reasoning

Skills Required

Programming, interest in artificial intelligence

Challenge

Conceptual ?? Technical ?? Programming ???

Brief Description

Cheat your way to a degree! Implement a computerised version of the simple and traditional card game Cheat, so that people can cheat against a variety of computerised opponents.

Cheat is a very simple game for three or more players, played with one standard pack of cards. The winner is the first player to get rid of all his, her or its cards. The entire pack of cards are evenly dealt to the players. At each turn a player puts down one, two, three or four cards, face down, and announces what they are, honestly or dishonestly: 'one three', 'two sevens', 'four aces', etc. The player must claim to put down cards with the same value as the previous player, or a value one higher or one lower, so that a three must be followed by twos, threes or fours. Aces can be followed by kings or twos. You may accuse another player of cheating: if the player has cheated, he/she/it must pick up all the cards on the discard pile and add them to his/her/its hand; if not, the accusing player must pick up all the cards. The first player to play, or the next player after a challenge, may announce any value (but doesn't have to tell the truth).

Implementing Cheat with computer opponents with no intelligence shouldn't be too difficult. It also won't get you a very high mark. You should develop (1) an interface that enables the users to choose from a range of opponents, or progress through different levels playing against progressively tougher opponents; (2) a game architecture that enables the connection of different computer players to the game mechanism and interface; (3) a computer player architecture that enables computer players to apply different rules to decide how to play in the current situation; and (4) a number of different players.

Extensions

You might implement the computer players as programs running in separate threads – a nice twist and good experience but not necessary for a satisfactory multi-agent system.

You might implement a mechanism for tournaments using only computer players, to see which strategies work best. For a really good project, you should aim to develop a mechanism to enable computer players to change their strategies and learn what works best.


Back to