广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3503 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
williamleo 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x4
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
文章表情[Linux] 求救,程式修改!
请问哪位高手可以将下面本来是BBS下的小游戏,改成UNIX或LINUX单机下可以跑,这是学校老师给的期末报告,因为太难了所以请求好心人士帮忙,感激不尽!

#include "bbs.h"

#undef      GP_DEBUG

char card[52],mycard[5],cpucard[5],sty[100],now;

static int
forq(a,b)
char *a,*b;
{
char c=(*a)%13;
char d=(*b)%13;
if(!c) c=13; if(!d) d=13;
if(c==1) c=14; if(d==1) d=14;
if(c==d) return *a-*b;
return c-d;
}

int
p_gp()
{
char genbuf[200],hold[5];
char ans[5];
int bet,i,j,k,tmp,x,xx,doub,t,tt;

srandom(time(0));
more("etc/game/gp.welcome",YEA);

while(-1)
{
clear();
setutmpmode(GOLDPOKER);
showtitle("金扑克王", BoardName);
ans[0]=0; bet=0;
show_money(bet);

do
{
  getdata(21, 0,"要下注多少呢(上限1000)? 按 Enter 离开>", genbuf, 5, 1, 0);
  bet=atoi(genbuf);
  if(bet<0) bet=0;
} while(bet>1000);
if(!bet) return 0;
if(bet>cuser.money)
{
  pressanykey("你的现金不够喔.. :)");
  return 0;
}
move(21,0); clrtoeol();
prints(" (←)(→)改变选牌 (d)Double (SPCAE)改变换牌 (Enter)确定");
demoney(bet);
show_money(bet);

for(i=0;i<52;i++) card=i; /* 0~51 ..黑杰克是 1~52 */

for(i=0;i<1000;i++)
{
  j=random()%52; k=random()%52;
  tmp=card[j]; card[j]=card[k]; card[k]=tmp;
}

now=doub=0;
for(i=0;i<5;i++)
{
  mycard=card[now++];
  hold=1;
}
qsort(mycard,5,sizeof(char),forq);

for(i=0;i<5;i++)  
  show_card(0,mycard,i);

x=xx=tmp=0;
while(tmp!=13)
{
  for(i=0;i<5;i++)
  {
  move(16, i*4+2); outs(hold<0?"保":" ");
  move(17, i*4+2); outs(hold<0?"留":" ");
  }
  move(11,xx*4+2); outs(" ");
  move(11,x*4+2); outs("↓");
  move(b_lines-1,0);
  refresh();
  xx=x;

  tmp=igetkey();
  switch(tmp)
  {
#ifdef GP_DEBUG
  case KEY_UP:
  getdata(21, 0,"把牌换成> ", genbuf, 3, 1, 0);
  mycard[x]=atoi(genbuf);
  qsort(mycard,5,sizeof(char),forq);
  for(i=0;i<5;i++)
    show_card(0,mycard,i);
  break;
#endif  
  case KEY_LEFT: case 'l': x=x?x-1:4; break;
  case KEY_RIGHT: case 'r': x=(x==4)?0:x+1; break;
  case ' ': hold[x]*=-1; break;
  case 'd':
  if(!doub&&cuser.money>=bet)
  {
    doub++;
    move(21,0); clrtoeol();
    prints(" (←)(→)改变选牌 (SPCAE)改变换牌 (Enter)确定");
    demoney(bet);
    bet*=2;
    show_money(bet);
  }
  break;
  }
}

for(i=0;i<5;i++)
  if(hold==1)
  mycard=card[now++];
qsort(mycard,5,sizeof(char),forq);
for(i=0;i<5;i++)
  show_card(0,mycard,i);
move(11,x*4+2); outs(" ");

cpu();
#ifdef GP_DEBUG
for(x=0;x<5;x++)
{
  getdata(21, 0,"把牌换成> ", genbuf, 3, 1, 0);
  cpucard[x]=atoi(genbuf);
}    
  qsort(cpucard,5,sizeof(char),forq);
  for(i=0;i<5;i++)
    show_card(1,cpucard,i);
#endif  
i=win();

if(i<0)
{
  inmoney(bet*2);
  pressanykey("哇!!好棒喔!!赢了 %d 元咧.. :DDD",bet);
  game_log(GOLDPOKER,"%s..赢了 :) .. %d",sty,bet);
}
else if(i>1000)
{
  switch(i)
  {
  case 1001: doub=15; break;
  case 1002: doub=10; break;
  case 1003: doub=5; break;
  }
  inmoney(bet*2*doub);
  pressanykey("哇!!好棒喔!!赢了 %d 元咧.. :DDD",bet*doub);
  game_log(GOLDPOKER,"%s..赢了 :) .. %d",sty,bet*doub);
}
else
{
  pressanykey("输了..:~~~");
  game_log(GOLDPOKER,"%s..输了 :~ .. %d",sty,bet);  
}
show_money(0);
}
}

show_card(isDealer,c,x)
int isDealer,c,x;
{
int beginL;
char *suit[4] = {"C","D","H","S"};
char *num[13] = {"K","A","2","3","4","5","6",
            "7","8","9","10","J","Q"};

beginL=(isDealer)? 2: 12;
move(beginL, x*4);     outs("╭───╮");
move(beginL+1, x*4); prints("│%2s   │", num[c%13]);
move(beginL+2, x*4); prints("│%2s   │", suit[c/13]); /* ←这里跟黑杰克 */
#ifdef GP_DEBUG
move(beginL+3, x*4); prints("│%2d   │",c);         /*   有点不同喔!! */
#else
move(beginL+3, x*4);   outs("│     │");         /*   有点不同喔!! */
#endif
move(beginL+4, x*4);   outs("│     │");
move(beginL+5, x*4);   outs("│     │");
move(beginL+6, x*4);   outs("╰───╯");
}

cpu()
{
char i,j,hold[5];
char p[13],q[5],r[4];
char a[5],b[5];

for(i=0;i<5;i++)
{
cpucard=card[now++];
hold=0;
}
qsort(cpucard,5,sizeof(char),forq);
for(i=0;i<5;i++)
show_card(1,cpucard,i);

tran(a,b,cpucard);
check(p,q,r,cpucard);

for(i=0;i<13;i++)
if(p>1)
  for(j=0;j<5;j++)
  if(i==cpucard[j]%13) hold[j]=-1;

for(i=0;i<5;i++)
{
if(a==13 || a==1) hold=-1;
move(6, i*4+2); outs(hold<0?"保":" ");
move(7, i*4+2); outs(hold<0?"留":" ");
}

pressanykey("电脑换牌前..");

for(i=0;i<5;i++)
if(!hold) cpucard=card[now++];
qsort(cpucard,5,sizeof(char),forq);
for(i=0;i<5;i++)
show_card(1,cpucard,i);
}

int
win()
{
int i,j,k,my,cpu,ret;
char myx,myy,cpux,cpuy;

my=complex(mycard,&myx,&myy);
cpu=complex(cpucard,&cpux,&cpuy);
show_style(my,cpu);

if(my!=cpu)
ret=my-cpu;
else if (myx==1 && cpux!=1)
ret=-1;
else if (myx!=1 && cpux==1)
ret=1;
else if(myx!=cpux)
ret=cpux-myx;
else if (myy!=cpuy)
ret=cpuy-myy;

if(ret<0)
switch(my)
{
  case 1: ret=1001; break;
  case 2: ret=1002; break;
  case 3: ret=1003; break;  
}

return ret;
}

// 同花顺、铁枝、葫、同花、顺、三条、兔胚、胚、一只
int
complex(cc,x,y)
char *cc,*x,*y;
{
char p[13],q[5],r[4];
char a[5],b[5],c[5],d[5];
int i,j,k;

tran(a,b,cc);
check(p,q,r,cc);

memcpy(c,a,5); memcpy(d,b,5);
for(i=0;i<4;i++)
for(j=i;j<5;j++)
if(c>c[j])
{
  k=c; c=c[j]; c[j]=k;
  k=d; d=d[j]; d[j]=k;
}

/* 同花顺 */
if(10==c[1] && c[1]==c[2]-1 && c[2]==c[3]-1 && c[3]==c[4]-1 && c[0]==1)
{
for(i=0;i<4;i++) if(r==5) { *x=1; *y=d[0]; return 1;}
*x=1; *y=d[0]; return 5; // 顺子
}

if(c[0]==c[1]-1 && c[1]==c[2]-1 && c[2]==c[3]-1 && c[3]==c[4]-1)
{
for(i=0;i<4;i++) if(r==5) { *x=c[4]; *y=d[4]; return 1;}
*x=c[4]; *y=d[4]; return 5; //顺子
}

/* 四张 */
if(q[4]==1)
{
  for(i=0;i<13;i++) if(p==4) *x=i?i:13;
  return 2;
}

/* 葫芦 */
if(q[3]==1&&q[2]==1)
{
for(i=0;i<13;i++) if(p==3) *x=i?i:13;
return 3;
}

/* 同花 */
for(i=0;i<4;i++) if(r==5) {*x=i; return 4;}

/* 三条 */
if(q[3]==1)
for(i=0;i<13;i++)
  if(p==3) { *x=i?i:13; return 6;}

/* 兔胚 */
if(q[2]==2)
{
for(*x=0,i=0;i<13;i++)
  if(p==2)
  {
  if((i>1?i:i+13)>(*x==1?14:*x))
  {
  *x=i?i:13; *y=0;
  for(j=0;j<5;j++) if(a[j]==i&&b[j]>*y) *y=b[j];
  }
  }
return 7;
}

/* 胚 */  
if(q[2]==1)
for(i=0;i<13;i++)
  if(p==2)
  {
  *x=i?i:13; *y=0;
  for(j=0;j<5;j++) if(a[j]==i&&b[j]>*y) *y=b[j];
  return 8;
  }

/* 一张 */
*x=0; *y=0;
for(i=0;i<5;i++)
if((a=a?a:13>*x||a==1)&&*x!=1)
{ *x=a; *y=b;}

return 9;
}

/* a 是点数 .. b 是花色 */
tran(a,b,c)
char *a,*b,*c;
{
int i;
for(i=0;i<5;i++)
{
a=c%13;
if(!a) a=13;
}

for(i=0;i<5;i++)
b=c/13;
}

check(p,q,r,cc)
char *p,*q,*r,*cc;
{
char i;

for(i=0;i<13;i++) p=0;
for(i=0;i<5;i++) q=0;
for(i=0;i<4;i++) r=0;

for(i=0;i<5;i++)
p[cc%13]++;

for(i=0;i<13;i++)
q[p]++;

for(i=0;i<5;i++)
r[cc/13]++;
}

// 同花顺、铁枝、葫、同花、顺、三条、兔胚、胚、一只
show_style(my,cpu)
char my,cpu;
{
char *style[9]={"同花顺","四张","葫芦","同花","顺子",
        "三条","兔胚","单胚","一张"};
move(5,26); prints("%s",style[cpu-1]);
move(15,26); prints("%s",style[my-1]);
sprintf(sty,"我的牌%s..电脑的牌%s",
style[my-1],style[cpu-1]);
}



爱是啥? 爱就是你会包容她的一切!!!
献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2005-12-06 21:30 |
mnbmnb5266
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x5 鲜花 x46
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

修改程式我还是力不从心,这个我想得需要会编程的专业人员才能办到吧


我的收藏
https://pan.baidu.com/s/1QUJ9lr_VzxXKRJAlBJgUQA
提取码:am2c
献花 x0 回到顶端 [1 楼] From:加拿大Rogers | Posted:2010-08-23 22:08 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.056373 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言