| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 821 人关注过本帖
标题:编一个游戏时候的问题,达人速进。
只看楼主 加入收藏
ddmcvc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
编一个游戏时候的问题,达人速进。
编一个游戏的时候遇到了困难
游戏是自己在0-9这10个数里取4个数,让计算机来猜.
首先,电脑在屏幕上出现4个数字

然后 你告诉电脑有几个数字是正确的并且是在正确的位置上,有几个数字是猜中了但是不在正确的位子上。(就像我们玩过的宾果游戏,但是是反过来的)

向计算机输入xAxB,A代表都正确,B代表数字对位置不对(如1A1B就是1个数字全对,一个数字对位置不对)

最后,问题来了!!,要求计算机在8次内得出结果。

我本来觉得就是先随机生成4数,先比较数字,然后再比较位置的套循环问题。

但问题是不知道如何让计算机更智能的去再选择数字,导致无法保证在8次内完成。现在来看8次其实也不一定是最完美的。但如果用排列组合肯定不止8次,或者说有很大概率不止8次。

哪位高手能解决这个问题么?我不求最完美的数学模型,能保证控制在8次就行。(文区星上那个游戏是9次,看来是很不严谨的,小时候居然还经常玩不过去,汗)

能给出思路就好,编起来应该不难,当然直接写出来更好了,可以直接判断了。谢谢了!!
搜索更多相关主题的帖子: 游戏 
2009-09-27 15:14
chiglish
Rank: 2
等 级:论坛游民
帖 子:5
专家分:33
注 册:2009-9-26
收藏
得分:5 
可能我的理解力有点低,没看明白,你大概要问什么?是要问怎么选数字》还是在8次内算出来?还是不让8次算出来?
2009-09-27 20:21
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:5 
这是《猜数字》游戏,也挺有意思,我用VB写过这游戏,下次用C也写一个,带图形的,不带图形的应该简单。
思路:让电脑随机产生一个0~9的数,随机四次,每次产生随机数不能于前面的相同,生成完成四个随机数后,就获取你任意输入0~9的四个数,这四个也不可重复,然后把获取的这四个数与产生的四个数进行比较,有几个位置的就输出几个A,有几个数字在里面的就输出几个B。获取四个数跟输出结果循环八次,我们就对每次输入的数和给出的结果来判断随机产生的四个数到底是哪四个数,只要你在八次内输入的四个数跟随机的四个数比对一至,就显示你过关。
这游戏有时我不用几次就可以猜出随机数是什么了。这游戏可以动手写写,还满有意思的。
·
·
VB写的,试玩一下。
猜数字8.rar (125.78 KB)


[ 本帖最后由 UserYuH 于 2009-9-28 00:54 编辑 ]

努力—前进—变老—退休—入土
2009-09-27 21:38
ddmcvc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-27
收藏
得分:0 
回复 3楼 UserYuH
可能是我写的不太清楚,我这个猜数字游戏和你写的那个是反过来的。 是我自己想4个数字然后让电脑来猜。我们来判断对错,要在8次以内让电脑猜出来,随即生成数字和对比对错都很简单。难就难在如何让电脑去根据结果再次选择数次,从而保持在8次内
2009-09-28 01:33
ddmcvc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-27
收藏
得分:0 
回复 2楼 chiglish
就是如何在8次内算出来,我做的算法没法保证电脑8次内回出现正确的结果
2009-09-28 01:34
ddmcvc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-27
收藏
得分:0 
则么没人了阿.....是我说的不清楚嘛?我在线等!!不清楚的可以问我,很急啊~
2009-09-28 10:27
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
基本上明白你的意思了,但我们也得想呀。先看看自己能不能保证8次内玩出结果,然后再找找规律。有方法了,就好编了其实。
2009-09-28 10:49
ddmcvc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-27
收藏
得分:0 
回复 7楼 pangding
总算有人理了...我想了阿,其实我有些方法能基本保证8次内出结果。但还是有可能出不来。并且没有数学做基础,单纯的用随即的方法来找每个位置上的数。
希望哪位大神能给出完美的结果,可能这种游戏需要的限度最小也不是8次呢。7次是不是也有可能做到呢?
2009-09-28 11:26
lazycat88
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2009-9-28
收藏
得分:5 
回复 楼主 ddmcvc
在网上找到的一些资料
http://www.
http://realfun.
谷歌搜“猜数 信息量”
希望能有用


你的肯定是我的动力
2009-09-28 11:46
lazycat88
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2009-9-28
收藏
得分:0 
回复 楼主 ddmcvc
不知道你还需不需要,我做了一个,随便测试了几次,还是可以在8次内出结果的。
这个程序不是最优的,但还能用,提供思路也行。如有错误,欢迎指出。
使用dev-c++编译,里面有完整的工程文件,不过其实源码也就是一个文件就搞定了。

贪心法猜数字完成版.rar (11.02 KB)


思路在上面我说的资料里有,我写的时候整理了一下,如下

          函数

生成所有组合

接收用户的输入、反馈

比较两个组合,得到aAbB

比较a1Ab1B和a2Ab2B是否相等

计算标准差

获得最小标准差,即为寻找下一个集合


           过程

给出一个数test,接受用户的输入,即xAyB
将此数test与剩下来的所有的组合比较、匹配,看是否满足xAyB,删除不满足条件的组合

在剩下的组合中,
选择一个组合,与其他剩下的组合比较匹配,统计得到的不同xAyB的次数
若xAyB的所有可能出现的机会最为均等,则区分度较大,即最小标准差
遍历剩下的所有组合,找出区分度最大的组合



           数据格式

一个数组,存储所有的组合,有标记位,标记是否“被删除”
一个数组,对应所有组合的xAyB统计数据
一个数组,对应所有组合的标准差
一个数组,存储用户输入

一个数组,存储猜测的数字


你的肯定是我的动力
2009-09-30 08:09
快速回复:编一个游戏时候的问题,达人速进。
数据加载中...
 
   



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

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