荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: spider.bbs@dragon.seed.net.tw (网中人), 信区: BBSAdmin
标 题: [转载] 来自 spider@beef.tcu.edu.tw (转载)(转寄)
发信站: 种子网 BBS (Fri Sep 17 10:51:19 1999)
转信站: ShenZhen-University!Egg.mm.ntut!dragon
出 处: dragon.seed.net.tw
【 以下文字转载自 spider 的信箱 】
【 原文由 spider.bbs@beef.tcu.edu.tw 所发表 】
发信人: spider (Fallen Paladin), 信区: OrientSysop
标 题: 蜘蛛养猫小玛莉
发信站: 蜘蛛养猫 (Fri Sep 17 10:14:28 1999) , 转信
OS: Linux 2.0.35
BBS: FireBird ?.?? (跟著大家改了很多...版本已不明)
Name: 蜘蛛养猫小玛莉
因为觉得流通的那一版小玛莉不像小时候在玩的....所以想写个比较像的...
我不是什麽程式高手或是资讯相关科系的学生.....
写出来的东西当然也不会太高级.....
所以也希望大家觉得有什麽可以改的....就改吧.... :)
Note:
1. get_record, inmoney等函式随各版bbs不同...记得要改...
2. 灯号变换的速度是在自己的console测的...颇为流畅... :)
在校内其他电脑上...尚可....
在modem上...看起来像乱数在跳.... -_-
3. 里面有一个global变数getddd, 是为了控制getdata内clrtoeol而加的....
这样子命令列就可以放在小玛莉的中间....
不过要改main.c和io.c ...而且又占了一点资源....
如果你觉得命令列的位置不是顶重要, 画面的最下方还有一个备用的空行...
可以都放到那里去....
4. 有部分的code是采用SugarII的糖果屋赛猪....可是寄mail去却退了回来...
希望SugarII大大看到之後不会介意
5. 感谢dsyan大大的协助.... :)
#include "bbs.h"
#define MARIOLOG "mario_log" /* LOG档 */
int
mario()
{
char bet[3],m1[7],bet2[3]; /* 赌金 */
char *pic[10]={" ","Ω","♀","♂","□","△","☆","77","◇","Χ"}; /* 项目名
*/
char buffer[200]; /* message */
int money[10]={0,0,0,0,0,0,0,0,0,0};
int save_pager;
int price[10] = {0,50,40,30,25,20,15,10,5,2}; /* 倍率 */
int bar[49] = {0,3,9,8,4,6,7,2,3,5,8,
9,1,8,7,6,3,2,8,4,5,
1,2,6,9,7,5,3,9,7,8,
1,4,9,2,6,3,5,8,9,7,
2,4,8,7,9,1,5,9}; /* 板面位址 */
int i,j,p,s=1,t,z;
time_t nowtime;
extern int getddd;
modify_user_mode( MARIO );
nowtime = time(0) ;
srandom(time(0));
save_pager=uinfo.pager;
clear();
more("game/mario/mario.welcome");
uinfo.pager = NA;
getddd=1;
while(-1)
{
clear();
for(i=1;i<10;i++) /* money 归零 */
money[i]=0;
print_total(); /* 印板面 */
do
{
do
{
get_record (FN_PASSWD, ¤tuser, sizeof (currentuser), usernum);
getdata(3,8,"你要押那项(1~9)[S]开始[Q]离开:",bet,2,DOECHO,NULL,YEA);
i=atoi(bet);
if(i>0&&i<10)
{
sprintf(buffer,"(现金: %d)要押多少赌金(1~10000)? 按 Enter取消:",
currentuser.money);
getdata(4,8,buffer,m1,6,DOECHO,NULL,YEA);
if(atoi(m1)>currentuser.money)
pressanykey1("你的现金不够啦!!~~:)");
else if(money[i]+atoi(m1)>=0&&money[i]+atoi(m1)<=10000)
{
money[i]+=atoi(m1);
demoney(atoi(m1), 1);
}
cwindows_s(3,4);
}
move(21,3);clrtoeol();
for(i=1;i<10;i++)
prints("m%6d ",i,money[i]);
} while( !( ((bet[0]=='s'||bet[0]=='S')&&money[1]+money[2]+money[3]
+money[4]+money[5]+money[6]+money[7]+money[8]+money[9]>0)||bet[0]=='q'||bet[0]
=='Q') );
if(bet[0]=='q'||bet[0]=='Q')
{
if(money[1]+money[2]+money[3]+money[4]+money[5]+money[6]+money[7]
+money[8]+money[9]>0)
{
for(i=1;i<10;i++)
inmoney(money[i], 1);
}
uinfo.pager = save_pager;
clear();
getddd=0;
return 0;
}
}while(bet[0]!='s'&&bet[0]!='S');
price[0]=rand()%250+1;
p=get_m(price[0]); /* 转换成中的项目 */
t=(s+301)%48-1; /* 会停的位置 */
if(t==0) t=48; /* 修正 */
if(t==(-1)) t=47;
j=correct(t,p); /* 正确位置 */
if(j>=t)
z=301+(j-t);
else
z=301-(t-j); /* 最後要走几步 */
t=(z+s)%48-1; /* 真的要停的位置 */
if(t==0) t=48;
if(t==(-1)) t=47;
for(i=s; i<49; i++) /* 第一圈 */
{
refresh();
usleep(300000*((49-i)^2)/(49-s)); /* 起始减速 */
run(i,0);
}
z=z-(48-s)-1;
do
{
for(i=1; i<49; i++) /* 中间的圈 */
{
refresh();
usleep(30000);
run(i,0);
}
z=z-48;
}while(z>47);
for(i=1; i<z; i++) /* 最後一圈 */
{
if(i>z-5) /* 最後减速 */
sleep(1);
else
usleep(150000);
refresh();
run(i,0);
}
for(i=0; i<5; i++) /* 闪五次 */
{
run(t,0);
refresh();
usleep(500000);
run(t,1);
refresh();
usleep(500000);
}
move(5,8);
prints("中奖的是%s ",pic[p]);
if(money[p]>0)
{
money[0]=money[p]*price[p];
move(6,8);
prints("恭喜你押中了,获得奖金 %d ",money[0]);
while(-1)
{
cwindows_s(7,10);
sprintf(buffer,"目前奖金: %d 你还要比大小吗??[Y/n]:", money[0]);
getdata(7,8,buffer,bet,2,DOECHO,NULL,YEA);
if(bet[0]!='N'&&bet[0]!='n')
{
getdata(8,8,"你要押什麽??[1.大 2.小]",bet2,2,DOECHO,NULL,YEA);
move(9,8);
if(bet2[0]=='2')
prints("你押的是小!!");
else
prints("你押的是大!!");
for(i=0; i<30; i++)
{
move(12,8);
prints(" □大 □小 ");
refresh();
if(i<20)
usleep(8000*((30-i)^2));
else
usleep(8000*(i^2));
move(12,8);
prints(" □大 □小 ");
refresh();
if(i<20)
usleep(8000*((30-i)^2));
else
usleep(8000*(i^2));
}
price[0]=(rand()%2)+1;
move(12,8);
if(price[0]==1)
prints(" □大 □小 ");
else
prints(" □大 □小 ");
if(price[0]==atoi(bet2))
{
money[0]=money[0]*2;
move(10,8);
prints("啊!! 押中了!! 奖金变成%d张餐\券", money[0]);
}
else
{
money[0]=0;
move(10,8);
prints("呜....押错了....");
break;
}
}
else if(bet[0]=='N'||bet[0]=='n')
{
move(11,8);
prints("得奖金 %d ", money[0]);
break;
}
}
if(money[0]>0)
{
inmoney(money[0], 1);
sprintf(buffer,"%9s压中了%s 赚了%7d 张餐\卷 %s",currentuser.userid,pic[p]
game_log(MARIOLOG,buffer);
}
else
{
sprintf(buffer,"%9s压中了%s 但是又输了 %s",currentuser.userid,pic[p],ctim
game_log(MARIOLOG,buffer);
}
}
else
{
move(8,8);
prints("抱歉...你没押中ㄛ~~~");
sprintf(buffer,"%9s一只都没有压中啦!! %s",currentuser.userid,ctime(&nowtim
game_log(MARIOLOG,buffer);
}
pressreturn();
s=t; /* 回传起点 */
}
}
int
correct(int t, int p)
{
int j;
int bar[49] = {0,3,9,8,4,6,7,2,3,5,8,
9,1,8,7,6,3,2,8,4,5,
1,2,6,9,7,5,3,9,7,8,
1,4,9,2,6,3,5,8,9,7,
2,4,8,7,9,1,5,9}; /* 板面位址 */
for (j=t;j<49;j++)
{
if(bar[j]==p)
return j;
}
for (j=t;j>0;j--)
{
if(bar[j]==p)
return j;
}
}
int run(int q,int p)
{
int x1,y1,x2,y2,z,k;
char *pic[10]={" ","Ω","♀","♂","□","△","☆","77","◇","Χ"}; /* 项目名 */
int bar[49] = {0,3,9,8,4,6,7,2,3,5,8,
9,1,8,7,6,3,2,8,4,5,
1,2,6,9,7,5,3,9,7,8,
1,4,9,2,6,3,5,8,9,7,
2,4,8,7,9,1,5,9}; /* 板面位址 */
z=bar[q-1];
k=bar[q];
if(q==1)
{
x1=3; y1=4;
x2=1; y2=4;
}
if(q>1&&q<19)
{
x1=1; y1=4*q-4;
x2=1; y2=4*q;
}
if(q>18&&q<26)
{
x1=2*q-37; y1=72;
x2=2*q-35; y2=72;
}
if(q>25&&q<43)
{
x1=15; y1=176-4*q;
x2=15; y2=172-4*q;
}
if(q>42&&q<49)
{
x1=101-2*q; y1=4;
x2=99-2*q; y2=4;
}
move(x1,y1);
if(q==1)
prints("%s", pic[9]);
else
prints("%s", pic[z]);
move(x2,y2);
if(p==1)
prints("%s", pic[k]);
else
prints("□");
}
int get_m(int x)
{
int p;
if(x>0&&x<2) p=0;
if(x>1&&x<4) p=1;
if(x>3&&x<7) p=2;
if(x>6&&x<13) p=3;
if(x>12&&x<24) p=4;
if(x>23&&x<52) p=5;
if(x>51&&x<101) p=6;
if(x>100&&x<171) p=7;
if(x>170) p=8;
return p+1;
}
int print_total()
{
prints(" ┌—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—
┬—┐\n");
prints(" │♂│Χ│◇│□│☆│77│♀│♂│△│◇│Χ│Ω│Χ│77│☆│♂│♀
│◇│\n");
prints(" ├—┼—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—
┼—┤\n");
prints(" │Χ│
│□│\n");
prints(" ├—┤
├—┤\n");
prints(" │△│
│△│\n");
prints(" ├—┤
├—┤\n");
prints(" │Ω│
│Ω│\n");
prints(" ├—┤
├—┤\n");
prints(" │Χ│
│♀│\n");
prints(" ├—┤
├—┤\n");
prints(" │77│
│☆│\n");
prints(" ├—┤ □大 □小
├—┤\n");
prints(" │◇│
│Χ│\n");
prints(" ├—┼—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—┬—
┼—┤\n");
prints(" │□│♀│77│Χ│◇│△│♂│☆│♀│Χ│□│Ω│◇│77│Χ│♂│△
│77│\n");
prints(" └—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—┴—
┴—┘\n");
prints(" ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌?
prints(" │Ω│ │♀│ │♂│ │□│ │△│ │☆│ │77│ │◇│ │?
prints(" │50│ │40│ │30│ │25│ │20│ │15│ │10│ │ 5│ │
prints(" └—┘ └—┘ └—┘ └—┘ └—┘ └—┘ └—┘ └—┘ └?
}
int
cwindows_s(int x1,int x2)
{
char buffer[] = "
";
int i;
for (i = x1; i < (x2+1); i++)
{
move (i, 8);
prints ("%s", buffer);
}
}
--
※ 转载:.种子网 BBS bbs.seed.net.tw.[FROM: beef.tcu.edu.tw]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店