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

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

?? bugs.c

?? 該程序是C語言編寫的
?? C
字號:
/*----------------------------------------------------*- Fundamental -*-

Facility:		bugs(6)

File:			bugs.c

Associated files:	- (none)

Description:		Bugs me. Bugs anyone.

Notes:			Needs curses.

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  1990-03-16  Anders Thulin     Changed H19/H89 screen handling to
				         curses. Still buggy, though :-)

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

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

System configuration options:
=============================

  ANSI		ANSI C conformant compiler
  BSD		BSD Unix
  SYSV		AT&T System V.x Unix

If you have an ANSI compiler, defined ANSI only.  Otherwise, define
the alternative that most closely matches your environment.


Program configuration:
======================

  NBUGS		Max. number of bugs permitted


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

#define	ANSI	 1
#define	BSD	 0
#define	SYSV	 0

#define	NBUGS	25

/* - - End of configurations - - - - - - - - - - - - - - - - - - - - - - - - */

#include <curses.h>
#include <stdio.h>

#if ANSI
# include <stdlib.h>
 extern int getopt(int argc, char **argv, char *optstring);
 extern int optind;
#endif

#if BSD
 extern int getopt();
 extern void exit();
 extern int optind;
# define EXIT_FAILURE   1
# define EXIT_SUCCESS	0
#endif

#if SYSV
 extern int getopt();
 extern void exit();
 extern int optind;
# define EXIT_FAILURE   1
# define EXIT_SUCCESS	0
#endif

#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif

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

Known problems:

curses

  The program relies on non-blocking calls to getch() so that it can
  quit as soon as the `user' presses a key.  Older implementations of
  curses don't have the function nodelay() which sets up for nonblocking
  calls to getch().

  It may be possible to remove the calls to getch() altogether.
  Instead, catch SIGINT (or whatever is used to indicate that user
  wants to quit) to make an orderly exit from curses.

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


/*
	"Bugs"
	written by Steve Ward for the H19/H89 display terminal
	BD says..."This one is WIERD!!!"
*/

#define BOT	0
#define LEFT	0
#define RADIUS2	21

int	Top,		/* Pagesize-1				*/
	Right;		/* Linelength-2				*/

struct bug {
  int X,Y;
  int Dir;	/* 0-down, 1-left, 2-up, 3-right.	*/
  int State;
} bugs[NBUGS];

char	Wflg, Cflg;
int	CurX, CurY;
int	CBugs;

int XMotion[20] = { 0, 1, 0, -1,  1, 1, -1, -1};
int YMotion[20] = {-1, 0, 1,  0, -1, 1,  1, -1};

/* Q & D fix for placech():  */

#define placech(ch, tx, ty) 		\
	do {				\
	  mvaddch((ty), (tx), (ch));	\
	  refresh();			\
	} while (0)

/*----------------------------------------------------------------------
  Local functions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

#if __STDC__ != 0
 static int  alive(struct bug *bb);
 static void mkbug(struct *bb, int xp, int yp, int direc);
 static void r(struct bug *bb, int dx, int dy, int ch);
 static void randbug(struct bug *bb);
 static void step(struct bug *bb);
 static void turn(struct bug *bb);
#else
 static int  alive();
 static void mkbug();
 static void r();
 static void randbug();
 static void step();
 static void turn();
#endif

static int alive(bb)
struct bug *bb;
{
  int px,py;
  px = bb->X; py = bb->Y;
  switch((bb->Dir) & 03) {
    case 0: return(py>=BOT-4);
    case 1: return(px<=Right+6);
    case 2: return(py<=Top+4);
    case 3: return(px>=LEFT-4); 
  }
  /*NOTREACHED*/
}

static void step(bb)
struct bug *bb;
{
  switch ((*bb).State) {
    case 0: r(bb,1,0,' '); r(bb,1,-1,'\\'); (*bb).State++; break;
    case 1:	r(bb,-1,0,' ');
			r(bb,-1,-1,'/');
			(*bb).State++;	break;
    case 2:	r(bb,1,1,' ');
			r(bb,1,0,'\\');
			(*bb).State++;	break;
    case 3:	r(bb,-1,1,' ');
			r(bb,-1,0,'/');
			(*bb).State++;	break;
    case 4:	r(bb,0,-1,'0');
			r(bb,0,0,'O');
			r(bb,1,-1,'/');
			r(bb,-1,-1,'\\');
			r(bb,1,0,'/');
			r(bb,-1,0,'\\');
			(*bb).State++;	break;
    case 5:	r(bb,1,2,' ');
			r(bb,1,1,'\\');
			(*bb).State++;	break;
    case 6:	r(bb,-1,2,' ');
			r(bb,-1,1,'/');
			(*bb).State++;	break;
    case 7:	r(bb,1,1,'/');
			r(bb,0,1,' ');
			r(bb,-1,1,'\\');
			switch (((*bb).Dir) & 03) {
			 case 0: (*bb).Y--; break;
			 case 2: (*bb).Y++; break;
			 case 1: (*bb).X++; break;
			 case 3: (*bb).X--; break; }
			(*bb).State = 0;	break;
/* Diagonal movement:						*/

    case 20:	r(bb,1,1,' ');
			r(bb,1,0,'-');
			(*bb).State++;	break;
    case 21:	r(bb,-1,-1,' ');
			r(bb,0,-1,'|');
			(*bb).State++;	break;
    case 22:	r(bb,0,1,' ');
			r(bb,1,1,'/');
			(*bb).State++;	break;
    case 23:	r(bb,-1,0,' ');
			r(bb,-1,-1,'/');
			(*bb).State++;	break;
    case 24:	r(bb,1,-1,'0');
			r(bb,0,0,'O');
			r(bb,1,1,' ');
			r(bb,0,1,'|');
			r(bb,-1,-1,' ');
			r(bb,-1,0,'-');
			r(bb,1,0,'|');
			r(bb,0,-1,'-');
			(*bb).State++;	break;
    case 25:	r(bb,-1,2,' ');
			r(bb,0,2,'/');
			(*bb).State++;	break;
    case 26:	r(bb,-2,1,' ');
			r(bb,-2,0,'/');
			(*bb).State++;	break;
    case 27:	r(bb,-1,1,' ');
			r(bb,0,2,' ');
			r(bb,-2,0,' ');
			r(bb,1,0,'|');
			r(bb,0,-1,'-');
			switch (((*bb).Dir)& 03) {
			 case 0: (*bb).X++; (*bb).Y--; break;
			 case 1: (*bb).X++; (*bb).Y++; break;
			 case 2: (*bb).X--; (*bb).Y++; break;
			 case 3: (*bb).X--; (*bb).Y--; break; }
			(*bb).State = 20;	break;

/* turn from diag to orthogonal (45 deg CCW)				*/

    case 40:	r(bb,-1,0,' ');
			r(bb,-2,0,'/');
			(*bb).State++; break;
    case 41:	r(bb,-1,0,'O');
			r(bb,-1,2,' ');
			r(bb,-1,1,'|');
			r(bb,-2,0,'\\');
			r(bb,-2,1,'\\');
			(*bb).State++; break;
    case 42:	r(bb,1,1,' ');
			r(bb,0,1,'\\');
			r(bb,-1,1,'\\');
			r(bb,-2,0,' ');
			r(bb,-2,-1,'/');
			r(bb,0,-1,'/');
			(*bb).Dir = (((*bb).Dir)+1) & 03;
			(*bb).State = 0; break;

/* Turn from ortho to diagonal:					*/

    case 50:	r(bb,-1,0,' ');
			r(bb,-1,-1,'/');
			(*bb).State++; break;
    case 51:	r(bb,-1,1,' ');
			r(bb,-1,0,'/');
			(*bb).State++; break;
    case 52:	r(bb,1,2,' ');
			r(bb,0,1,'|');
			r(bb,-1,1,'O');
			r(bb,1,0,' ');
			r(bb,-1,2,' ');
			r(bb,0,2,'/');
			r(bb,-1,0,' ');
			r(bb,-2,0,'/');
			r(bb,-2,1,'-');
			(*bb).State++; break;
    case 53:	r(bb,0,2,' ');
			r(bb,-1,2,'|');
			r(bb,-2,0,' ');
			r(bb,-1,0,'-');
			(*bb).Dir = (((*bb).Dir) | 04);
			(*bb).State = 20; break;
  }
}

static void mkbug(bb, xp, yp, direc)
struct bug *bb;
int xp, yp, direc;
{
  bb->X = xp;
  bb->Y = yp;
  bb->State = 0;
  bb->Dir = direc;

  if (direc < 4) {
    r(bb,0,0,'0');
    r(bb,0,1,'O');
    r(bb,1,0,'/');
    r(bb,1,1,'/');
    r(bb,1,2,'/');
    r(bb,-1,2,'\\');
    r(bb,-1,1,'\\');
    r(bb,-1,0,'\\');
  } else {
    bb->State = 20;
    r(bb,0,0,'0');
    r(bb,1,1,'/');
    r(bb,-1,-1,'/');
    r(bb,0,1,'|');
    r(bb,-1,0,'-');
    r(bb,-1,1,'O');
    r(bb,-1,2,'|');
    r(bb,-2,1,'-');
  }
}


static void r(bb, dx, dy, ch)
struct bug *bb;
int         dx, dy;
char        ch;
{
  int tx, ty, direc;

  direc = (bb->Dir) & 03;
  if ((direc == 1) || (direc == 3)) {
    switch (ch) {
      case '/':	 ch = '\\'; break;
      case '\\': ch = '/'; break;
      case '|':	 ch = '-'; break;
      case '-':	 ch = '|'; break;
      default:	 break;
    }
  }

  switch (direc) {
    case 0: tx = dx+bb->X; ty = dy+bb->Y; break;
    case 2: tx = bb->X-dx; ty = bb->Y-dy; break;
    case 1: tx = bb->X-dy; ty = bb->Y+dx; break;
    case 3: tx = bb->X+dy; ty = bb->Y-dx; break;
  }
  placech(ch,tx,ty); 
}


static void randbug(bb)
struct bug *bb;
{
  int x,y,dir;
  dir = rand()%8;
  x = rand()%80;
  y = rand()%24;
  if (Cflg) {
    x = (Right-LEFT)/2;
    y = (Top-BOT)/2;
  } else switch(dir & 03) {
    case 0: y=24+4; break;
    case 2: y = -4; break;
    case 1: x = -4; break;
    case 3: x=80+4; break;
  }
  mkbug(bb,x,y,dir);
}

static void turn(bb)
struct bug *bb;
{
  if (bb->State == 0) {
    bb->State = 50;
  } else if (bb->State == 20) {
    bb->State = 40;
  }
  return;
}

int main(argc,argv)
int   argc;
char *argv[];
{
  int c;
  int errflg;
  int i,j,xdist,ydist,xmot,ymot;
  char *arg;

  CurX = 1000; CurY = 1000;
  Wflg = 0; Cflg = 0;
  CBugs = 5;

  errflg = 0;
  while ((c = getopt(argc, argv, "cCwW")) != EOF) {
    switch(c) {
      case '?':
        errflg = 1;
        break;

      case 'c':
      case 'C':
        Cflg++;
        break;

      case 'w':
      case 'W' :
        Wflg++;
        break;
    }
  }

  if (optind < argc) {
    CBugs = atoi(argv[optind++]);
  }
  if (optind < argc) {
    fprintf(stderr, "error: unexpected argument '%s'\n", argv[optind]);
    errflg = 1;
  }
  if (errflg != 0) {
    fprintf(stderr, "usage: [-c] [-w] [nr_of_bugs]\n");
    exit(EXIT_FAILURE);
  }

  if (CBugs>NBUGS) CBugs=NBUGS;

  initscr();
  noecho();
  nodelay(stdscr, TRUE);
  cbreak();
  clear();
  Top = LINES-1; Right = COLS-2;  

  if (Wflg) {
    for (i=LEFT; i<Right; i++) placech('-',i,Top);
    for (i=Top; i>BOT; i--) placech('|',Right,i);
    for (i=LEFT; i<Right; i++) placech('-',i,BOT);
    for (i=Top; i>BOT; i--) placech('|',LEFT,i);
  }

  for (i=0; i<CBugs; i++) {
    randbug(&bugs[i]);
  }

  /*  3.  Bug!  */

  for (;;) {

    /*  Had enough?  */

    if (getch() != ERR) {	/* Key hit - quit */
      break;
    }

    i = rand() % CBugs;
    if (!alive(&bugs[i])) {
      randbug(&bugs[i]);
    } else {
      step(&bugs[i]);
      j = (bugs[i]).State;
      xmot = XMotion[(bugs[i]).Dir];
      ymot = YMotion[(bugs[i]).Dir];
      if ((j == 0) || (j == 20)) {
        if (Wflg) {
	  xdist = (bugs[i]).X;
	  ydist = xdist-Right;
	  if ((xmot>0) && (ydist<0) && (ydist*ydist < RADIUS2))
	    turn(&bugs[i]);
	  ydist = xdist-LEFT;
	  if ((xmot<0)&&(ydist>0) && (ydist*ydist < RADIUS2))
	    turn(&bugs[i]);
	  xdist = (bugs[i]).Y;
	  ydist = xdist-Top;
	  if ((ymot>0)&&(ydist<0) && (ydist*ydist < RADIUS2))
	    turn(&bugs[i]);
	  ydist = xdist-BOT;
	  if ((ymot<0)&&(ydist>0) && (ydist*ydist < RADIUS2))
	    turn(&bugs[i]);
        }
      }

      if ((j == 0) || (j == 20)) {
        for (j=0;j<CBugs;j++) {
          if (j==i)
            continue;
	  xdist = (bugs[j]).X - (bugs[i]).X;
	  ydist = (bugs[j]).Y - (bugs[i]).Y;
	  if ((xdist*xdist+ydist*ydist) < 21) {
            if (((xdist*xmot)<=0) && ((ydist*ymot)<=0))
	      continue;
	    turn(&bugs[i]);
	    break;
          }
        }
        if (!(rand()%15))
          turn(&bugs[i]);
      }
    }
  }

  /*  4.  Clean up and exit:  */

  endwin();

  return EXIT_SUCCESS;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99久久99| 911精品产国品一二三产区| av不卡在线观看| 欧美伦理影视网| 国产婷婷色一区二区三区四区 | 欧美午夜电影网| 精品不卡在线视频| 一区二区三区在线影院| 国产成人亚洲综合色影视| 欧美精品自拍偷拍动漫精品| 亚洲欧美自拍偷拍色图| 国产真实乱偷精品视频免| 欧美日韩精品系列| 成人欧美一区二区三区1314 | 尤物av一区二区| 国产美女娇喘av呻吟久久| 5858s免费视频成人| **欧美大码日韩| 国产91精品露脸国语对白| 日韩免费高清av| 午夜免费欧美电影| 在线视频欧美精品| 中文字幕亚洲电影| 成人午夜私人影院| 久久精品亚洲精品国产欧美 | 国产精品国产精品国产专区不蜜 | 国产精品女上位| 欧美中文字幕一二三区视频| 久久精品亚洲国产奇米99| 免费精品视频在线| 91.com在线观看| 天天综合色天天| 67194成人在线观看| 亚洲二区视频在线| 欧美老女人在线| 日韩精品欧美成人高清一区二区| 日本精品免费观看高清观看| 亚洲欧美怡红院| 91蜜桃在线免费视频| 亚洲天堂精品视频| 欧美亚洲免费在线一区| 亚洲v精品v日韩v欧美v专区| 欧美情侣在线播放| 开心九九激情九九欧美日韩精美视频电影| 欧美顶级少妇做爰| 免费xxxx性欧美18vr| 2023国产精品自拍| 成人高清伦理免费影院在线观看| 国产精品久久一卡二卡| 日本二三区不卡| 日韩高清不卡在线| 国产亚洲欧洲997久久综合 | 裸体在线国模精品偷拍| 欧美日韩一区高清| 亚洲国产精品嫩草影院| 国产中文字幕精品| 国产色综合一区| 91麻豆swag| 日本伊人色综合网| 久久精品免费在线观看| 色综合网色综合| 视频一区二区欧美| 国产色产综合产在线视频| 色婷婷狠狠综合| 麻豆成人av在线| 国产精品久久久久影院亚瑟| 欧美精品在线观看播放| 国产福利精品导航| 亚洲综合在线视频| 久久影院午夜片一区| 一本色道a无线码一区v| 久久国产精品色婷婷| 国产精品久久久久久久久动漫| 91传媒视频在线播放| 激情久久五月天| 亚洲国产精品一区二区www在线 | 亚洲视频一二区| 欧美一区二区三区日韩| 成人av在线电影| 男人的天堂亚洲一区| 亚洲人成电影网站色mp4| 欧美一区二区三区男人的天堂| 99这里都是精品| 看片网站欧美日韩| 亚洲午夜激情网站| 中文字幕中文字幕一区二区| 日韩午夜av一区| 欧美在线一区二区三区| 懂色av一区二区夜夜嗨| 免费高清在线一区| 亚洲二区视频在线| 亚洲精品ww久久久久久p站| 久久久精品黄色| 精品少妇一区二区三区免费观看 | 亚洲欧洲另类国产综合| 久久亚洲影视婷婷| 91精品中文字幕一区二区三区| 色综合天天综合狠狠| 成人一级视频在线观看| 精品制服美女久久| 日本伊人午夜精品| 午夜精品久久久久久久久| 亚洲美女免费视频| 中文字幕中文字幕中文字幕亚洲无线| 精品国产污污免费网站入口| 欧美日韩国产成人在线免费| 色哟哟亚洲精品| 99精品国产99久久久久久白柏| 国产成人亚洲精品青草天美| 蜜臀久久99精品久久久久宅男| 日韩精品一二三| 日韩精彩视频在线观看| 午夜精品福利在线| 午夜伦理一区二区| 五月天激情综合网| 日韩电影网1区2区| 日本不卡一区二区三区| 免费看日韩精品| 久久 天天综合| 国产在线麻豆精品观看| 国内精品久久久久影院色| 国产一区二区在线观看视频| 国产麻豆日韩欧美久久| 风间由美性色一区二区三区| 国产999精品久久| 成人久久18免费网站麻豆| va亚洲va日韩不卡在线观看| 97se亚洲国产综合在线| 91伊人久久大香线蕉| 欧美视频在线播放| 在线播放中文一区| 精品国一区二区三区| 国产情人综合久久777777| 国产精品你懂的在线欣赏| 亚洲三级免费观看| 亚洲bdsm女犯bdsm网站| 精品一区二区三区在线播放视频 | 欧美群妇大交群中文字幕| 91精品在线麻豆| 久久午夜国产精品| 亚洲三级小视频| 人人狠狠综合久久亚洲| 国产成人精品在线看| 色狠狠色狠狠综合| 欧美成人a在线| 国产精品国产三级国产普通话99| 亚洲国产中文字幕在线视频综合| 日本伊人色综合网| 成人涩涩免费视频| 欧美区视频在线观看| 久久九九久久九九| 亚洲五月六月丁香激情| 久久99精品国产麻豆不卡| 99久久免费视频.com| 7878成人国产在线观看| 中文字幕不卡一区| 欧美aⅴ一区二区三区视频| 成人avav影音| 日韩无一区二区| 亚洲美女一区二区三区| 九九久久精品视频| 欧美在线观看禁18| 中文一区二区完整视频在线观看| 亚洲国产精品天堂| 99精品久久只有精品| 欧美精品一区二区不卡| 亚洲va欧美va天堂v国产综合| 国产成人综合网| 91精品国产综合久久福利 | 国产亚洲欧美中文| 亚洲电影你懂得| 成人爱爱电影网址| 日韩一区二区免费电影| 亚洲女同ⅹxx女同tv| 国产成人在线网站| 在线不卡免费av| 一个色在线综合| 99免费精品视频| 亚洲日本va午夜在线电影| 国内精品嫩模私拍在线| 欧美人动与zoxxxx乱| 一区二区三区四区不卡在线| 国产成人av一区二区| 日韩欧美一区中文| 日韩高清不卡一区二区三区| 色天天综合色天天久久| 国产精品成人免费精品自在线观看| 久久精品国产久精国产爱| 欧美色图免费看| 亚洲免费观看高清在线观看| av电影天堂一区二区在线| 欧美国产视频在线| 国产乱妇无码大片在线观看| 日韩精品中文字幕一区二区三区 | 国产成人h网站| 精品美女在线播放| 久久se精品一区二区| 欧美一级xxx| 理论电影国产精品| 欧美mv日韩mv国产网站|