|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)play_level.c 5.5 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: # include "robots.h" ! 25: ! 26: /* ! 27: * play_level: ! 28: * Let the player play the current level ! 29: */ ! 30: play_level() ! 31: { ! 32: register COORD *cp; ! 33: register int y, x, bonus; ! 34: ! 35: move(My_pos.y, My_pos.x); ! 36: addch(PLAYER); ! 37: refresh(); ! 38: for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++) { ! 39: if (cp->y < 0) ! 40: continue; ! 41: move(cp->y, cp->x); ! 42: addch(ROBOT); ! 43: } ! 44: refresh(); ! 45: # ifdef DEBUG ! 46: standout(); ! 47: move(Min.y, Min.x); ! 48: addch(inch()); ! 49: move(Max.y, Max.x); ! 50: addch(inch()); ! 51: standend(); ! 52: # endif DEBUG ! 53: setjmp(End_move); ! 54: flush_in(); ! 55: while (!Dead && Num_robots > 0) { ! 56: move(My_pos.y, My_pos.x); ! 57: if (!jumping()) ! 58: refresh(); ! 59: get_move(); ! 60: if (Real_time) ! 61: alarm(0); ! 62: if (Field[My_pos.y][My_pos.x] != 0) ! 63: Dead = TRUE; ! 64: if (!Dead) ! 65: move_robots(FALSE); ! 66: if (Was_bonus) { ! 67: move(Y_PROMPT, X_PROMPT); ! 68: clrtoeol(); ! 69: move(Y_PROMPT + 1, X_PROMPT); ! 70: clrtoeol(); ! 71: Was_bonus = FALSE; ! 72: } ! 73: } ! 74: ! 75: /* ! 76: * if the player didn't die, add on the possible bonuses ! 77: */ ! 78: ! 79: if (!Dead) { ! 80: Was_bonus = FALSE; ! 81: ! 82: if (Level == Start_level && Start_level > 1) { ! 83: move(Y_PROMPT, X_PROMPT); ! 84: printw("Advance bonus: %d", S_BONUS); ! 85: refresh(); ! 86: add_score(S_BONUS); ! 87: Was_bonus = TRUE; ! 88: } ! 89: ! 90: if (Wait_bonus != 0) { ! 91: if (!Was_bonus) ! 92: move(Y_PROMPT, X_PROMPT); ! 93: else ! 94: move(Y_PROMPT + 1, X_PROMPT); ! 95: printw("Wait bonus: %d", Wait_bonus); ! 96: refresh(); ! 97: add_score(Wait_bonus); ! 98: Was_bonus = TRUE; ! 99: } ! 100: } ! 101: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.