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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? yahtzee.c

?? 該程序是C語言編寫的
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*-							-*- Fundamental -*-
 *
 *  Facility:			yahtzee
 *
 *  File:			yahtzee.c
 *
 *  Associated files:		yahtzee.hlp 	-- man page
 *
 *  Description:		Dice game yahtzee
 *
 *  Portability:		Conforms to X/Open Portability Guide, ed. 3,
 *				I hope ...
 *
 *  Author:			Steve Ward
 *
 *  Editor:			Anders Thulin
 *				Rydsvagen 288
 *				S-582 50 Linkoping
 *				SWEDEN
 *
 *
 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 *
 *  Edit history :
 *
 *  Vers  Ed   Date	   By		     Comments
 *  ----  ---  ----------  ----------------  -------------------------------
 *   1.0    0  19xx-xx-xx  Steve Ward
 *   1.1    1  1988-10-25  Anders Thulin     Original for H89 computer -
 *					     changed to curses. Cleaned
 *					     up user interface a bit.
 *
 */

/* - - Configuration options: - - - - - - - - - - - - - - - - - - - - - - */

/*
 *  Compile-time environment:
 *
 *	ANSI		ANSI C
 *	BSD		BSD Unix, SunOS 3.5
 *	SV2		AT&T UNIX System V.2
 *	XPG3		X/Open Portability Guide, ed. 3
 *	ZTC205		Zortech C 2.05
 *
 *  If you have an ANSI C conformant compiler, use ANSI. Otherwise choose
 *  the environment that best matches yours.
 *
 */

#define	ANSI		0
#define	BSD		0
#define	SV2		0
#define	XPG3		0
#define ZTC205		1

/* - - end of configuration - - - - - - - - - - - - - - - - - - - - - - - - */

/* --- Known problems: --------------------------------------------------

curses

	Some older implementation of curses dows not have any of the
	functions beep(), nodelay() and delay_output().

	It may be possible to emulate beep() through calls similar to
	fputc(0x07, stderr).

	It will, in general, not be possible to emulate nodelay(), as
	it changes the behaviour of getch() from blocking to non-blocking(),
	that is, if no character is immediately available, return ERR.

	delay_output() just waits for a number of seconds. It is only
	used in self-play mode, so it can safely be ignored.

------------------------------------------------------------------------*/

#if ANSI
# include <ctype.h>
# include <curses.h>
# include <stdlib.h>
# include <string.h>
# include <time.h>
#endif

#if BSD
# include <ctype.h>
# include <curses.h>
# include <string.h>
typedef long time_t;
#endif

#if SV2
# include <ctype.h>
# include <curses.h>
# include <string.h>
typedef long time_t;
#endif

#if XPG3
# include <ctype.h>
# include <curses.h>
# include <stdlib.h>
# include <string.h>
# include <time.h>
#endif

#if ZTC205
# include <ctype.h>
# include <curses.h>
# include <string.h>
# include <time.h>
#endif


/* Command characters used only by auto player:  */

#define	PASSC	-1	/* Accept roll */
#define	ROLLC	-2	

/* Coordinates for screen output - assumes 24 x 80 screen */

#define	GOX	45		/* Coordinates for prompt.		*/
#define	GOY	22
#define	GAMEY	20

#define	SCOREX	30		/* leftmost column for scores		*/
#define	DIEY	22

#define	PLAYERS	10		/* Max number of players		*/

#define	NONE	(-1)		/* illegal value.		*/

#define	TOP	0
#define	MID	8
#define	BOT	16

/*  Various variables:	*/

int	 AutoPar[10];	/* heuristic parameters -HA#, -HB#, etc.	*/
int      Dice[5];	/* current roll					*/
int	 DTime;		/* delay time between moves (in seconds)	*/
int	 nplayers;	/* number of players				*/
unsigned rand_seed;	/* random number seed				*/
int 	 ShowTot;

char Potent[13];		/* Potential score...			*/
char PotKind, PotSum, PotStr;	/* Filled by Pot			*/
char PotMax, PotCnt;
int  *ShowSc;
char ShowX, ShowY;

struct Player {
   int  Scores[13];		/* Scores, or 127 iff none yet.		*/
   int  Select;			/* Currently selected category.		*/
   int  Col;			/* Column number, for scores.		*/
   char Name[40];		/* Name of player.			*/
   int  Total;			/* total score.				*/
   int  Games;
 } Who[PLAYERS];

/*  Local routines:  */

#if __STDC__
  int  Auto(int pl, int rolls);
  void Bd(int f);
  void Board(void);
  void Center(char *text, int centx, int y, int xsize);
  int  Cycle(int pl, int delta);
  void Delay(int sec);
  void Die(int number, int count);
  int  Go(int rolls, int player);
  void iplayer(char *name, struct Player *pl);
  int  Kind(int die);
  void Play(int pl);
  void Pot(int pl);
  void Roll(void);
  void Show(int pl);
  void Show1(int n, int flag);
  int  Straight(int die);
#else
  int  Auto();
  void Bd();
  void Board();
  void Center();
  int  Cycle();
  void Delay();
  void Die();
  int  Go();
  void iplayer();
  int  Kind();
  void Play();
  void Pot();
  void Roll();
  void Show();
  void Show1();
  int  Straight();
#endif

/*
 *  Routine:		Auto
 *
 *  Description:	Make move for a computer player.  
 *
 *			Note that the routine handles selection of dice
 *			to reroll internally, without bothering to 
 *			go through 'Go()'.
 *
 *			Strategy is somewhat unclear.
 *
 */

int Auto(pl, rolls)
int  pl;
char rolls;
{
  int  choice;
  int i;
  int *sc;
  char gofor, j;
  int value[13], target[6], best, n;

  sc = Who[pl].Scores;
  Pot(pl);
  mvaddstr(GOY+1, GOX, "Hmmm ... lemme think."); clrtoeol();
  Delay(DTime);

  for (i=0; i<13; i++) {
    if (sc[i] != NONE) value[i] = i-99;
    else if (i<6) value[i] = 2*(Potent[i]-3*(i+1));/* face counts */
    else if (i==6) value[i] = Potent[i]-20;	/* 3 of a kind */
    else if (i==7) value[i] = Potent[i]-15;	/* 4 of a kind */
    else if (i==9) value[i] = Potent[i]-12;	/* 4 straight  */
    else if (i==10) value[i] = Potent[i]-10;	/* 5 straight  */
    else if (i==12) value[i] = Potent[i]-21-AutoPar[5];	/* CHANCE */
    else value[i] = Potent[i]-10;
  }

  for (i=0; i<6; i++) {
    if (sc[12] == NONE) target[i] = i+i; else target[i] = 0;
    if (sc[i] == NONE) target[i] += i<<2; else target[i] -= 15;
    if ((sc[8] == NONE) && (Kind(i+1) == 3)) target[i] += 6;
    if (sc[11] == NONE) target[i] += 1<<(Kind(i+1));
    target[i] += Kind(i+1)<<3;
  }

  best = -99; gofor = PotCnt; choice = Who[pl].Select;

  for (i=0; i<13; i++) {
    if (value[i] > best) {
      best = value[i]; choice = i;
    }
  }
  Who[pl].Select = choice;
  Show(pl);

  if (rolls &&		/* Convert a straight??		*/
      (Potent[9] > 0) &&
      (Potent[10] == 0) &&
      (sc[10] == NONE)) {
    for (i=0; i<5; i++) {	/* Find the useless die.	*/
      j = Dice[i];
      Dice[i] = 0;
      Pot(pl);
      Dice[i] = j;
      if (Potent[9] > 0) {
        Die(i, 0);
        goto rollit;
      }
    }
  }

  Pot(pl);
  if ((choice > 7) && (choice < 12)) goto hit; /* End the inning.	*/

  if (rolls) {
    for (i=0; i<6; i++) {
      if ((n=(target[i]-27-AutoPar[0])) > best)	{
        gofor = i;
        choice = 255;
        best=n;
      }
    }
  }

  if ((choice == 255) || (choice < 8))
    goto maxim;		/* See if we can help.	*/


  if (!rolls) goto hit;		/* Least of evils...	*/
  for (i=0; i<5; i++) Die(i,0);	/* Re-roll entire hand.	*/
  goto rollit;

maxim:
  if (!rolls) goto hit;		/* Maximize number of chosen dice. */
  for (i=0; i<5; i++)
    if (Dice[i] && (Dice[i] != (gofor+1)))
      Die(i, 0);

rollit:
  move(GOY+1, GOX);
  printw("Baby needs shoes ... %d/%d", choice, best);
  clrtoeol();
  Delay(DTime/2);
  return ROLLC;

hit:
  move(GOY+1, GOX);
  printw("I've decided ... %d/%d", choice, best); 
  clrtoeol();
  Delay(DTime);
  return PASSC;
}

/*
 *  Routine:		Bd
 *
 *  Description:	Display empty board line.  Type of line depends
 *			on argument.
 *
 */

void Bd(f)
int f;
{
  char *cc;
  int   i;

  cc = " . ";
  if (f == 1) {
    cc = "===";
  } else if (!f) { 
#if 0
    puts("\033q");	/* normal mode */
#endif
  }
  for (i=((COLS-SCOREX)/3); i--;) {
    addstr(cc);
  }
#if 0
  puts("\033p\033G");	/* inverse mode, no graphics */
#endif
}

/*
 *  Routine:		Board
 *
 *  Description:	Print empty score-sheet
 *
 */

void Board()
{
  int i;

  clear();
  addstr("   YAHTZEE 1.1              ");
  for (i=48; i--;) {
    addch('=');
  }
  move( 1, 0); addstr("        ACES        ADD 1's "); Bd(0);
  move( 2, 0); addstr("        TWOS        ADD 2's "); Bd(0);
  move( 3, 0); addstr("        THREES      ADD 3's "); Bd(0);
  move( 4, 0); addstr("        FOURS       ADD 4's "); Bd(0);
  move( 5, 0); addstr("        FIVES       ADD 5's "); Bd(0);
  move( 6, 0); addstr("        SIXES       ADD 6's "); Bd(0);
  move( 7, 0); addstr("   Subtotal  .  .  .  .  .  "); Bd(2);
  move( 8, 0); addstr("   Bonus iff >= 63       35 "); Bd(2);
  move( 9, 0); addstr("TOTAL ABOVE   .  .  .  .  . "); Bd(2);

  move(11, 0); addstr("        3 of a kind     SUM "); Bd(0);
  move(12, 0); addstr("        4 of a kind     SUM "); Bd(0);
  move(13, 0); addstr("        Full House       25 "); Bd(0);
  move(14, 0); addstr("        4 Straight       30 "); Bd(0);
  move(15, 0); addstr("        5 Straight       40 "); Bd(0);
  move(16, 0); addstr("        YAHTZEE          50 "); Bd(0);
  move(17, 0); addstr("        Chance          SUM "); Bd(0);
  move(18, 0); addstr("TOTAL SCORE   .  .  .  .  . "); Bd(2);

  move(GAMEY, 0); addstr("GAMES   .  .  .  .  .  .  . "); Bd(1);
}

/*
 *  Routine:		Center
 *
 *  Description:	Write a string centered about the x coordinate.
 *
 */

void Center(text, centx, y, xsize)
char *text;
int   centx, y, xsize;
{
  int l;

  l = strlen(text);
  if (l > xsize) l = xsize;

  move(y, centx - l/2);
  addch(' ');
  while (*text && l--) addch(*text++);
  addch(' ');
}

/*
 *  Routine:		Cycle
 *
 *  Description:	Alter the screen selection of a player. The
 *			delta parameter is 1 for moving downwards, or
 *			-1 for upwards.
 *
 */

int Cycle(pl, delta)	
int pl;
int delta;
{
  int tries;	/* Remaining nr of tries to find empty selection */
  int s;	/* Player's current/new selection */

  s  = Who[pl].Select;
  tries = 14;
  do {
    s += delta;
    if (s < 0) {
      s = 12;
    } else if (s > 12) {
      s = 0;
    }
  } while (--tries > 0 && (Who[pl].Scores[s] != NONE));
  Who[pl].Select = s;

  return tries;	/* 0 if no more selections available */
}

/*
 *  Routine:		Delay
 *
 *  Description:	Wait for a number of seconds
 *
 */

void Delay(s)
int s;
{
#ifndef __POWERC
  delay_output(1000*s);
#endif
}

/*
 *  Routine:		Die
 *
 *  Description:	Print a die face with COUNT dots in the NUMBER
 *			place.
 *
 */

void Die(number, count)
int number;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久妇女6080| 国产高清无密码一区二区三区| 国产真实精品久久二三区| 99精品欧美一区| www日韩大片| 亚洲线精品一区二区三区八戒| 狠狠色狠狠色综合系列| 欧美日韩不卡视频| 亚洲精品国产精华液| 国产传媒日韩欧美成人| 精品国产免费久久| 视频一区欧美日韩| 欧美私人免费视频| 亚洲精品中文在线观看| 91一区一区三区| 国产精品毛片无遮挡高清| 国产高清不卡一区二区| 欧美一激情一区二区三区| 亚洲地区一二三色| 欧美在线free| 一区二区三区丝袜| 色综合欧美在线视频区| 一色屋精品亚洲香蕉网站| 成人天堂资源www在线| 久久久亚洲高清| 国产精品亚洲视频| 久久精品夜夜夜夜久久| 国产乱子轮精品视频| 欧美xxxxx牲另类人与| 麻豆精品国产91久久久久久| 欧美喷水一区二区| 日本中文字幕不卡| 91精品国产全国免费观看| 五月天中文字幕一区二区| 欧美日韩国产高清一区| 亚洲电影激情视频网站| 欧美精选午夜久久久乱码6080| 亚洲成av人片| 91精品国产综合久久精品| 青青青伊人色综合久久| 精品国产一区二区在线观看| 精品写真视频在线观看| 精品国产免费视频| 大胆亚洲人体视频| 亚洲欧美另类综合偷拍| 欧美在线视频你懂得| 天天射综合影视| 日韩一区二区三区视频| 国产精品白丝av| 中文字幕五月欧美| 在线视频国内一区二区| 日韩精品三区四区| 久久综合五月天婷婷伊人| 国产98色在线|日韩| 国产精品久久久久久亚洲伦| 色综合天天天天做夜夜夜夜做| 亚洲一区二区中文在线| 欧美一区二区三区四区在线观看| 美女精品一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 91啦中文在线观看| 日韩电影在线免费观看| 久久久久久亚洲综合影院红桃| 99在线精品免费| 日日夜夜精品视频天天综合网| 日韩三级av在线播放| 成人免费观看视频| 亚洲已满18点击进入久久| 91麻豆精品国产91久久久久久| 国产精品一区专区| 亚洲欧美日韩国产中文在线| 欧美二区三区的天堂| 国产精品一级片| 亚洲一区二区欧美激情| 久久久久久久免费视频了| 欧美天天综合网| 国产99精品在线观看| 日韩在线播放一区二区| 亚洲欧美在线视频| 欧美成人一区二区三区片免费| 欧美不卡一区二区| 色综合久久中文综合久久牛| 久久91精品国产91久久小草| 一区二区三区欧美在线观看| 久久丝袜美腿综合| 欧美日韩第一区日日骚| av在线这里只有精品| 精品一区二区三区在线观看| 亚洲影院久久精品| 最新成人av在线| 久久婷婷一区二区三区| 欧美人伦禁忌dvd放荡欲情| 99国产精品久久久| 国产激情一区二区三区四区 | 一本色道a无线码一区v| 久久99久久久久| 亚洲一区二区三区四区五区中文| 国产日韩一级二级三级| 欧美一二三区在线观看| 欧美日韩久久久一区| 91日韩精品一区| 成人永久看片免费视频天堂| 国产尤物一区二区在线 | 一级特黄大欧美久久久| 国产女同互慰高潮91漫画| 日韩女优视频免费观看| 欧美一区二区三区的| 欧美午夜一区二区三区 | 欧美一级专区免费大片| 欧亚一区二区三区| 日本韩国欧美在线| 91免费视频网| 91啦中文在线观看| 99在线视频精品| 色琪琪一区二区三区亚洲区| 91蜜桃婷婷狠狠久久综合9色| 国产成人午夜视频| 国产suv一区二区三区88区| 国产乱码精品一区二区三| 国产在线看一区| 国产成人福利片| 国产成人av一区二区| 盗摄精品av一区二区三区| 国产91高潮流白浆在线麻豆| 国产成人鲁色资源国产91色综| 国产一区二区三区不卡在线观看| 国产经典欧美精品| 9l国产精品久久久久麻豆| 91天堂素人约啪| 欧美色爱综合网| 欧美一区二区三区四区在线观看| 日韩精品一区二区三区swag | 91福利视频久久久久| 欧美影院精品一区| 日韩一区二区三区四区五区六区| 精品国产亚洲一区二区三区在线观看| 26uuu亚洲综合色| 国产日产欧美一区二区三区| 中文字幕一区二区在线播放| 亚洲人成网站在线| 午夜精彩视频在线观看不卡| 色94色欧美sute亚洲13| 91成人免费在线视频| 日本久久精品电影| 欧美日韩综合色| 欧美sm极限捆绑bd| 欧美国产激情一区二区三区蜜月| 国产精品久久久久久久久免费樱桃| 亚洲区小说区图片区qvod| 亚洲国产欧美一区二区三区丁香婷| 久久精品久久久精品美女| 成人美女视频在线看| 欧美日韩aaaaa| 久久精品一二三| 亚洲成人资源网| 丁香激情综合国产| 欧美理论在线播放| 日本一区二区视频在线| 亚洲成人激情av| 成人激情黄色小说| 91精品麻豆日日躁夜夜躁| 国产精品丝袜在线| 美女在线视频一区| 91激情五月电影| 久久伊人中文字幕| 午夜电影久久久| 99久久婷婷国产综合精品电影 | 久久美女艺术照精彩视频福利播放| 国产精品丝袜一区| 久久精品99国产精品| 在线精品视频免费播放| 国产喷白浆一区二区三区| 午夜一区二区三区在线观看| youjizz久久| 欧美电视剧在线观看完整版| 亚洲一区二区精品久久av| www.欧美日韩| 国产清纯美女被跳蛋高潮一区二区久久w | 综合亚洲深深色噜噜狠狠网站| 久久精品99久久久| 91精品国产综合久久久久久漫画| 日韩一区中文字幕| 成人综合日日夜夜| 精品国产第一区二区三区观看体验| 亚洲国产成人高清精品| 色婷婷久久久久swag精品| 国产精品高清亚洲| 国产精品一区二区免费不卡 | 欧美日韩一级片网站| 综合av第一页| 国产成人aaa| 国产视频一区二区在线| 激情成人综合网| 欧美不卡123| 精久久久久久久久久久| 精品久久久久久久久久久久久久久 | 亚洲精品成人悠悠色影视| av在线不卡网| 亚洲欧美中日韩| 91麻豆精品在线观看|