Пример #1
0
void Scene::gameInit()
{
        if(dis == 0)
        {
        timer = new QTimer(this);
        timer_drum = new QTimer(this);
        connect(timer_drum,SIGNAL(timeout()),this,SLOT(random()));
        connect(timer,SIGNAL(timeout()),this,SLOT(advance()));
        connect(timer,SIGNAL(timeout()),this,SLOT(timeup()));
        timer_drum->start(2000);
        timer->start(20);
        }

        if(dis == 1)
        {
        disconnect(timer_drum,SIGNAL(timeout()),this,SLOT(random()));
        disconnect(timer,SIGNAL(timeout()),this,SLOT(advance()));
        disconnect(timer,SIGNAL(timeout()),this,SLOT(timeup()));
        }
}
Пример #2
0
void _stdc timer(unsigned int duration)
{
  long tim;

  tim=timerset(duration);

  while (! timeup(tim))
#ifdef UNIX
    sleep(0)
#endif
    ;
}
Пример #3
0
/*!
 * @brief ゲームのメインループ
 * @param [in] sock  送信先ソケットのディスクリプタ
 */
int play_tetris(int sock) {
  static const uchar FLAG = GAMEOVER;  /* ゲームオーバ時に送信する値 */
  uint   cnt = 1;                 /* カウンタ */
  time_t base_time = time(NULL);  /* ゲーム開始時刻を記憶 */

  initialize(sock); /* 初期化 */
  while (!gameover) {  /* ゲームオーバーになるまでゲーム続行 */
    static uchar enemy_field[STAGE_HEIGHT][STAGE_WIDTH];  /* 相手のフィールドデータを格納する2次元配列 */
    time_t game_time;        /* ゲームを開始してから、何秒経過したかを保持する */

    /* キー入力があればそれに応じて操作 */
    control_block();
    /* 32回ループをしたら、ブロックを1マス落とす */
    if ((cnt = (cnt + 1) % 32) == 0) {
      drop_block();
    }

    write(sock,  field, sizeof(field));             /* 自分のフィールドデータを送信 */
    write(sock, &score, sizeof(score));             /* 自分のスコアを送信 */
    read(sock,  enemy_field, sizeof(enemy_field));  /* 相手のフィールドデータを受信 */
    read(sock, &enemy_score, sizeof(enemy_score));  /* 相手のスコアを受信 */
    show_field(enemy_field, ENEMY_FIELD_X);  /* 相手のフィールドを描画する */

    if (read_protocol(enemy_field[0][0])) {  /* 特別な値を受信していないかチェックする */
      sleep(1);
      return EXIT_SUCCESS;  /* ゲーム終了 */
    }

    print_score(ENEMY_SCORE_X, ENEMY_SCORE_Y, enemy_score);  /* 相手のスコアを描画 */

    if ((game_time = GAME_TIME - (time(NULL) - base_time)) == 0) {
      timeup(sock);
      sleep(1);
      return EXIT_SUCCESS;  /* ゲーム終了 */
    }
    print_time(game_time);  /* ゲーム時間を表示する */

    usleep(20000);                   /* 20000マイクロ秒停止する(この間、CPUに負荷をかけない) */
  }
  write(sock, &FLAG, sizeof(FLAG));  /* 自分がゲームオーバになったことを相手に知らせる */

  clear();
  mvprintw(RESULT_STR_Y, RESULT_STR_X, "You lose!");
  refresh();
  sleep(2);
  endwin();  /* curses終了 */

  puts("\nYou lose!");
  sleep(1);
  return EXIT_SUCCESS;
}
Пример #4
0
word Shall_We_Continue(word timeout, char *do_what)
{
  word pause, ret;
  int ch;

  long tmr;

  ret=TRUE;

  Putc('\n');
  
  Printf(pause_msg, pause=timeout, do_what);
    
  while (pause-- > 0)
  {
    Printf(pause_time, pause);
    
    tmr=timerset(100);

    vbuf_flush();

    while (!timeup(tmr) && !Mdm_keyp())
      Giveaway_Slice();

    if (Mdm_keyp())
    {
      ch=Mdm_getcw();
      
      if (ch=='\x0d')       /* C/R */
        break;
      else if (ch=='\x1b')  /* ESC */
      {
/*        Puts(xferaborted);*/
        ret=FALSE;
        break;
      }
    }
  }

  Puts("\r" CLEOL);
  WhiteN();
  return ret;
}
Пример #5
0
static void near Clear_MNP_Garbage(void)
{
  long done=timerset(500);
  int state=0;
  int ch;

  /* Wait for five seconds, or until we get two <cr>s or two <esc>s */
  
  while (!timeup(done))
  {
    if ((ch=mdm_getc())==-1)
      Giveaway_Slice();
    else switch (state)
    {
      case 2:
        if (ch=='\r')
          return;
        else state=0;
        break;

      case 1:
        if (ch=='\x1b')
          return;
        else state=0; 
        break;

      case 0:
      default:
        if (ch=='\x1b')
          state=1;
        else if (ch=='\r')
          state=2;
        else state=0;
        break;
    }
  }
}
Пример #6
0
/*!
 * @brief 特別な値を受信したかどうかをチェックし、処理を行う
 * @param [in] pnum 受信した値の1バイト目
 */
static uchar read_protocol(uchar pnum) {
  switch (pnum) {
    case INTERRUPT:
      clear();
      mvprintw(RESULT_STR_Y, RESULT_STR_X, "Interrupted!");
      refresh();
      sleep(2);
      endwin();
      puts("対戦相手が強制終了しました");
      return TRUE;
    case GAMEOVER:
      clear();
      mvprintw(RESULT_STR_Y, RESULT_STR_X, "You win!");
      refresh();
      sleep(2);
      endwin();
      puts("\nYou win!");
      return TRUE;
    case TIMEUP:
      timeup(sig_sock);
      return TRUE;
  }
  return FALSE;
}
Пример #7
0
static int near WFC_IdleInternal(void)
{
  static time_t last_ct=-1L;
  union stamp_combo now;
  time_t ct;

  if (loc_kbhit())
  {
    switch (loc_getch())
    {
      case K_ONEMORE:
        switch (loc_getch())
        {
          case K_ALTX:
            kexit=TRUE;
            return 1;

          case K_ALTJ:
#ifdef TTYVIDEO
            if (displaymode==VIDEO_IBM)
#endif
            {
              if (dspwin)
              {
                WinClose(dspwin);
                dspwin=NULL;
              }

              VidCls(CGRAY | _BLACK);
            }
            
            Shell_To_Dos();
            break;

          case K_ALTI:
            WFC_Init_Modem();
            Update_Status(wfc_waiting);
            break;

          case K_ALTB:
            break;

          case K_ALTK:
            local=TRUE;
            baud=0L;
            return 1;
        }
        break;

      default:
        logit(log_wfc_keybjunk);
    }
  }

  ct=time(NULL);
  
  Get_Dos_Date(&now);

  if (now.dos_st.date != today.dos_st.date)
  {
    today=now;
    bstats.today_callers=0;

    Update_Callers();

    Read_Event_File(event_num);
    Get_Next_Event();
  }
  
  if (ct >= next_event_time)
  {
    if (!next_event.erl)
      Get_Next_Event();
    else
    {
      next_event.flags |= EFLAG_DONE;
      Write_One_Event(&next_event);

      do_next_event=TRUE;
      return 1;
    }
  }

  if (last_ct != ct)
  {
    Update_Event_Time();
    DrawMaxHeader();

    if (init_tmr==-1)
      init_tmr=timerset(INIT_TIME);
  }
  

  /* If it's time to reinitialize the modem, do so now. */
#if (COMMAPI_VER > 1)  
  if(ComIsAModem(hcModem))
  {
    if (timeup(init_tmr))
    {
	WFC_Init_Modem();
        Update_Status(wfc_waiting);
	init_tmr=timerset(INIT_TIME);
    }
  
    Check_For_Message(NULL, NULL);
  }
#endif
  
  Giveaway_Slice();
#if (COMMAPI_VER > 1)
  if(ComIsAModem(hcModem))
      sleep(1);
#endif
  
  return 0;
}
Пример #8
0
static char * near Get_Modem_Response(void)
{
  #define RESP_TIMEOUT  500
  #define MAX_RESP_LEN  60

  static char resp[MAX_RESP_LEN];
  char *rsptr;
  long tm1;

  mdm_dtr(DTR_UP);

  for (*resp='\0';*resp=='\0';)
  {
    tm1=timerset(RESP_TIMEOUT);

    for (rsptr=resp; !timeup(tm1) && rsptr < resp+MAX_RESP_LEN;)
    {
      #ifndef __MSDOS__
      if (!loc_kbhit())
          if(ComIsAModem(hcModem))
            ComRxWait(hcModem, 1000L);  /* block for 1 second or until char avail*/
      #endif

      if (! mdm_avail())
      {
        /* As long as the string is empty, keep resetting the five-second   *
         * timer.                                                           */
           
        if (rsptr==resp)
          tm1=timerset(RESP_TIMEOUT);
        
        if (WFC_IdleInternal())
          return NULL;
      }
      else
      {
        *rsptr=(char)mdm_ggetcw();

        if (*rsptr=='\r' || *rsptr=='\n')
          break;

        rsptr++;
      }
    }


    /* Cap string */

    *rsptr='\0';

    /* Suppress any 'OK' messages */

/*    if (eqstri(resp,"ok"))
      *resp='\0';*/

    /* Reset the modem initialization timer so that we don't
     * try to reinit in the middle of a ring!
     */

    init_tmr=timerset(INIT_TIME);

    /* If we got a response... */

    if (*resp)
    {
#ifdef TTYVIDEO
      if (displaymode==VIDEO_IBM)
      {
#endif
        WinPutc(win_modem,'\r');
        WinPutc(win_modem,'\n');
        WinPutc(win_modem,' ');
        WinPuts(win_modem,resp);
        WinSync(win_modem,FALSE);
#ifdef TTYVIDEO
      }
      else logit("#%s", cfancy_str(resp));
#endif
    }
  }

  return resp;
}
Пример #9
0
//TIMEUP
//7   = IRQ acknowledge
//6-0 = MDR
uint8 CPU::mmio_r4211() {
  uint8 r = (regs.mdr & 0x7f);
  r |= (uint8)(timeup()) << 7;
  return r;
}
Пример #10
0
//TIMEUP
//7   = IRQ acknowledge
//6-0 = MDR
uint8 CPU::mmio_r4211() {
  uint8 r = (regs.mdr & 0x7f);
  r |= (uint8)(Memory::debugger_access() ? status.irq_line : timeup()) << 7;
  return r;
}