Java-Gaming.org Hi !
 Featured games (84) games approved by the League of Dukes Games in Showcase (569) Games in Android Showcase (154) games submitted by our members Games in WIP (618) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 AI for mancala game  (Read 6701 times) 0 Members and 1 Guest are viewing this topic.
mahfuz

Junior Newbie

 « Posted 2009-06-24 23:42:24 »

I am working with a mancala(kalah) game. I made the board and now want to move to the game logic.

Another Question: I want to draw a hole full with ball. The number of balls can increase dynamically. How can I draw them(set Coordinate of ball), so that it seems realistic.

Mahfuz
Eli Delventhal

JGO Kernel

Medals: 42
Projects: 11
Exp: 10 years

Game Engineer

 « Reply #1 - Posted 2009-06-25 00:51:23 »

Take a look at minmax decision trees.

It's very easy to implement and works great in solved games (Mancala, Tic Tac Toe, and Connect 4 are all examples of solved games). Because you have enough computational resources to predict every possible game outcome from any given point, you can therefore determine at any given point what the best move is.

Here is an example of a minmax tree for Tic Tac Toe.

The game starts, no pieces are placed. The current... hmm I was going to explain this in text then just decided to Google image search if someone has made one already. 'Lo and behold.

That tree obviously doesn't illustrate every possibility because it has a lot of "..." but you should get the idea. Notice at the end they mention a "utility." This is what you will be using to determine the proper move. As you traverse the tree and find every single possibility, you will eventually reach a bunch of leaf nodes (nodes that have no children) that all represent the end of the game (the board will be full or someone will have won). If the leaf node found is a win for the computer, then it has a value of +1. If it's a loss, then it has a value of -1. A draw has a value of 0. Once you've figured out all these values for every single leaf, you'll have your full tree created. Remember that the root node (the top) is the current game state. All of its direct children are each of your choices (see how in the image there is one for every space you can move into). You want to traverse down each of these choices to all the leaf nodes it contains, adding up the total utility as you traverse. Then the branch that has the highest utility becomes the correct choice.

The above better illustrates that. There are only 3 choices left in the game, so there are 3 children of the root node. Every time a leaf node is reached, its utility is calculated. The total utility for the left choice is (1 + -1 = 0), the total utility for the middle choice is (-1 + 0 = -1), and the total utility for the right choice is (1 + 0 = 1). So, you would choose the right choice, which will result in the computer either winning or having a draw.

Now you just need to take that same concept to Mancala. At the start of the game, the computer will have 6 pots full of marbles and therefore 6 choices. Then you just need to branch from there, same as in Tic Tac Toe.

As for your other question, you'll probably want to use a bit of randomness plus an angle measurement from the center, then use cosine and sine to get the X and Y.

See my work:
OTC Software
mahfuz

Junior Newbie

 « Reply #2 - Posted 2009-07-24 04:33:37 »

I need to find some properties which can make good evaluation functions. So, how can make good evaluation functions?
Jono
 « Reply #3 - Posted 2009-07-25 21:26:15 »

You could try starting with just the number of secure points. That could be the number of stones already  in your home bin (I don't know the proper Mancala terms), plus one for each bin on your side with enough stones to reach your home bin.

The position evaluation doesn't need to be perfect, it just has to help rule out really bad options.
Pages: [1]
 ignore  |  Print

You cannot reply to this message, because it is very, very old.

 Riven (22 views) 2015-04-16 10:48:47 Duke0200 (35 views) 2015-04-16 01:59:01 Fairy Tailz (27 views) 2015-04-14 20:13:12 Riven (28 views) 2015-04-12 21:36:37 bus hotdog (45 views) 2015-04-10 02:39:32 CopyableCougar4 (46 views) 2015-04-10 00:51:04 BurntPizza (46 views) 2015-04-06 22:06:58 ags1 (51 views) 2015-04-02 10:58:48 Riven (49 views) 2015-04-01 18:27:05 ags1 (66 views) 2015-03-31 10:55:12
 BurntPizza 24x theagentd 21x wessles 15x 65K 12x Rayvolution 12x kingroka123 11x alwex 10x KevinWorkman 9x kevglass 8x ra4king 8x phu004 8x Hanksha 7x SHC 7x Olo 7x Ecumene 7x chrislo27 7x
 How to: JGO Wikiby Mac702015-02-17 20:56:162D Dynamic Lighting2015-01-01 20:25:42How do I start Java Game Development?by gouessej2014-12-27 19:41:21Resources for WIP gamesby kpars2014-12-18 10:26:14Understanding relations between setOrigin, setScale and setPosition in libGdx2014-10-09 22:35:00Definite guide to supporting multiple device resolutions on Android (2014)2014-10-02 22:36:02List of Learning Resources2014-08-16 10:40:00List of Learning Resources2014-08-05 19:33:27
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org