爱问知识人 爱问教育 医院库

50分求C语言编写24点游戏。怎么办?

首页

50分求C语言编写24点游戏。怎么办?


        

提交回答

全部答案

    2018-08-27 01:27:47
  •   "/*6。3。4 源程序*/
    #define N 20
    #define COL 100
    #define ROW 40
    #include "stdio。h"
    #include "time。
      h" /*系统(System)时间函数*/
    #include "graphics。h" /*图形函数*/
    #include "alloc。h"/*动态地址分配函数*/
    #include "stdlib。
      h" /*库函数*/
    #include "string。h" /*字符串函数*/
    #include "ctype。h" /*字符操作函数*/
    char p[4][13]={
    {'A','2','3','4','5','6','7','8','9','0','J','Q','K'},/*扑克牌,10用0来表示*/
    {'A','2','3','4','5','6','7','8','9','0','J','Q','K'},
    {'A','2','3','4','5','6','7','8','9','0','J','Q','K'},
    {'A','2','3','4','5','6','7','8','9','0','J','Q','K'}};
    typedef struct node
    {
    int data;
    struct node *link;
    }STACK1; /*栈1*/
    typedef struct node2
    {
    char data;
    struct node2 *link;
    }STACK2; /*栈2*/
    void init(void);/*图形驱动(Drive)*/
    void close(void);/*图形关掉*/
    void play(void);/*发牌的具体过程*/
    void rand1(int j);/*随机发牌函数*/
    void change(char *e,char *a); /*中缀变后缀函数*/
    int computer(char *s); /*后缀表达式计算函数*/
    STACK1 *initstack1(STACK1 *top); /*栈1初始化*/
    STACK1 *push(STACK1 *top,int x); /*栈1入栈运算*/
    STACK1 *pop(STACK1 *top); /*栈1删掉栈顶元素*/
    int topx(STACK1 *top); /*栈1读栈顶元素*/
    STACK1 *ptop(STACK1 *top,int *x); /*栈1读出栈顶元素值并删掉栈顶元素*/
    int empty(STACK1 *top); /*判栈1是不是为空函数*/
    STACK2 *initstack2(STACK2 *top); /*栈2初始化*/
    STACK2 *push2(STACK2 *top,char x); /*栈2入栈运算*/
    STACK2 *pop2(STACK2 *top); /*栈2删掉栈顶元素*/
    char topx2(STACK2 *top); /*栈2读栈顶元素*/
    STACK2 *ptop2(STACK2 *top,char *x); /*栈2读出栈顶元素值并删掉栈顶元素*/
    int empty2(STACK2 *top); /*判栈2是不是为空函数*
    int text1(char *s) ; /*显示文本*/
    main()
    {
    char s[N],s1[N],ch;
    int i,result;
    int gdriver, gmode;
    clrscr(); /*清屏*/
    init(); /*初始化函数*/
    while(1)
    {
    setbkcolor(BLACK); /*设置背景颜色*/
    cleardevice();/*清屏*/
    play(); /*发牌*/
    gotoxy(1,15); /*移动光标*/
    printf("--------------------Note------------------- ");
    printf(" Please enter Express accroding to above four number "); /*提醒信息*/
    printf(" Format as follows:2。
      *(5。 7。
      ) ");/*提醒输入字符串格式*/
    printf(" ---------------------------------------------- ");
    scanf("%s%c",s1,&ch); /*输入字符串压回车键*/
    change(s1,s); /*调出使用change函数将中缀表达式s1转换为后缀表达式s*/
    result=computer(s); /*计算后缀表达式的值,返回结果result */
    if(result==24) /*假如结果等于24*/
    text1("very good"); /*调出使用函数text1显示字符串"very good"*/
    else
    text1("wrong!!!");/*否则函数text1显示字符串"wrong!!!"*/
    printf("Continue (y/n)? "); /*提醒信息,是不是继续*/
    scanf("%c",&ch); /*输入一字符*/
    if(ch=='n'||ch=='N') /*假如该字符等于n或N*/
    break; /*跳出循环,程序结束*/
    } /*否则,开始下一轮循环*/
    close();
    return; /*返回*/
    }
    void rand1(int j)/*随机发牌函数*/
    {
    int kind,num;
    char str[3],n;
    randomize();
    while(1)/*循环直到有牌发*/
    {
    kind=random(4); /*花色随机数*/
    num=random(13); /*大小随机数*/
    if(p[kind][num]!=-1) /*该数未取过*/
    {
    n=p[kind][num]; /*取相应位置的扑克牌数*/
    p[kind][num]=-1; /*牌发好以后相应位置的元素置-1*/
    break;
    }
    }
    switch(kind)/*花式的判别*/
    {
    case 0:setcolor(RED);sprintf(str,"%c",3);break; /*红桃*/
    case 1:setcolor(BLACK);sprintf(str,"%c",3);break; /*黑桃*/
    case 2:setcolor(RED);sprintf(str,"%c",4);break; /*方片*/
    case 3:setcolor(BLACK);sprintf(str,"%c",5);break; /*草花*/
    }
    settextstyle(0,0,2);
    outtextxy(COL j*100-30,ROW 100-46,str);/*显示左上角花色*/
    outtextxy(COL j*100 16,ROW 100 32,str); /*显示右下角花色*/
    if(n!='0')/*输出其他牌*/
    {
    settextstyle(0,0,3);
    sprintf(str,"%c",n);
    outtextxy(COL j*100-5,ROW 100-5,str);/*显示牌的大小*/
    }
    else/*输出10的时候*/
    {
    sprintf(str,"%d",10);
    outtextxy(COL j*100-6,ROW 100-5,str);
    }
    }
    void play(void)/*发牌的具体过程*/
    {
    int j;
    for(j=0;jdata=x; /*保存值x到新空间*/
    p->link=top; /*新结点的后继为当前栈顶指针*/
    top=p; /*新的栈顶指针为新插入的结点*/
    return top; /*返回栈顶指针*/
    }
    STACK1 *pop(STACK1 *top) /*出栈*/
    {
    STACK1 *q; /*定义临时变量*/
    q=top; /*保存当前栈顶指针*/
    top=top->link; /*栈顶指针后移*/
    free(q); /*释放q*/
    return top; /*返回栈顶指针*/
    }
    int topx(STACK1 *top) /*读栈顶元素*/
    {
    if(top==NULL) /*栈是不是为空*/
    {
    printf("Stack is null "); /*显示栈为空信息*/
    return 0; /*返回整数0*/
    }
    return top->data; /*返回栈顶元素*/
    }
    STACK1 *ptop(STACK1 *top,int *x) /*取栈顶元素,并删掉栈顶元素*/
    {
    *x=topx(top); /*读栈顶元素*/
    top=pop(top); /*删掉栈顶元素*/
    return top; /*返回栈顶指针*/
    }
    int empty(STACK1 *top) /*判栈是不是为空*/
    {
    if(top==NULL) /*假如为空*/
    return 1; /*返回1*/
    else
    return 0; /*否则返回0*/
    }
    STACK2 *initstack2(STACK2 *top) /*初始化*/
    {
    top=NULL; /*栈顶指针置为空*/
    return top; /*返回栈顶指针*/
    }
    STACK2 *push2(STACK2 *top,char x) /*入栈函数*/
    {
    STACK2 *p; /*临时指针类型为STACK2*/
    p=(STACK2 *)malloc(sizeof(STACK2)); /*申请STACK2大小的空间*/
    if(p==NULL) /*假如p为空*/
    {
    printf("memory is overflow !!"); /*显示内存溢出*/
    exit(0); /*退出*/
    }
    p->data=x; /*保存值x到新空间*/
    p->link=top; /*新结点的后继为当前栈顶指针*/
    top=p; /*新的栈顶指针为新插入的结点*/
    return top; /*返回栈顶指针*/
    }
    STACK2 *pop2(STACK2 *top) /*出栈*/
    {
    STACK2 *q; /*定义临时变量*/
    q=top; /*保存当前栈顶指针*/
    top=top->link; /*栈顶指针后移*/
    free(q); /*释放q*/
    return top; /*返回栈顶指针*/
    }
    char topx2(STACK2 *top) /*读栈顶元素*/
    {
    if(top==NULL) /*栈是不是为空*/
    {
    printf("Stack is null "); /*显示栈为空信息*/
    return ''; /*返回空字符*/
    }
    return top->data; /*返回栈顶元素*/
    }
    STACK2 *ptop2(STACK2 *top,char *x) /*取栈顶元素,并删掉栈顶元素*/
    {
    *x=topx2(top); /*读栈顶元素*/
    top=pop2(top); /*删掉栈顶元素*/
    return top; /*返回栈顶指针*/
    }
    int empty2(STACK2 *top) /*判栈是不是为空*/
    {
    if(top==NULL) /*假如为空*/
    return 1; /*返回1*/
    else
    return 0; /*否则返回0*/
    }
    int text1(char *s)
    {
    setbkcolor(BLUE); /*设置背景颜色为蓝色*/
    cleardevice(); /*清理屏幕*/
    setcolor(12); /*设置文本颜色为淡红色*/
    settextstyle(1, 0, 8);/*三重笔划字体, 放大8倍*/
    outtextxy(120, 120, s); /*输出字符串s*/
    setusercharsize(2, 1, 4, 1);/*水平放大2倍, 垂直放大4倍*/
    setcolor(15); /*设置文本颜色为*白色/
    settextstyle(3, 0, 5); /*无衬字笔划, 放大5倍*/
    outtextxy(220, 220, s); /*输出字符串s*/
    getch(); /*键盘(keyboard)输入任一字符*/
    return ; /*返回*/
    }"。

    嫒***

    2018-08-27 01:27:47

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 173-192
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):