| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2742 人关注过本帖
标题:最近一直想用C编一个石头剪子布的游戏,高手请进。
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你都不查随机数产生器的资料乱想什么呢

授人以渔,不授人以鱼。
2011-11-12 15:45
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
收藏
得分:0 
回复 21楼 TonyDeng
随机数产生器的资料?
好的!
2011-11-12 15:57
恶人打劫
Rank: 2
等 级:论坛游民
帖 子:14
专家分:39
注 册:2011-5-17
收藏
得分:0 
用随机函数再次随机函数一个嵌套,这样可以实现几率不同。
2011-11-12 16:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
给你MSDN的例子:

程序代码:
// crt_rand.c
// This program seeds the random-number generator
// with the time, then exercises the rand function.
//

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void SimpleRandDemo( int n )
{
   // Print n random numbers.
   int i;
   for( i = 0; i < n; i++ )
      printf( "  %6d\n", rand() );
}

void RangedRandDemo( int range_min, int range_max, int n )
{
   // Generate random numbers in the half-closed interval
   // [range_min, range_max). In other words,
   // range_min <= random number < range_max
   int i;
   for ( i = 0; i < n; i++ )
   {
      int u = (double)rand() / (RAND_MAX + 1) * (range_max - range_min)
            + range_min;
      printf( "  %6d\n", u);
   }
}

int main( void )
{
   // Seed the random-number generator with the current time so that
   // the numbers will be different every time we run.
   srand( (unsigned)time( NULL ) );

   SimpleRandDemo( 10 );
   printf("\n");
   RangedRandDemo( -100, 100, 10 );
}

授人以渔,不授人以鱼。
2011-11-12 16:22
编程小小员
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-11-10
收藏
得分:0 
回复 24楼 TonyDeng
嗯,虽然一直想自己弄出来,我先不看,实在不会再看。
非常感谢。
2011-11-12 16:52
凌风一指
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:26
专家分:181
注 册:2011-11-9
收藏
得分:0 
相信我吧,这个是可以实现的!
我说一下,大概的思路啊!
首先涉及到了随机函数,所以得包含到随机函数头文件stdlib.h,利用里面的两个函数rand()和srand(),让电脑产生随机数0(约定为石头),1(约定为剪子),2(剪子)。
然后每次接受一个你手动输入的数字,进行比较。

比较的实现发放很多,可以利用switch()语句把所有的情况都写出来;或者利用if()语句,先判断两者是否一样,若一样的话,就直接输出结果,平局,然后再逐个进行if()语句的判断。可以再外层上加一个while()语句,保证知道比出胜负才结束(就是另加一个标记符,来判断是否已经比出胜负)。
2011-11-13 10:24
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:0 
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
    int type,i;   
    srand(time(NULL));
    type=rand()%3+1;
    printf("输入(1.石头 2.剪刀 3.布)");
    scanf("%d",&i);
    if(i==type)
        printf("电脑:%d 平局\n",type);
    else if(i-type==-1)
        printf("电脑:%d 你赢了\n",type);
    else if(type-i==-1)
        printf("电脑:%d 电脑赢了\n",type);
    else if(i-type==-2)
        printf("电脑:%d 电脑赢了\n",type);
    else if(type-i==-2)
        printf("电脑:%d 你赢了\n",type);
    return 0;

}
2011-11-13 20:59
小先生
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2011-11-4
收藏
得分:0 
概率问题好像也可以啊  设定四种情况吗  其中两种为剪刀的话  剪刀的概率应该可以高点  但要具体的概率  就不能用随机数喽
2011-11-13 21:48
gjzherbert
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-23
收藏
得分:0 
还可以回复么?
2013-04-23 12:14
gjzherbert
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-23
收藏
得分:0 
其实这个问题很简单的。。。
2013-04-23 12:14
快速回复:最近一直想用C编一个石头剪子布的游戏,高手请进。
数据加载中...
 
   



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

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