1*21470Smckusick /* 2*21470Smckusick * Copyright (c) 1980 Regents of the University of California. 3*21470Smckusick * All rights reserved. The Berkeley software License Agreement 4*21470Smckusick * specifies the terms and conditions for redistribution. 5*21470Smckusick */ 6*21470Smckusick 7*21470Smckusick #ifndef lint 8*21470Smckusick static char sccsid[] = "@(#)play_level.c 5.1 (Berkeley) 05/30/85"; 9*21470Smckusick #endif not lint 10*21470Smckusick 11*21470Smckusick # include "robots.h" 12*21470Smckusick 13*21470Smckusick /* 14*21470Smckusick * play_level: 15*21470Smckusick * Let the player play the current level 16*21470Smckusick */ 17*21470Smckusick play_level() 18*21470Smckusick { 19*21470Smckusick register COORD *cp; 20*21470Smckusick register int y, x, bonus; 21*21470Smckusick 22*21470Smckusick move(My_pos.y, My_pos.x); 23*21470Smckusick addch(PLAYER); 24*21470Smckusick refresh(); 25*21470Smckusick for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++) { 26*21470Smckusick move(cp->y, cp->x); 27*21470Smckusick addch(ROBOT); 28*21470Smckusick } 29*21470Smckusick refresh(); 30*21470Smckusick # ifdef DEBUG 31*21470Smckusick standout(); 32*21470Smckusick move(Min.y, Min.x); 33*21470Smckusick addch(inch()); 34*21470Smckusick move(Max.y, Max.x); 35*21470Smckusick addch(inch()); 36*21470Smckusick standend(); 37*21470Smckusick # endif DEBUG 38*21470Smckusick setjmp(End_move); 39*21470Smckusick flush_in(); 40*21470Smckusick while (!Dead && Num_robots > 0) { 41*21470Smckusick move(My_pos.y, My_pos.x); 42*21470Smckusick if (!jumping()) 43*21470Smckusick refresh(); 44*21470Smckusick get_move(); 45*21470Smckusick if (Real_time) 46*21470Smckusick alarm(0); 47*21470Smckusick if (Field[My_pos.y][My_pos.x] != 0) 48*21470Smckusick Dead = TRUE; 49*21470Smckusick if (!Dead) 50*21470Smckusick move_robots(FALSE); 51*21470Smckusick if (Was_bonus) { 52*21470Smckusick move(Y_PROMPT, X_PROMPT); 53*21470Smckusick clrtoeol(); 54*21470Smckusick move(Y_PROMPT + 1, X_PROMPT); 55*21470Smckusick clrtoeol(); 56*21470Smckusick Was_bonus = FALSE; 57*21470Smckusick } 58*21470Smckusick } 59*21470Smckusick 60*21470Smckusick /* 61*21470Smckusick * if the player didn't die, add on the possible bonuses 62*21470Smckusick */ 63*21470Smckusick 64*21470Smckusick if (!Dead) { 65*21470Smckusick Was_bonus = FALSE; 66*21470Smckusick 67*21470Smckusick if (Level == Start_level && Start_level > 1) { 68*21470Smckusick move(Y_PROMPT, X_PROMPT); 69*21470Smckusick printw("Advance bonus: %d", S_BONUS); 70*21470Smckusick refresh(); 71*21470Smckusick add_score(S_BONUS); 72*21470Smckusick Was_bonus = TRUE; 73*21470Smckusick } 74*21470Smckusick 75*21470Smckusick if (Wait_bonus != 0) { 76*21470Smckusick if (!Was_bonus) 77*21470Smckusick move(Y_PROMPT, X_PROMPT); 78*21470Smckusick else 79*21470Smckusick move(Y_PROMPT + 1, X_PROMPT); 80*21470Smckusick printw("Wait bonus: %d", Wait_bonus); 81*21470Smckusick refresh(); 82*21470Smckusick add_score(Wait_bonus); 83*21470Smckusick Was_bonus = TRUE; 84*21470Smckusick } 85*21470Smckusick } 86*21470Smckusick } 87