rogue > main()


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

場所:main.c

エントリポイント

ゲームにはまだたどりつけてない。

rogue/md_init() //シグナルハンドルの初期設定

rogue/md_getpass(char*)//パスワードの入力を提供する

MASTERが定義されているとき

/*
     * Check to see if he is a wizard
     */
    if (argc >= 2 && argv[1][0] == '\0')
        if (strcmp(PASSWD, md_crypt(md_getpass("wizard's password: "), "mT")) == 0)
        {
            wizard = TRUE;
            player.t_flags |= SEEMONST;
            argv++;
            argc--;
        }

md_crypt()

パスワードの暗号化

暗号化したパスワードと一致した場合、if内の処理を提供する。

xcryptのラップ。

rogue/parse_opts(char*)//文字列をオプションとして解析する

rogue/md_getusername()//環境変数や関数を叩いてログインユーザの名前を得る

rogue/md_getpid()

getpidのラッパ

rogue/open_score()//スコアファイルを開く

rogue/md_normaluser()

引数の解析

if (argc == 2)
    {
        if (strcmp(argv[1], "-s") == 0)
        {
            noscore = TRUE;
            score(0, -1, 0);
            exit(0);
        }
        else if (strcmp(argv[1], "-d") == 0)
        {
            dnum = rnd(100);    /* throw away some rnd()s to break patterns */
            while (--dnum)
                rnd(100);
            purse = rnd(100) + 1;
            level = rnd(100) + 1;
            initscr();
            getltchars();
            death(death_monst());
            exit(0);
        }
    }
    if (argc == 3)      /* {{ yoz */
    {
        if (strcmp(argv[1], "-u") == 0
        ||  strcmp(argv[1], "-n") == 0)
        {
            strucpy(whoami, argv[2], strlen(argv[2]));
        }
    }
    if (whoami[0] == '?')
    {
        printf("Who are you? ");
        fflush(stdout);
        fgets(whoami, MAXSTR, stdin);
        whoami[strlen(whoami) - 1] = '\0';
        if(!whoami[0])
            strcpy(whoami, "Rodney");
    }                   /* }} yoz */

    init_check();                       /* check for legal startup */
    if (argc == 2)
        if (!restore(argv[1]))  /* Note: restore will never return */
            my_exit(1);

fflush

バッファにたまったデータを吐き出す

http://www9.plala.or.jp/sgwr-t/lib/fflush.html

setbufと組み合わせたり、確実にstdoutへバッファを吐き出させたい時に利用。


rogue/initscr()

/* Start up cursor package */

ncursusを使えるようにする。

http://hp.vector.co.jp/authors/VA022047/linux/ncurses.html

rogue/init_probs()/* Set up prob tables for objects */

確保済みデータに格納されている確率を再代入し、アイテムの出現に傾斜をつける。

rogue/init_player()/* Set up initial player stats */


rogue/init_names()/* Set up names of scrolls */

rogue/init_colors()/* Set up colors of potions */

rogue/init_stones()/* Set up stone settings of rings */

rogue/init_materials()/* Set up materials of wands */

rogue/setup()


rogue/endwin()

rogue/new_level()/* Draw current level */

/* Start up daemons and fuses */

start_daemon(runners, 0, AFTER)

start_daemon(doctor, 0, AFTER)

fuse(swander, 0, WANDERTIME, AFTER)

start_daemon(stomach, 0, AFTER)

playit()