Prepare new maemo release
[maemo-rb.git] / apps / plugins / reversi / reversi-strategy-naive.c
blob37a25d10dae858001fb66fb51434f41a289c9267
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (c) 2007 Antoine Cellerier
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #include "reversi-strategy.h"
24 /**
25 * Naive/Stupid strategy:
26 * Random moves
29 static move_t naive_move_func(const reversi_board_t *game, int player) {
30 int num_moves = reversi_count_player_available_moves(game, player);
31 int r;
32 int row = 0;
33 int col = 0;
34 if(!num_moves) return MOVE_INVALID;
35 r = rb->rand()%num_moves;
36 while(true) {
37 if(reversi_is_valid_move(game, row, col, player)) {
38 r--;
39 if(r<0) {
40 return MAKE_MOVE(row,col,player);
43 col ++;
44 if(col==BOARD_SIZE) {
45 col = 0;
46 row ++;
47 if(row==BOARD_SIZE) {
48 row = 0;
54 const game_strategy_t strategy_naive = {
55 true,
56 NULL,
57 naive_move_func