home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
sources
/
x
/
volume6
/
xplumb
/
part01
/
init.C
< prev
next >
Wrap
C/C++ Source or Header
|
1990-04-11
|
3KB
|
83 lines
/*
* Copyright 1990 Digital Equipment Corporation
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of Digital Equipment
* Corporation not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Digital Equipment Corporation makes no representations
* about the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
* DIGITAL EQUIPMENT CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
* ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Terry Weissman
* weissman@wsl.dec.com
*/
#include "plumbing.h"
void InitLevel() {
int x, y;
fastflow = False;
numtoget = LevelNumToGet();
for (x=0 ; x<HSQUARES ; x++) {
for (y=0 ; y<VSQUARES ; y++) {
board[x][y].Clear();
}
}
startx = Random(HSQUARES - 2) + 1;
starty = Random(VSQUARES - 2) + 1;
startdir = Random(4);
board[startx][starty].SetPiece(PieceStart[startdir]);
board[startx][starty].ClearRemovable();
score->SetCountDown(LevelCountDown());
}
void InitializeGame() {
level = 1;
score->ClearScore();
InitLevel();
}
void GameOver() {
int i, x, y;
Display *dpy;
XEvent event;
TimerClearAll();
for (y=0 ; y<VSQUARES ; y++) {
for (x=0 ; x<HSQUARES ; x++) {
if (board[x][y].GetPiece() != PieceNone &&
board[x][y].GetRemovable()) {
board[x][y].SetPiece(PieceNone);
score->AddScore(LevelExtraScore());
for (i=0 ; i<numscreens ; i++)
XFlush(screen[i]->GetDpy());
TimerSleep(200);
}
}
}
mode = (numtoget > 0) ? ModeGameOver : ModeEndOfLevel;
if (mode == ModeGameOver) {
prevscore = score->GetScore();
score->RecordScore();
}
for (i=0 ; i<numscreens ; i++) {
dpy = screen[i]->GetDpy();
XClearArea(dpy, screen[i]->GetWindow(), 0, 0, 1, 1, True);
while (XCheckMaskEvent(dpy, ButtonPressMask, &event)) ;
}
}