random lujvo

From Lojban
Revision as of 17:06, 4 November 2013 by Gleki (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Mumym is a lojbanic wordgame similar to 5x5 or Mastermind. It selects a random gismu, and people take turns guessing which one. With every guess, you get a score, telling you how many letters in your guess are in the winning gismu. It also has a framework for AI, although there is only one simple AI right now.

The current version of Mumym is 0.9.1, released on 14 Jan 2004.

A tarball of the source is available at http://www.surreality.us/files/mumym-0.9.1.tar.bz2

A deb (probably outdated at this point) is available at http://www.surreality.us/debian/mumym_0.9.1_all.deb.

How to play Mumym

When Mumym is just sitting there, having just joined, or not playing a game, you can tell it to start the game process by saying:

doi mumym ko cfari

Mumym then enters the starting phase. Here, players can specify their desire to play with the following:

doi mumym mi kelci djica

You can also tell it that you want an AI to play with a command like the following:

doi mumym la .alis kelci

When all the players are ready, you can tell Mumym to start the actual game with:

doi mumym ko cfagau

Mumym will then ask the players in order to guess. You can respond with a guess by saying:

zo gismu

Where gismu is your guess.

At any time during play, you can tell Mumym to end the current game by saying:

doi mumym ko sisti

You can also ask Mumym to redisplay its startup message by saying:

doi mumym ko sarji

Contributing AI

I have a generally open call for new AI classes for Mumym. It must be written in fairly clean Python, and must be licensed under the GPL.

(The following code is all under the GNU GPL.)

When making an AI, you derive from the following class:

class AI:

"Base class for AIs."

def '''init'''(self, mumym):

global possible_gismu

self.possible_gismu = possible_gismu

self.mumym = mumym

def onGuess(self, guess, score):

"Called when someone makes a guess, including the current AI."

pass

def makeGuess(self):

"Called when it's the AI's turn, you should make a guess with self.mumym.guess()."

pass

Here is an example of a very simple AI:

class SimpleAI(AI): # la alis.

"A simple AI that will only guess random words that haven't already been guessed."

def onGuess(self, guess, score):

# This needs to be done in a try block, in case some bonehead guesses a word

#  that's already been guessed.

try:

self.possible_gismu.remove(guess)

except:

pass

def makeGuess(self):

guess = random.choice(self.possible_gismu)

self.mumym.msg(self.mumym.chan, "la .alis smadi le du'u zo " + guess + " valsi")

self.mumym.guess(".alis", guess)

If you need help or want to submit one, contact bancus.