亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? yahtzee.c

?? 該程序是C語(yǔ)言編寫(xiě)的
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
int count;
{
  int i;

  if (count != 0) {
    attron(A_REVERSE);
  }

  for (i=0; i<3; i++) {			/* Once for each row on the die */
    move(DIEY+i, 4+(7*number));
    switch (i*8 + count) {
      case TOP+0:	/* count is 0 (empty) for re-rolled */
      case MID+0:
      case BOT+0:
      case TOP+1:
      case BOT+1:
      case MID+2:
      case MID+4:
        addstr("     ");
        break;
      case TOP+2:
      case TOP+3:
        addstr("*    ");
        break;
      case MID+1:
      case MID+3:
      case MID+5:
        addstr("  *  ");
        break;
      case BOT+2:
      case BOT+3:
        addstr("    *");
        break;
      case TOP+4:
      case BOT+4:
      case TOP+5:
      case BOT+5:
      case TOP+6:
      case MID+6:
      case BOT+6:
        addstr("*   *");
        break;
    }
  }
  Dice[number] = count;

  if (count != 0) {
    attroff(A_REVERSE);
  }
}

/*
 *  Routine:		Go
 *
 *  Description:	Command interpreter. Accepts commands either
 *			from player or auto-player and performs them.
 *
 *  Note:		Auto-player does some internal command handling
 *
 */

int Go(rolls, player)
int rolls, player;
{
  int  ch;		/* command */
  int  i;
  int  save[5];		/* copy of latest roll  */
  int  reroll;		/* true if user has selected dice to reroll */

  Pot(player);
  for (i=0; i<5; i++) {
    Dice[i] = 0;
  }
  Roll();
  Who[player].Select = 12;

  if (!Cycle(player, 1)) return 0;

Top:
  for (i=0; i<5; i++) save[i] = Dice[i];

  Show(player);
  reroll = FALSE;

  for (;;) {
    move(GOY, GOX);
    printw("%s's move: %d rolls left. ", Who[player].Name, rolls);
    clrtoeol();
esc:
    /*  n.  Get and execute command:  */

    refresh();
    if (Who[player].Name[0] == '=') {
      ch = Auto(player, rolls);
    } else {
      ch = toupper(getch());
    }

    switch (ch) {
      case 033:
        goto esc;

      case ' ':			/* Go 'down' */
        Cycle(player, 1);
        Show(player);
        continue;

      case '1':			/* select die to be rerolled */
      case '2':
      case '3':
      case '4':
      case '5':
        if (rolls == 0) {	/* sorry - no rolls left */
          beep();
        } else {
          Die(ch - '1', 0);
	  reroll = TRUE;
        }
        continue;

      case 0x08:		/* Backspace */
      case 0x7F:		/* Delete == undo selection */
        for (i=0; i<5; i++) Die(i, save[i]);
        continue;

      case ROLLC:		/* make new roll - from Auto() */
          if (rolls>0) { Roll(); rolls--; }
	  else beep();
          goto Top;

      case '\r':
      case '\n':
      case PASSC:
	if (reroll) {	/* Make new roll */
          if (rolls>0) { Roll(); rolls--; }
	  else beep();
          goto Top;
	} else {	/* Accept latest roll & selection */
          Play(player);
          Who[player].Select = NONE;
          Show(player);
          return ch;
        }

      default:		/* unknown input */
        beep();
        continue;
    }
  }
}


/*
 *  Routine:		iplayer
 *
 *  Description:	Initialize a player
 *
 */

void iplayer(name, pl)
char          *name;
struct Player *pl;
{
  char i, *fake;

  fake = "==0==";
  if (!name[1] && *name == '=') {
    name = fake; name[3]++;
  }
  for (i=0; i<13; i++) {
    pl->Scores[i] = NONE;
  }
  pl->Select = NONE;

  strcpy(pl->Name, name);  
}

/*
 *  Routine:		Kind
 *
 *  Description:	Gives number of dice of count die
 *
 */

int Kind(die)		
int die;
{
  int count, i;

  count = 0;
  for (i=0; i<5; i++) {
    if (die == Dice[i]) {
      count++;
    }
  }

  return count;
}


/*
 *  Routine:		main
 *
 *  Description:	...
 *
 */

int main(argc, argv)
int   argc;
char *argv[];
{
  int arg;
  int i;
  char j,*carg;
  int n;

  /*  0.  Initialize:  */

  for (i=0; i<PLAYERS; i++) Who[i].Games = 0;

  for (i=0; i<10; i++) AutoPar[i] = 0;	
  DTime = 2;		

  initscr();
  cbreak();			/* return keypresses immediately */
  nodelay(stdscr, FALSE);	/* read blocks */
  
  rand_seed = time((time_t *)0);

  for (arg=1; (arg<argc) && (*(carg = argv[arg]) == '-'); arg++) {
    switch (*++carg) {
      case 'R':
	rand_seed = atoi(++carg);
        continue;
      case 'H':
        i = (*++carg)-'A';
	AutoPar[i] = atoi(++carg);
        continue;
      case 'D':
        DTime = atoi(++carg)|1;
        continue;
      default:
        continue;
    }
  }

  srand(rand_seed);

Again:
  nplayers = 0;
  for (i=arg; i<argc; i++) {
    iplayer(argv[i], &Who[nplayers++]);
  }
  if (nplayers == 0) {
    iplayer("You", &Who[nplayers++]);
  }
  n = (80-SCOREX)/nplayers;
  for (i=SCOREX+(n/2), j=0; j<nplayers; j++, i += n) Who[j].Col = i;
  Board();
  for (j=0; j<nplayers; j++) Center(Who[j].Name, Who[j].Col, 0, n-1);
  for (i=0; i<nplayers; i++) Show(i);

  for (;;) {
    for (i=0; i<nplayers; i++) {
      if (!Go(2, i)) {
        for (i=n=0; i<nplayers; i++)
          if (Who[i].Total > n)
            n = Who[i].Total;
        for (i=0; i<nplayers; i++)
          if (Who[i].Total >= n) {
            move(GAMEY, Who[i].Col);
            standout();	  
            printw("%3d", ++(Who[i].Games));
          }
        move(GOY+1, GOX);
        for (i=0; i<nplayers; i++)
	  if (Who[i].Total >= n)
            printw("%s ", Who[i].Name);
        beep();
        addstr("WINS!"); 
        standend();
        addstr(" Play again?"); clrtoeol();
        if (toupper(getch()) == 'Y') goto Again;
        endwin();
        exit(0);
      }
    }
  }
}

/*
 *  Routine:		Play
 *
 *  Description:	Make a player's move.
 *
 */

void Play(pl)		
int pl;
{
  Pot(pl);
  Who[pl].Scores[Who[pl].Select] = Potent[Who[pl].Select];
}

/*
 *  Routine:		Pot
 *
 *  Description:	Compute potential scores for player.
 *
 *  Notes:		A. Thulin:
 *			Odd that the parameter isn't used ...
 */

void Pot(pl)		
int pl;
{
  int i,j,k;

  for (i=0; i<13; i++) Potent[i] = 0;
  for (i=0; i<5; i++) if (((j = Dice[i])>0) && (j<7)) Potent[j-1] += j;
  for (PotMax=PotSum=i=PotKind=0; i<5; i++)
   { PotKind |= (1<<(j=Kind(k=Dice[i]))); PotSum += Dice[i];
     if (j>PotMax) { PotMax=j; PotCnt=k; }}
  Potent[12] = PotSum;
  if ((PotKind & 0xC) == 0xC) Potent[8] = 25;
  if (PotKind & 0x38) Potent[6] = PotSum;
  if (PotKind & 0x30) Potent[7] = PotSum;
  if (PotKind & 0x20) Potent[11] = 50;
  for (i=PotStr=0; i<5; i++) if ((j = Straight(Dice[i])) > PotStr)
  	PotStr=j;
  if (PotStr >= 4) Potent[9] = 30;
  if (PotStr == 5) Potent[10] = 40;
}

/*
 *  Routine:		Roll
 *
 *  Description:	Roll the dice ...
 *
 */

void Roll()
{
  int i;
  for (i=0; i<5; i++) {
    if (Dice[i] == 0) {
      Die(i, 1+rand()%6);
    }
  }
}

/*
 *  Routine:		Show
 *
 *  Description:	Show the scores of a player
 *
 */

void Show(pl)
char pl;
{
  int            f;
  struct Player *p;
  int cc;
  char tot, j;

  Pot(pl);
  p = &Who[pl];
  ShowX = p->Col-1;	ShowY = 1;	ShowTot = 0;
  ShowSc = p->Scores;	cc = 0;		f = p->Select;
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  tot = ShowTot;
  Show1(255,44);
  ShowTot = j = tot>=63? 35:0;
  Show1(255,44);
  tot = ShowTot = tot+j;
  Show1(255,44);
  ShowTot = tot;
  ShowY++;
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  Show1(cc++,f--);
  p->Total = ShowTot;
  Show1(255,44);
}

/*
 *  Routine:		Show1
 *
 *  Description:	...
 *
 */

void Show1(n, flag)
int n, flag;
{
  int val;

  move(ShowY++, ShowX);

  if (n == 255) {
    val = ShowTot;
  } else {
    val = ShowSc[n];
  }

  if (!flag) { 
    standout();
    val = Potent[n];
  } else if (flag == 44) { 
    standout();
  }
  if (val == NONE) { 
    addstr("  ? ");
  } else { 
    printw(" %2d", val);
    ShowTot += val;
  }
  if (!flag || (flag == 44)) {
    standend();
  }
}

/*
 *  Routine:		Straight
 *
 *  Description:	Gives longest straight starting at die
 *
 */

int Straight(die)	
int die;
{
  int i, j;

  for (i=1; i<6; i++) {
    die++;
    for (j=0; j<5; j++) {
      if (Dice[j] == die) goto hit;
    }
    break;
hit:
    continue;
  }
  return i;
}




?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆国产91在线播放| av爱爱亚洲一区| 亚洲欧洲综合另类在线| 91精品国产综合久久香蕉麻豆| 国产一区二区91| 亚洲超丰满肉感bbw| 中文字幕久久午夜不卡| 日韩欧美中文字幕公布| 91丝袜高跟美女视频| 久久99精品久久久久| 亚洲va中文字幕| 成人欧美一区二区三区在线播放| 精品噜噜噜噜久久久久久久久试看 | 精品久久久久一区| 欧美专区日韩专区| 成人黄色av电影| 国产精品99久久久久| 另类欧美日韩国产在线| 亚洲成a人v欧美综合天堂| 中文字幕佐山爱一区二区免费| 久久综合资源网| 欧洲精品在线观看| 色综合久久中文综合久久牛| 国产精品亚洲专一区二区三区| 免费在线观看一区二区三区| 日韩制服丝袜先锋影音| 亚洲高清不卡在线观看| 亚洲精品国产a| 日韩一区日韩二区| 中文字幕在线一区| 中文字幕欧美国产| 中文字幕av一区二区三区免费看 | 色噜噜狠狠成人网p站| 成人福利电影精品一区二区在线观看| 国产乱子伦一区二区三区国色天香| 日韩av成人高清| 日本不卡123| 热久久国产精品| 蜜桃在线一区二区三区| 蜜桃精品在线观看| 久久99国产精品久久99 | 亚洲成国产人片在线观看| 亚洲视频一二区| 成人欧美一区二区三区黑人麻豆| 中文字幕欧美区| 日韩美女视频19| 亚洲男人的天堂在线aⅴ视频| 亚洲三级视频在线观看| 中文字幕一区在线| 亚洲欧美偷拍三级| 亚洲成人动漫在线免费观看| 天涯成人国产亚洲精品一区av| 亚洲午夜电影网| 日韩国产精品91| 蜜桃视频在线一区| 国产高清一区日本| 成人动漫一区二区三区| 91蜜桃网址入口| 欧美另类z0zxhd电影| 国产日韩av一区| 国产精品网友自拍| 一区二区在线观看不卡| 亚洲综合久久久久| 裸体健美xxxx欧美裸体表演| 国产乱一区二区| 色94色欧美sute亚洲线路二| 欧美酷刑日本凌虐凌虐| 久久综合色鬼综合色| 国产精品乱码久久久久久| 一区二区三区视频在线看| 日韩精品91亚洲二区在线观看| 韩国中文字幕2020精品| 成人福利视频在线看| 欧美三电影在线| 2欧美一区二区三区在线观看视频| 国产调教视频一区| 综合在线观看色| 免费xxxx性欧美18vr| 成人av网站免费| 欧美日韩国产综合一区二区| 日韩女同互慰一区二区| 国产精品久久久久久久久免费丝袜 | 国产999精品久久久久久| 91亚洲精品乱码久久久久久蜜桃 | 久久久久久免费网| 亚洲区小说区图片区qvod| 日本一道高清亚洲日美韩| 成人丝袜18视频在线观看| 欧美另类z0zxhd电影| 中文字幕精品—区二区四季| 香蕉影视欧美成人| 大美女一区二区三区| 欧美精品一卡二卡| 中文字幕永久在线不卡| 狠狠色丁香久久婷婷综合_中 | 国产亚洲欧美激情| 亚洲一卡二卡三卡四卡 | 色婷婷精品大在线视频| 欧美成人女星排行榜| 亚洲美女一区二区三区| 精品一区二区av| 欧美午夜精品久久久久久孕妇 | 日韩精品国产精品| 成人av网址在线| 26uuu国产日韩综合| 天天做天天摸天天爽国产一区 | 天天综合色天天综合色h| 成人免费精品视频| 精品国精品国产| 午夜a成v人精品| 91在线视频在线| 久久久久久一二三区| 日本中文字幕一区二区有限公司| 97久久超碰国产精品电影| 精品久久国产老人久久综合| 亚洲gay无套男同| 在线看一区二区| 国产精品久久久一本精品 | 欧美日韩一区二区在线观看视频| 欧美经典一区二区三区| 九九精品视频在线看| 制服丝袜国产精品| 亚洲成a人片综合在线| 欧美在线影院一区二区| 国产精品美女久久久久久久久久久 | 99久久精品免费看| 国产欧美一区二区精品婷婷| 韩国精品免费视频| 日韩午夜av电影| 天天亚洲美女在线视频| 欧美久久一区二区| 亚洲成人在线网站| 欧美日本国产视频| 天堂va蜜桃一区二区三区漫画版| 欧美最猛性xxxxx直播| 亚洲乱码一区二区三区在线观看| caoporen国产精品视频| 中文字幕一区三区| 一本大道久久a久久精二百| **网站欧美大片在线观看| 色婷婷亚洲婷婷| 亚洲福利电影网| 欧美一区二区三区播放老司机| 丝袜亚洲精品中文字幕一区| 欧美一区二区三区男人的天堂| 奇米一区二区三区| 欧美一级在线视频| 九色综合狠狠综合久久| 亚洲精品在线电影| 国产成人精品网址| 亚洲图片激情小说| 在线观看国产91| 婷婷综合在线观看| 精品国内片67194| 成人理论电影网| 亚洲精品视频一区| 欧美日韩精品一区二区| 日韩激情中文字幕| 精品国产成人系列| av在线一区二区三区| 一区二区三区精品在线| 欧美精品自拍偷拍动漫精品| 国产最新精品精品你懂的| 国产精品色在线观看| 欧美三级电影网| 精品在线播放免费| 国产精品伦理在线| 欧美色爱综合网| 极品销魂美女一区二区三区| 国产精品无码永久免费888| 欧美性一二三区| 久久97超碰色| 亚洲精品成人悠悠色影视| 欧美日韩日本视频| 欧美日韩成人在线| 国产一区欧美一区| 亚洲美女视频在线| 日韩欧美久久一区| av成人动漫在线观看| 日本vs亚洲vs韩国一区三区 | 欧美一级片在线| 成人午夜电影小说| 日韩中文字幕av电影| 国产精品每日更新| 日韩欧美精品三级| 99在线精品视频| 蜜桃久久av一区| 玉米视频成人免费看| 久久久久亚洲蜜桃| 欧美精品一卡二卡| 91片在线免费观看| 久草在线在线精品观看| 亚洲一区二区三区四区在线观看| 精品国产1区2区3区| 在线免费精品视频| 丁香桃色午夜亚洲一区二区三区| 亚洲成人av在线电影| 国产精品天天摸av网| 日韩丝袜情趣美女图片| 在线看一区二区|