(linenum→info "unix/slp.c:2238")

bsd-games/2.17/dab/algor.h

    1: /*      $NetBSD: algor.h,v 1.1.1.1 2003/12/26 17:57:03 christos Exp $        */
    2: 
    3: /*-
    4:  * Copyright (c) 2003 The NetBSD Foundation, Inc.
    5:  * All rights reserved.
    6:  *
    7:  * This code is derived from software contributed to The NetBSD Foundation
    8:  * by Christos Zoulas.
    9:  *
   10:  * Redistribution and use in source and binary forms, with or without
   11:  * modification, are permitted provided that the following conditions
   12:  * are met:
   13:  * 1. Redistributions of source code must retain the above copyright
   14:  *    notice, this list of conditions and the following disclaimer.
   15:  * 2. Redistributions in binary form must reproduce the above copyright
   16:  *    notice, this list of conditions and the following disclaimer in the
   17:  *    documentation and/or other materials provided with the distribution.
   18:  * 3. All advertising materials mentioning features or use of this software
   19:  *    must display the following acknowledgement:
   20:  *        This product includes software developed by the NetBSD
   21:  *        Foundation, Inc. and its contributors.
   22:  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23:  *    contributors may be used to endorse or promote products derived
   24:  *    from this software without specific prior written permission.
   25:  *
   26:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36:  * POSSIBILITY OF SUCH DAMAGE.
   37:  */
   38: 
   39: /*
   40:  * algor.h: Computer's algorithm
   41:  */
   42: 
   43: #ifndef _H_ALGOR
   44: #define _H_ALGOR
   45: 
   46: #include "player.h"
   47: 
   48: class BOARD;
   49: class BOX;
   50: 
   51: class ALGOR : public PLAYER {
   52:   public:
   53:     ALGOR(const char c);
   54:     // Return a proposed move in (y, x, dir)
   55:     void play(const BOARD& b, size_t& y, size_t& x, int& dir);
   56: 
   57:   private:
   58:     // Closure searches
   59:     int find_closure(size_t& y, size_t& x, int& dir, BOARD& b);
   60:     int find_max_closure(size_t& y, size_t& x, int& dir, const BOARD& b);
   61:     int find_min_closure1(size_t& y, size_t& x, int& dir, const BOARD& b,
   62:                           int last);
   63:     int find_min_closure(size_t& y, size_t& x, int& dir, const BOARD& b);
   64: 
   65:     // Move searches
   66:     int find_good_turn(size_t& y, size_t& x, int& dir, const BOARD& b);
   67:     int find_bad_turn(size_t& y, size_t& x, int& dir, BOARD& b, int last);
   68: 
   69:     // Move Attempts
   70:     int try_bad_turn(BOX& box, size_t& y, size_t& x, int& dir, BOARD& b,
   71:                      int last);
   72:     int try_good_turn(BOX& box, size_t y, size_t x, int& dir, BOARD& b);
   73: 
   74:     // Utils
   75:     size_t count_closure(size_t& y, size_t& x, int& dir, BOARD& b);
   76: 
   77: #ifdef notyet
   78:     size_t find_single(void);
   79: #endif
   80: 
   81:     size_t _edge1;
   82:     size_t _edge2;
   83:     size_t _maxedge;
   84: };
   85: 
   86: #endif
Syntax (Markdown)