121470Smckusick /* 221470Smckusick * Copyright (c) 1980 Regents of the University of California. 321470Smckusick * All rights reserved. The Berkeley software License Agreement 421470Smckusick * specifies the terms and conditions for redistribution. 521470Smckusick */ 621470Smckusick 721470Smckusick #ifndef lint 8*25019Smckusick static char sccsid[] = "@(#)play_level.c 5.2 (Berkeley) 09/23/85"; 921470Smckusick #endif not lint 1021470Smckusick 1121470Smckusick # include "robots.h" 1221470Smckusick 1321470Smckusick /* 1421470Smckusick * play_level: 1521470Smckusick * Let the player play the current level 1621470Smckusick */ 1721470Smckusick play_level() 1821470Smckusick { 1921470Smckusick register COORD *cp; 2021470Smckusick register int y, x, bonus; 2121470Smckusick 2221470Smckusick move(My_pos.y, My_pos.x); 2321470Smckusick addch(PLAYER); 2421470Smckusick refresh(); 2521470Smckusick for (cp = Robots; cp < &Robots[MAXROBOTS]; cp++) { 26*25019Smckusick if (cp->y < 0) 27*25019Smckusick continue; 2821470Smckusick move(cp->y, cp->x); 2921470Smckusick addch(ROBOT); 3021470Smckusick } 3121470Smckusick refresh(); 3221470Smckusick # ifdef DEBUG 3321470Smckusick standout(); 3421470Smckusick move(Min.y, Min.x); 3521470Smckusick addch(inch()); 3621470Smckusick move(Max.y, Max.x); 3721470Smckusick addch(inch()); 3821470Smckusick standend(); 3921470Smckusick # endif DEBUG 4021470Smckusick setjmp(End_move); 4121470Smckusick flush_in(); 4221470Smckusick while (!Dead && Num_robots > 0) { 4321470Smckusick move(My_pos.y, My_pos.x); 4421470Smckusick if (!jumping()) 4521470Smckusick refresh(); 4621470Smckusick get_move(); 4721470Smckusick if (Real_time) 4821470Smckusick alarm(0); 4921470Smckusick if (Field[My_pos.y][My_pos.x] != 0) 5021470Smckusick Dead = TRUE; 5121470Smckusick if (!Dead) 5221470Smckusick move_robots(FALSE); 5321470Smckusick if (Was_bonus) { 5421470Smckusick move(Y_PROMPT, X_PROMPT); 5521470Smckusick clrtoeol(); 5621470Smckusick move(Y_PROMPT + 1, X_PROMPT); 5721470Smckusick clrtoeol(); 5821470Smckusick Was_bonus = FALSE; 5921470Smckusick } 6021470Smckusick } 6121470Smckusick 6221470Smckusick /* 6321470Smckusick * if the player didn't die, add on the possible bonuses 6421470Smckusick */ 6521470Smckusick 6621470Smckusick if (!Dead) { 6721470Smckusick Was_bonus = FALSE; 6821470Smckusick 6921470Smckusick if (Level == Start_level && Start_level > 1) { 7021470Smckusick move(Y_PROMPT, X_PROMPT); 7121470Smckusick printw("Advance bonus: %d", S_BONUS); 7221470Smckusick refresh(); 7321470Smckusick add_score(S_BONUS); 7421470Smckusick Was_bonus = TRUE; 7521470Smckusick } 7621470Smckusick 7721470Smckusick if (Wait_bonus != 0) { 7821470Smckusick if (!Was_bonus) 7921470Smckusick move(Y_PROMPT, X_PROMPT); 8021470Smckusick else 8121470Smckusick move(Y_PROMPT + 1, X_PROMPT); 8221470Smckusick printw("Wait bonus: %d", Wait_bonus); 8321470Smckusick refresh(); 8421470Smckusick add_score(Wait_bonus); 8521470Smckusick Was_bonus = TRUE; 8621470Smckusick } 8721470Smckusick } 8821470Smckusick } 89