| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 921 人关注过本帖
标题:石头剪子布的游戏,遇到问题,求解答。
只看楼主 加入收藏
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
石头剪子布的游戏,遇到问题,求解答。
不知道为什么只出现no winner,是不是我的rand函数用的不对?代码如下
#include   <stdlib.h>
#include   <stdio.h>
#include   <time.h>
int main(void)
{
       int a,b;
       time_t t;
       for(;;)                  
       {
           srand((unsigned) time(&t));
        printf( "0=石头,1=剪刀,2=布。 \n");
        scanf("%d",&a);
        b=rand()%3;
        if(b=0)
           {
              if(a=0)printf("no winner");
           else if(a=1)printf("you are lose");
           else if(a=2)printf("you are win");
           else printf("errors");
           }
        else if(b=1)
          {
             if(a=1)printf("no winner");
          else if(a=2)printf("you are lose");
          else if(a=0)printf("you are win");
          else printf("errors");
          }
        else if(b=2)
          {
             if(a=2)printf("no winner");
          else if(a=0)printf("you are lose");
          else if(a=1)printf("you are win");
          else printf("errors");
          }     
      
       }
       return 0;
}
搜索更多相关主题的帖子: 游戏 include 
2011-11-17 20:41
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
1.srand()只用一次就行了!
2.建议改用switch语句

★★★★★为人民服务★★★★★
2011-11-17 20:50
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
收藏
得分:0 
回复 2楼 cnfarer
问题还是没有解决,只出现no winner情况。
2011-11-17 20:56
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
比较是否相等用"=="

★★★★★为人民服务★★★★★
2011-11-17 20:59
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
比较是否相等用"==",用switch就可以避免这个问题了

★★★★★为人民服务★★★★★
2011-11-17 20:59
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
收藏
得分:0 
回复 5楼 cnfarer
对哦!这么简单的问题都没有发现!谢谢版主了!
2011-11-17 21:01
qq472953586
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-11-18
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
main()
{
  int d,x,i;
  int a=0;
  while(a==0)
  {
  printf("请输入:1是剪刀,2是石头,3是布,4停止游戏,一轮结束后按回车继续游戏");
  scanf("%d",&d);
  srand(time(NULL));
  x=rand()%3+1;
  if((d==1)||(d==2)||(d==3))
    {
     if((d==1)&&(x==1)) printf("双方剪刀,平局\n");
     if((d==2)&&(x==2)) printf("双方石头,平局\n");
     if((d==3)&&(x==3)) printf("双方布,平局\n");
     if((d==1)&&(x==2)) printf("玩家剪刀,电脑石头,电脑赢\n");
     if((d==1)&&(x==3)) printf("玩家剪刀,电脑布,玩家赢\n");
     if((d==2)&&(x==1)) printf("玩家石头,电脑剪刀,玩家赢\n");
     if((d==2)&&(x==3)) printf("玩家石头,电脑布,电脑赢\n");
     if((d==3)&&(x==1)) printf("玩家布,电脑剪刀,电脑赢\n");
     if((d==3)&&(x==2)) printf("玩家布,电脑石头,玩家赢\n");
  }
  else if(d==4) a=1;
  else printf("你的输入有错\n");
  getch();
  }
  }
用中文环境运行额~
2011-11-18 13:47
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
收藏
得分:0 
石头剪子布搞定了!并且实现了可更改嬴的概率。非常感谢tony和cnfarer!

#include   
#include   
#include   
int main(void)
{
       int a,b,n=50,i=0,j=0,k=0,x=9527;       //输入9527进入更改系统
       int change(int n);
       time_t t;
       srand((unsigned) time(&t));
       end:;  
       printf("石头剪子布游戏!\n");
       for(;;)                  
       {
        printf( "0=石头,1=剪刀,2=布。 \n");      
        scanf("%d",&a);
        system("cls");
        b=rand()%130;
        if(a==x) {n=change(n);a=1;i=0;j=0;k=0;goto end;}   //goto end  当修改完后就可以回到游戏,从新开始!
        if(b>=0&&b<=n)
           {
           if(a==0){printf("石头 对 剪刀\nyou are win\n");k++;}
           else if(a==1){printf("剪刀 对 布\nyou are win\n");k++;}
           else if(a==2){printf("布 对 石头\nyou are win\n");k++;}
           else printf("输入有误,请重新输入\n\n");           
           }
           
        else if(b>=n+1&&b<=100)
          {
          if(a==1){printf("剪刀 对 石头\nyou are lose\n");j++;}
          else if(a==2){printf("布 对 剪刀\nyou are lose\n");j++;}
          else if(a==0){printf("石头 对 布\nyou are lose\n");j++;}
          else printf("输入有误,请重新输入\n\n");
          }
        else if(b>=101)
          {
          if(a==2){printf("布 对 布\nno winner\n");i++;}
          else if(a==0){printf("石头 对 石头\nno winner\n");i++;}
          else if(a==1){printf("剪刀 对 剪刀\nno winner\n");i++;}
          else printf("输入有误,请重新输入\n\n");
          }     
       printf("共嬴%d盘,共输%d盘,共和%d盘。\n\n\n",k,j,i);
       }
       return 0;
}

int change(int z)
{int a;
    system("cls");
    printf("请输入您要更改嬴的概率。(如赢的概率为70%%,则输入70即可)。\n");
    scanf("%d",&a);
    z=a;
    system("cls");
    return z;
}
2011-11-24 00:51
快速回复:石头剪子布的游戏,遇到问题,求解答。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036474 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved