Exemple #1
0
void drawlives(void)
{
  int16_t l,n,g;
  char buf[10];
  if (gauntlet) {
    g=(int16_t)(cgtime/1193181l);
    sprintf(buf,"%3i:%02i",g/60,g%60);
    outtext(buf,124,0,3);
    return;
  }
  n=getlives(0)-1;
  outtext("     ",96,0,2);
  if (n>4) {
    drawlife(0,80,0);
    sprintf(buf,"X%i",n);
    outtext(buf,100,0,2);
  }
  else
    for (l=1;l<5;l++) {
      drawlife(n>0 ? 0 : 2,l*20+60,0);
      n--;
    }
  if (nplayers==2) {
    outtext("     ",164,0,2);
    n=getlives(1)-1;
    if (n>4) {
      sprintf(buf,"%iX",n);
      outtext(buf,220-strlen(buf)*12,0,2);
      drawlife(1,224,0);
    }
    else
      for (l=1;l<5;l++) {
        drawlife(n>0 ? 1 : 2,244-l*20,0);
        n--;
      }
  }
  if (diggers==2) {
    outtext("     ",164,0,1);
    n=getlives(1)-1;
    if (n>4) {
      sprintf(buf,"%iX",n);
      outtext(buf,220-strlen(buf)*12,0,1);
      drawlife(3,224,0);
    }
    else
      for (l=1;l<5;l++) {
        drawlife(n>0 ? 3 : 2,244-l*20,0);
        n--;
      }
  }
}
Exemple #2
0
void addscore(int n,Sint4 score)
{
  scdat[n].score+=score;
  if (scdat[n].score>999999L)
    scdat[n].score=0;
  if (n==0)
    writenum(scdat[n].score,0,0,6,1);
  else
    if (scdat[n].score<100000L)
      writenum(scdat[n].score,236,0,6,1);
    else
      writenum(scdat[n].score,248,0,6,1);
  if (scdat[n].score>=scdat[n].nextbs+n &&   /* +n to reproduce original bug */
      scdat[n].score<1000000L) {
    if (getlives(n)<5 || unlimlives) {
      if (gauntlet)
        cgtime+=17897715L; /* 15 second time bonus instead of the life */
      else
        addlife(n);
      drawlives();
    }
    scdat[n].nextbs+=bonusscore;
  }
  incpenalty();
  incpenalty();
  incpenalty();
}
Exemple #3
0
int getalllives(void)
{
  int t=0,i;
  for (i=curplayer;i<diggers+curplayer;i++)
    t+=getlives(i);
  return t;
}
Exemple #4
0
void game(void)
{
  int16_t t,c,i;
  bool flashplayer=false;
  if (gauntlet) {
    cgtime=gtime*1193181l;
    timeout=false;
  }
  initlives();
  gamedat[0].level=startlev;
  if (nplayers==2)
    gamedat[1].level=startlev;
  alldead=false;
  ddap->gclear();
  curplayer=0;
  initlevel();
  curplayer=1;
  initlevel();
  zeroscores();
  bonusvisible=true;
  if (nplayers==2)
    flashplayer=true;
  curplayer=0;
  while (getalllives()!=0 && !escape && !timeout) {
    while (!alldead && !escape && !timeout) {
      initmbspr();

      if (playing)
        randv=playgetrand();
      else
        randv=getlrt();
#ifdef INTDRF
      fprintf(info,"%lu\n",randv);
      frame=0;
#endif
      recputrand(randv);
      if (levnotdrawn) {
        levnotdrawn=false;
        drawscreen(ddap);
        if (flashplayer) {
          flashplayer=false;
          strcpy(pldispbuf,"PLAYER ");
          if (curplayer==0)
            strcat(pldispbuf,"1");
          else
            strcat(pldispbuf,"2");
          cleartopline();
          for (t=0;t<15;t++)
            for (c=1;c<=3;c++) {
              outtext(ddap, pldispbuf,108,0,c);
              writecurscore(ddap, c);
              newframe();
              if (escape)
                return;
            }
          drawscores(ddap);
          for (i=0;i<diggers;i++)
            addscore(ddap, i,0);
        }
      }
      else
        initchars();
      outtext(ddap, "        ",108,0,3);
      initscores(ddap);
      drawlives(ddap);
      music(1);

      flushkeybuf();
      for (i=0;i<diggers;i++)
        readdirect(i);
      while (!alldead && !gamedat[curplayer].levdone && !escape && !timeout) {
        penalty=0;
        dodigger(ddap);
        domonsters(ddap);
        dobags(ddap);
        if (penalty>8)
          incmont(penalty-8);
        testpause();
        checklevdone();
      }
      erasediggers();
      musicoff();
      t=20;
      while ((getnmovingbags()!=0 || t!=0) && !escape && !timeout) {
        if (t!=0)
          t--;
        penalty=0;
        dobags(ddap);
        dodigger(ddap);
        domonsters(ddap);
        if (penalty<8)
          t=0;
      }
      soundstop();
      for (i=0;i<diggers;i++)
        killfire(i);
      erasebonus(ddap);
      cleanupbags();
      savefield();
      erasemonsters();
      recputeol();
      if (playing)
        playskipeol();
      if (escape)
        recputeog();
      if (gamedat[curplayer].levdone)
        soundlevdone();
      if (countem()==0 || gamedat[curplayer].levdone) {
#ifdef INTDRF
        fprintf(info,"%i\n",frame);
#endif
        for (i=curplayer;i<diggers+curplayer;i++)
          if (getlives(i)>0 && !digalive(i))
            declife(i);
        drawlives(ddap);
        gamedat[curplayer].level++;
        if (gamedat[curplayer].level>1000)
          gamedat[curplayer].level=1000;
        initlevel();
      }
      else
        if (alldead) {
#ifdef INTDRF
          fprintf(info,"%i\n",frame);
#endif
          for (i=curplayer;i<curplayer+diggers;i++)
            if (getlives(i)>0)
              declife(i);
          drawlives(ddap);
        }
      if ((alldead && getalllives()==0 && !gauntlet && !escape) || timeout)
        endofgame(ddap);
    }
    alldead=false;
    if (nplayers==2 && getlives(1-curplayer)!=0) {
      curplayer=1-curplayer;
      flashplayer=levnotdrawn=true;
    }
  }
#ifdef INTDRF
  fprintf(info,"-1\n%lu\n%i",getscore0(),gamedat[0].level);
#endif
}
Exemple #5
0
void newgame() {
	char d; 
	short i;
	running = 1;  
	nbullets = cmax / 2;
	nbugs = 5;
	
	if(getlives())
		lives = getlives();
	else {
		int fl = senddiff();
		if(fl == 1)
			lives = 15;
		else if(fl == 2)
			lives = 10;
		else if(fl == 3)
			lives = 8;
	}
	if(lives == 0)
		lives = 15;
	
	
	//	lives = 5;//Kitni baar takraye then game over
	score = 0;
	level = 25;
	levels = 1;
/*arrow.r and .c are positions of the gun on teh window rows and colmsms*/
	arrow.r = rmax / 2;
	arrow.c = cmax - 3;
	arrow.w = 3;//width 
	arrow.h = 7;//height
	arrow.str =
	"  * \n"
	" ** \n"
	"*** \n"
	"    \n"
	"*** \n"
	" ** \n"
	"  * \n";
	bullets = malloc(nbullets * sizeof(object));
	for (i = 0; i < nbullets; i++) {
		newbullet(&bullets[i], 0, 0);
	}  
	bugs = malloc(nbugs * sizeof(object));
	for (i = 0; i < nbugs; i++) {
		newbug(&bugs[i]);
	}  
	drawmessage("SEGFAULT SHOOTER", -3);
	drawmessage("Stop the SEGFAULTS from getting past you", -1);
	drawmessage("Arrow keys to move, space to shoot", 0);
	drawmessage("Q to exit", 1);
	drawmessage("Anything else to start", 2);
	d = getch();
	if (d == 'q') {
		return;
	}
	
/*Enables the keyboard arrow keys*/  
	pthread_t pth;
	pthread_create(&pth, NULL, input, "get keys");
	game();
	pthread_cancel(pth);  
	clear();
/* This is printed on the window when game is over*/
	drawmessage("Game Over", -1);
	char string[10] = {'\0'};
	sprintf(string, "%d", score);
	drawmessage(string, 0);
	drawmessage("Return to continue", 2);
	while ((d = getch()) && d != '\n')
		if (d == 'q') 
			return;
	clear();
	highscore();
	clear();
	highscores();
	while ((d = getch()) && d != '\n')
		if (d == 'q')
			return;
}