summaryrefslogtreecommitdiffstats
path: root/pttbbs/mbbsd/vice.c
diff options
context:
space:
mode:
Diffstat (limited to 'pttbbs/mbbsd/vice.c')
-rw-r--r--pttbbs/mbbsd/vice.c153
1 files changed, 0 insertions, 153 deletions
diff --git a/pttbbs/mbbsd/vice.c b/pttbbs/mbbsd/vice.c
deleted file mode 100644
index 14e4e8f4..00000000
--- a/pttbbs/mbbsd/vice.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* $Id$ */
-#include "bbs.h"
-
-#define VICE_PLAY BBSHOME "/etc/vice/vice.play"
-#define VICE_DATA "vice.new"
-#define VICE_BINGO BBSHOME "/etc/vice.bingo"
-#define VICE_SHOW BBSHOME "/etc/vice.show"
-#define VICE_LOST BBSHOME "/etc/vice/vice.lost"
-#define VICE_WIN BBSHOME "/etc/vice/vice.win"
-#define VICE_END BBSHOME "/etc/vice/vice.end"
-#define VICE_NO BBSHOME "/etc/vice/vice.no"
-#define MAX_NO_PICTURE 2
-#define MAX_WIN_PICTURE 2
-#define MAX_LOST_PICTURE 3
-#define MAX_END_PICTURE 5
-
-static int
-vice_load(char tbingo[6][15])
-{
- FILE *fb = fopen(VICE_BINGO, "r");
- char buf[16], *ptr;
- int i = 0;
- if (!fb)
- return -1;
- bzero((char *)tbingo, 6*15);
- while (i < 6 && fgets(buf, 15, fb)) {
- if ((ptr = strchr(buf, '\n')))
- *ptr = 0;
- strcpy(tbingo[i++], buf);
- }
- fclose(fb);
- return 0;
-}
-
-static int
-check(char tbingo[6][15], const char *data)
-{
- int i = 0, j;
-
- if (!strcmp(data, tbingo[0]))
- return 8;
-
- for (j = 8; j > 0; j--)
- for (i = 1; i < 6; i++)
- if (!strncmp(data + 8 - j, tbingo[i] + 8 - j, j))
- return j - 1;
- return 0;
-}
-/* TODO Ptt:showfile ran_showfile more 三者要合 */
-static int
-ran_showfile(int y, int x, const char *filename, int maxnum)
-{
- FILE *fs;
- char buf[512];
-
- bzero(buf, sizeof(buf));
- snprintf(buf, sizeof(buf), "%s%d", filename, (int)(random() % maxnum + 1));
- if (!(fs = fopen(buf, "r"))) {
- move(10, 10);
- prints("can't open file: %s", buf);
- return 0;
- }
- move(y, x);
-
- while (fgets(buf, sizeof(buf), fs))
- outs(buf);
-
- fclose(fs);
- return 1;
-}
-
-static int
-ran_showmfile(const char *filename, int maxnum)
-{
- char buf[256];
-
- snprintf(buf, sizeof(buf), "%s%d", filename, (int)(random() % maxnum + 1));
- return more(buf, YEA);
-}
-
-
-int
-vice_main(void)
-{
- FILE *fd;
- char tbingo[6][15];
- char buf_data[256],
- serial[16], ch[2], *ptr;
- int TABLE[] = {0, 10, 200, 1000, 4000, 10000, 40000, 100000, 200000};
- int total = 0, money, i = 4, j = 0;
-
- setuserfile(buf_data, VICE_DATA);
- if (!dashf(buf_data)) {
- ran_showmfile(VICE_NO, MAX_NO_PICTURE);
- return 0;
- }
- if (vice_load(tbingo) < 0)
- return -1;
- clear();
- ran_showfile(0, 0, VICE_PLAY, 1);
- ran_showfile(10, 0, VICE_SHOW, 1);
-
- if (!(fd = fopen(buf_data, "r")))
- return 0;
- j = 0;
- i = 0;
- move(10, 24);
- clrtoeol();
- outs("這一期的發票號碼");
- // FIXME 當發票多於一行, 開獎的號碼就會被蓋掉
- while (fgets(serial, 15, fd)) {
- if ((ptr = strchr(serial, '\r')))
- *ptr = 0;
- if (j == 0)
- i++;
- if( i >= 14 )
- break;
- move(10 + i, 24 + j);
- outs(serial);
- j += 9;
- j %= 45;
- }
- getdata(8, 0, "按'c'開始對獎了(或是任意鍵離開)): ",
- ch, sizeof(ch), LCECHO);
- if (ch[0] != 'c' || lockutmpmode(VICE, LOCK_MULTI)) {
- fclose(fd);
- return 0;
- }
- showtitle("發票對獎", BBSNAME);
- rewind(fd);
- while (fgets(serial, 15, fd)) {
- if ((ptr = strchr(serial, '\n')))
- *ptr = 0;
- money = TABLE[check(tbingo, serial)];
- total += money;
- prints("%s 中了 %d\n", serial, money);
- }
- pressanykey();
- if (total > 0) {
- ran_showmfile(VICE_WIN, MAX_WIN_PICTURE);
- move(22, 0);
- clrtoeol();
- prints("全部的發票中了 %d 塊錢\n", total);
- demoney(total);
- } else
- ran_showmfile(VICE_LOST, MAX_LOST_PICTURE);
-
- fclose(fd);
- unlink(buf_data);
- pressanykey();
- unlockutmpmode();
- return 0;
-}