1*2010f3c8Smestre /* $OpenBSD: robots.h,v 1.14 2016/01/04 17:33:24 mestre Exp $ */ 2df930be7Sderaadt /* $NetBSD: robots.h,v 1.5 1995/04/24 12:24:54 cgd Exp $ */ 3df930be7Sderaadt 4df930be7Sderaadt /* 5df930be7Sderaadt * Copyright (c) 1980, 1993 6df930be7Sderaadt * The Regents of the University of California. All rights reserved. 7df930be7Sderaadt * 8df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 9df930be7Sderaadt * modification, are permitted provided that the following conditions 10df930be7Sderaadt * are met: 11df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 12df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 13df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 14df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 15df930be7Sderaadt * documentation and/or other materials provided with the distribution. 167a09557bSmillert * 3. Neither the name of the University nor the names of its contributors 17df930be7Sderaadt * may be used to endorse or promote products derived from this software 18df930be7Sderaadt * without specific prior written permission. 19df930be7Sderaadt * 20df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30df930be7Sderaadt * SUCH DAMAGE. 31df930be7Sderaadt * 32df930be7Sderaadt * @(#)robots.h 8.1 (Berkeley) 5/31/93 33df930be7Sderaadt */ 34df930be7Sderaadt 35df930be7Sderaadt #include <curses.h> 3634278d36Sguenther #include <limits.h> 37df930be7Sderaadt 38df930be7Sderaadt /* 39df930be7Sderaadt * miscellaneous constants 40df930be7Sderaadt */ 41df930be7Sderaadt 42df930be7Sderaadt #define Y_FIELDSIZE 23 43df930be7Sderaadt #define X_FIELDSIZE 60 44df930be7Sderaadt #define Y_SIZE 24 45df930be7Sderaadt #define X_SIZE 80 46df930be7Sderaadt #define MAXLEVELS 4 47df930be7Sderaadt #define MAXROBOTS (MAXLEVELS * 10) 48df930be7Sderaadt #define ROB_SCORE 10 49df930be7Sderaadt #define S_BONUS (60 * ROB_SCORE) 50df930be7Sderaadt #define Y_SCORE 21 51df930be7Sderaadt #define X_SCORE (X_FIELDSIZE + 9) 52df930be7Sderaadt #define Y_PROMPT (Y_FIELDSIZE - 1) 53df930be7Sderaadt #define X_PROMPT (X_FIELDSIZE + 2) 54df930be7Sderaadt #define MAXSCORES (Y_SIZE - 2) 55df930be7Sderaadt 56df930be7Sderaadt /* 57df930be7Sderaadt * characters on screen 58df930be7Sderaadt */ 59df930be7Sderaadt 60df930be7Sderaadt #define ROBOT '+' 61df930be7Sderaadt #define HEAP '*' 62df930be7Sderaadt #define PLAYER '@' 63df930be7Sderaadt 64df930be7Sderaadt /* 65df930be7Sderaadt * type definitions 66df930be7Sderaadt */ 67df930be7Sderaadt 68df930be7Sderaadt typedef struct { 69df930be7Sderaadt int y, x; 70df930be7Sderaadt } COORD; 71df930be7Sderaadt 72d648d61bSpjanzen typedef struct { 73d648d61bSpjanzen uid_t s_uid; 74d648d61bSpjanzen int s_score; 7534278d36Sguenther char s_name[LOGIN_NAME_MAX]; 76d648d61bSpjanzen } SCORE; 77d648d61bSpjanzen 78df930be7Sderaadt /* 79df930be7Sderaadt * global variables 80df930be7Sderaadt */ 81df930be7Sderaadt 82df930be7Sderaadt extern bool Dead, Full_clear, Jump, Newscore, Real_time, Running, 83df930be7Sderaadt Teleport, Waiting, Was_bonus; 84df930be7Sderaadt 85df930be7Sderaadt #ifdef FANCY 86df930be7Sderaadt extern bool Pattern_roll, Stand_still; 87df930be7Sderaadt #endif 88df930be7Sderaadt 89df930be7Sderaadt extern char Cnt_move, Field[Y_FIELDSIZE][X_FIELDSIZE], *Next_move, 90df930be7Sderaadt *Move_list, Run_ch; 91df930be7Sderaadt 92df930be7Sderaadt extern int Count, Level, Num_robots, Num_scores, Score, 93df930be7Sderaadt Start_level, Wait_bonus; 94df930be7Sderaadt 95e5f400f5Srzalamena extern struct timespec tv; 964c144bbcSpjanzen 97df930be7Sderaadt extern COORD Max, Min, My_pos, Robots[]; 98df930be7Sderaadt 99df930be7Sderaadt 100df930be7Sderaadt /* 101df930be7Sderaadt * functions types 102df930be7Sderaadt */ 103df930be7Sderaadt 104c72b5b24Smillert void add_score(int); 105c72b5b24Smillert bool another(void); 106c72b5b24Smillert int cmp_sc(const void *, const void *); 107c72b5b24Smillert bool do_move(int, int); 108c72b5b24Smillert bool eaten(COORD *); 109c72b5b24Smillert void get_move(void); 110c72b5b24Smillert void init_field(void); 111c72b5b24Smillert bool jumping(void); 112c72b5b24Smillert void make_level(void); 113c72b5b24Smillert void move_robots(void); 114c72b5b24Smillert bool must_telep(void); 115c72b5b24Smillert void play_level(void); 116c72b5b24Smillert int query(char *); 1177ad55f55Smestre __dead void quit(int); 118c72b5b24Smillert void reset_count(void); 119c72b5b24Smillert int rnd(int); 120c72b5b24Smillert COORD *rnd_pos(void); 121c72b5b24Smillert void score(int); 122c72b5b24Smillert void set_name(SCORE *); 123c72b5b24Smillert void show_score(void); 124c72b5b24Smillert int sign(int); 125f0628b46Smestre __dead void usage(void); 126