コード例 #1
0
static void
canned_panel(PANEL * px[MAX_PANELS + 1], NCURSES_CONST char *cmd)
{
    int which = cmd[1] - '0';

    saywhat(cmd);
    switch (*cmd) {
    case 'h':
	hide_panel(px[which]);
	break;
    case 's':
	show_panel(px[which]);
	break;
    case 't':
	top_panel(px[which]);
	break;
    case 'b':
	bottom_panel(px[which]);
	break;
    case 'd':
	rmpanel(px[which]);
	break;
    }
    pflush();
    wgetch(stdscr);
}
コード例 #2
0
ファイル: demo_panels.c プロジェクト: Scarletts/LiteBSD
static void
do_panel(PANEL * px[MAX_PANELS + 1],
	 NCURSES_CONST char *cmd,
	 FillPanel myFill)
{
    int which = cmd[1] - '0';

    if (which < 1 || which > MAX_PANELS) {
	beep();
	return;
    }

    if (log_in != 0) {
	pflush();
    }

    saywhat(cmd);
    switch (*cmd) {
    case 'b':
	my_bottom_panel(px[which]);
	break;
    case 'c':
	my_create_panel(px, which, myFill);
	break;
    case 'd':
	my_remove_panel(px, which);
	break;
    case 'h':
	my_hide_panel(px[which]);
	break;
    case 'm':
	my_move_panel(px, which, FALSE);
	break;
    case 'M':
	my_move_panel(px, which, TRUE);
	break;
    case 'r':
	my_resize_panel(px, which, myFill);
	break;
    case 's':
	my_show_panel(px[which]);
	break;
    case 't':
	my_top_panel(px[which]);
	break;
    }
}
コード例 #3
0
initialize()
{
	register struct File *fp;
	register struct ship *sp;
	char captain[80];
	char message[60];
	int load;
	register int n;
	char *nameptr;
	int nat[NNATION];

	if (game < 0) {
		(void) puts("Choose a scenario:\n");
		(void) puts("\n\tNUMBER\tSHIPS\tIN PLAY\tTITLE");
		for (n = 0; n < NSCENE; n++) {
			/* ( */
			printf("\t%d):\t%d\t%s\t%s\n", n, scene[n].vessels,
				sync_exists(n) ? "YES" : "no",
				scene[n].name);
		}
reprint:
		printf("\nScenario number? ");
		(void) fflush(stdout);
		(void) scanf("%d", &game);
		while (getchar() != '\n')
			;
	}
	if (game < 0 || game >= NSCENE) {
		(void) puts("Very funny.");
		exit(1);
	}
	cc = &scene[game];
	ls = SHIP(cc->vessels);

	for (n = 0; n < NNATION; n++)
		nat[n] = 0;
	foreachship(sp) {
		if (sp->file == NULL &&
		    (sp->file = (struct File *)calloc(1, sizeof (struct File))) == NULL) {
			(void) puts("OUT OF MEMORY");
			exit(1);
		}
		sp->file->index = sp - SHIP(0);
		sp->file->stern = nat[sp->nationality]++;
		sp->file->dir = sp->shipdir;
		sp->file->row = sp->shiprow;
		sp->file->col = sp->shipcol;
	}
	windspeed = cc->windspeed;
	winddir = cc->winddir;

	(void) signal(SIGHUP, choke);
	(void) signal(SIGINT, choke);

	hasdriver = sync_exists(game);
	if (sync_open() < 0) {
		perror("sail: syncfile");
		exit(1);
	}

	if (hasdriver) {
		(void) puts("Synchronizing with the other players...");
		(void) fflush(stdout);
		if (Sync() < 0)
			leave(LEAVE_SYNC);
	}
	for (;;) {
		foreachship(sp)
			if (sp->file->captain[0] == 0 && !sp->file->struck
			    && sp->file->captured == 0)
				break;
		if (sp >= ls) {
			(void) puts("All ships taken in that scenario.");
			foreachship(sp)
				free((char *)sp->file);
			sync_close(0);
			people = 0;
			goto reprint;
		}
		if (randomize) {
			player = sp - SHIP(0);
		} else {
			printf("%s\n\n", cc->name);
			foreachship(sp)
				printf("  %2d:  %-10s %-15s  (%-2d pts)   %s\n",
					sp->file->index,
					countryname[sp->nationality],
					sp->shipname,
					sp->specs->pts,
					saywhat(sp, 1));
			printf("\nWhich ship (0-%d)? ", cc->vessels-1);
			(void) fflush(stdout);
			if (scanf("%d", &player) != 1 || player < 0
			    || player >= cc->vessels) {
				while (getchar() != '\n')
					;
				(void) puts("Say what?");
				player = -1;
			} else
				while (getchar() != '\n')
					;
		}
		if (player < 0)
			continue;
		if (Sync() < 0)
			leave(LEAVE_SYNC);
		fp = SHIP(player)->file;
		if (fp->captain[0] || fp->struck || fp->captured != 0)
			(void) puts("That ship is taken.");
		else
			break;
	}

	ms = SHIP(player);
	mf = ms->file;
	mc = ms->specs;

	Write(W_BEGIN, ms, 0, 0, 0, 0, 0);
	if (Sync() < 0)
		leave(LEAVE_SYNC);

	(void) signal(SIGCHLD, child);
	if (!hasdriver)
		switch (fork()) {
		case 0:
			longjmp(restart, MODE_DRIVER);
			/*NOTREACHED*/
		case -1:
			perror("fork");
			leave(LEAVE_FORK);
			break;
		default:
			hasdriver++;
		}

	printf("Your ship is the %s, a %d gun %s (%s crew).\n",
		ms->shipname, mc->guns, classname[mc->class],
		qualname[mc->qual]);
	if ((nameptr = (char *) getenv("SAILNAME")) && *nameptr)
		(void) strncpy(captain, nameptr, sizeof captain);
	else {
		(void) printf("Your name, Captain? ");
		(void) fflush(stdout);
		(void) gets(captain);
		if (!*captain)
			(void) strcpy(captain, "no name");
	}
	captain[sizeof captain - 1] = '\0';
	Write(W_CAPTAIN, ms, 1, (int)captain, 0, 0, 0);
	for (n = 0; n < 2; n++) {
		char buf[10];

		printf("\nInitial broadside %s (grape, chain, round, double): ",
			n ? "right" : "left");
		(void) fflush(stdout);
		(void) scanf("%s", buf);
		switch (*buf) {
		case 'g':
			load = L_GRAPE;
			break;
		case 'c':
			load = L_CHAIN;
			break;
		case 'r':
			load = L_ROUND;
			break;
		case 'd':
			load = L_DOUBLE;
			break;
		default:
			load = L_ROUND;
		}
		if (n) {
			mf->loadR = load;
			mf->readyR = R_LOADED|R_INITIAL;
		} else {
			mf->loadL = load;
			mf->readyL = R_LOADED|R_INITIAL;
		}
	}

	initscreen();
	draw_board();
	(void) sprintf(message, "Captain %s assuming command", captain);
	Write(W_SIGNAL, ms, 1, (int)message, 0, 0, 0);
	newturn();
}
コード例 #4
0
ファイル: ptest.c プロジェクト: Palantir555/ecos-mars-zx3
int main(int argc, char **argv)
{
    int itmp, y;

    if (argc > 1 && atol(argv[1]))
        nap_msec = atol(argv[1]);

#ifdef XCURSES
    Xinitscr(argc, argv);
#else
    initscr();
#endif
    backfill();

    for (y = 0; y < 5; y++)
    {
        p1 = mkpanel(10, 10, 0, 0);
        set_panel_userptr(p1, "p1");

        p2 = mkpanel(14, 14, 5, 5);
        set_panel_userptr(p2, "p2");

        p3 = mkpanel(6, 8, 12, 12);
        set_panel_userptr(p3, "p3");

        p4 = mkpanel(10, 10, 10, 30);
        w4 = panel_window(p4);
        set_panel_userptr(p4, "p4");

        p5 = mkpanel(10, 10, 13, 37);
        w5 = panel_window(p5);
        set_panel_userptr(p5, "p5");

        fill_panel(p1);
        fill_panel(p2);
        fill_panel(p3);
        fill_panel(p4);
        fill_panel(p5);
        hide_panel(p4);
        hide_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("h3 s1 s2 s4 s5;");
        move_panel(p1, 0, 0);
        hide_panel(p3);
        show_panel(p1);
        show_panel(p2);
        show_panel(p4);
        show_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s1;");
        show_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s2;");
        show_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("m2;");
        move_panel(p2, 10, 10);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s3;");
        show_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("m3;");
        move_panel(p3, 5, 5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("b3;");
        bottom_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s4;");
        show_panel(p4);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s5;");
        show_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t3;");
        top_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t1;");
        top_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t2;");
        top_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t3;");
        top_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t4;");
        top_panel(p4);
        pflush();
        wait_a_while(nap_msec);

        for (itmp = 0; itmp < 6; itmp++)
        {
            saywhat("m4;");
            mvwaddstr(w4, 3, 1, mod[itmp]);
            move_panel(p4, 4, itmp * 10);
            mvwaddstr(w5, 4, 1, mod[itmp]);
            pflush();
            wait_a_while(nap_msec);

            saywhat("m5;");
            mvwaddstr(w4, 4, 1, mod[itmp]);
            move_panel(p5, 7, itmp * 10 + 6);
            mvwaddstr(w5, 3, 1, mod[itmp]);
            pflush();
            wait_a_while(nap_msec);
        }

        saywhat("m4;");
        move_panel(p4, 4, itmp * 10);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t5;");
        top_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t2;");
        top_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t1;");
        top_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d2;");
        rmpanel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("h3;");
        hide_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d1;");
        rmpanel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d4; ");
        rmpanel(p4);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d5; ");
        rmpanel(p5);
        pflush();
        wait_a_while(nap_msec);

        if (nap_msec == 1)
            break;

        nap_msec = 100L;
    }

    endwin();

    return 0;
}   /* end of main */
コード例 #5
0
static void
demo_panels(void (*myInit) (void), void (*myFill) (PANEL *))
{
    int itmp;
    PANEL *px[MAX_PANELS + 1];

    scrollok(stdscr, FALSE);	/* we don't want stdscr to scroll! */
    refresh();

    myInit();
    for (itmp = 1; itmp <= MAX_PANELS; ++itmp)
	px[itmp] = 0;

    px[1] = mkpanel(COLOR_RED,
		    LINES / 2 - 2,
		    COLS / 8 + 1,
		    0,
		    0);

    px[2] = mkpanel(COLOR_GREEN,
		    LINES / 2 + 1,
		    COLS / 7,
		    LINES / 4,
		    COLS / 10);

    px[3] = mkpanel(COLOR_YELLOW,
		    LINES / 4,
		    COLS / 10,
		    LINES / 2,
		    COLS / 9);

    px[4] = mkpanel(COLOR_BLUE,
		    LINES / 2 - 2,
		    COLS / 8,
		    LINES / 2 - 2,
		    COLS / 3);

    px[5] = mkpanel(COLOR_MAGENTA,
		    LINES / 2 - 2,
		    COLS / 8,
		    LINES / 2,
		    COLS / 2 - 2);

    myFill(px[1]);
    myFill(px[2]);
    myFill(px[3]);
    myFill(px[4]);
    myFill(px[5]);

    hide_panel(px[4]);
    hide_panel(px[5]);
    pflush();
    saywhat("");
    wgetch(stdscr);

    saywhat("h3 s1 s2 s4 s5");
    move_panel(px[1], 0, 0);
    hide_panel(px[3]);
    show_panel(px[1]);
    show_panel(px[2]);
    show_panel(px[4]);
    show_panel(px[5]);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "s1");
    canned_panel(px, "s2");

    saywhat("m2");
    move_panel(px[2], LINES / 3 + 1, COLS / 8);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "s3");

    saywhat("m3");
    move_panel(px[3], LINES / 4 + 1, COLS / 15);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "b3");
    canned_panel(px, "s4");
    canned_panel(px, "s5");
    canned_panel(px, "t3");
    canned_panel(px, "t1");
    canned_panel(px, "t2");
    canned_panel(px, "t3");
    canned_panel(px, "t4");

    for (itmp = 0; itmp < 6; itmp++) {
	WINDOW *w4 = panel_window(px[4]);
	WINDOW *w5 = panel_window(px[5]);

	saywhat("m4");
	wmove(w4, LINES / 8, 1);
	waddstr(w4, mod[itmp]);
	move_panel(px[4], LINES / 6, itmp * (COLS / 8));
	wmove(w5, LINES / 6, 1);
	waddstr(w5, mod[itmp]);
	pflush();
	wgetch(stdscr);

	saywhat("m5");
	wmove(w4, LINES / 6, 1);
	waddstr(w4, mod[itmp]);
	move_panel(px[5], LINES / 3 - 1, (itmp * 10) + 6);
	wmove(w5, LINES / 8, 1);
	waddstr(w5, mod[itmp]);
	pflush();
	wgetch(stdscr);
    }

    saywhat("m4");
    move_panel(px[4], LINES / 6, itmp * (COLS / 8));
    pflush();
    wgetch(stdscr);

    canned_panel(px, "t5");
    canned_panel(px, "t2");
    canned_panel(px, "t1");
    canned_panel(px, "d2");
    canned_panel(px, "h3");
    canned_panel(px, "d1");
    canned_panel(px, "d4");
    canned_panel(px, "d5");
    canned_panel(px, "d3");

    wgetch(stdscr);

    erase();
    endwin();
}
コード例 #6
0
ファイル: RT1.C プロジェクト: g8bpq/BPQ32
static int rt_cmd(CIRCUIT *circuit)
{
	CIRCUIT *c;
	USER    *user, *su;
	char    *f1, *f2;

	user = circuit->u.user;

	switch(tolower(circuit->buf[1]))
	{
		case 'b' :                               return FALSE;
		case 'e' : user->flags flipbit u_echo;   return true;
		
		case 'h' :
			tputs("/U - Show Users.\n/N - Enter your Name.\n/Q - Enter your QTH.\n/T - Show Topics.\n");
			tputs("/T Name - Join Topic or Create new Topic.\n/P - Show Ports and Links.\n");
			tputs("/E - Toggle Echo.\n/S CALL Text - Send Text to that station only.\n");
			tputs("/F - Force all links to be made.\n/K - Show Known nodes.\n");
			tputs("/B - Leave RoundTable and return to node.\n");
			return true;
		
		case 'k' : show_nodes();                 return true;

		case 'n' :
			strnew(&user->name, circuit->buf + 3);
			saydone();
			upduser(user);
			user_tell(user, id_user);
			return true;

		case 'p' : show_circuits(); return true;

		case 'q' :
			strnew(&user->qth, circuit->buf + 3);
			saydone();
			upduser(user);
			user_tell(user, id_user);
			return true;

		case 's' :
			strcat(circuit->buf, "\n");
			f1 = strlop(circuit->buf, ' ');  // To.
			if (!f1) break;
			f2 = strlop(f1, ' ');            // Text to send.
			if (!f2) break;
			strupr(f1);
			su = user_find(f1);

			if (!su)
			{
				tputs("*** That user is not logged in.\n");
				return true;
			}

// Send to the desired user only.

			if (su->circuit->flags & p_user)
				text_tellu(user, f2, f1, o_one);
			else
				text_xmit(user, su, f2);

			return true;

		case 't' :
			f1 = strlop(circuit->buf, ' ');
			if (f1)
			{
				topic_chg(user, f1);

// Tell all link circuits about the change of topic.

				for (c = circuit_hd; c; c = c->next)
					if (c->flags & p_linked) topic_xmit(user, c);
			}
			else
			  show_topics();
			return true;

		case 'u' : show_users(); return true;

		default  : break;
	}

	saywhat();
	return true;
}