任务描述:写一个游戏,小游戏,以前文曲星里发现的,名字为猜数字。首先随机用计算机生成四
个排列在一起的数,比如1234。然后会提示你输入四个数,比如说5678,这四个数有四个位置,如果有一个位置对了,
就用1A表示,有两个位置对了,就用2A表示,当然如果你四个位置都对了,那数字你就猜出来了。如果在这四个数里
面,有1个与计算机生的数相符的,就是1B表示,有两个就是2B表示。这样可能有些不好懂,看我举的例子。
例子:假如计算机生成的数为5234,提示你来猜这个数,你猜5648,这个时候,5的位置正确了,而且只有5的位置是
正确的,所以1A,而你猜的数里面,5和4是正确的数,也就是说有两个正确的数,所以提示2B这个时候,你应该输出
提示1A2B,提示玩游戏的人,继续往下猜。猜的次数超过10没猜出来,游戏结束。
麻烦给个简单和程序和配上说明啊!小弟跪谢了!....
楼主 你把QQ给我 我晚上回去给你发一个 去年课程设计我就做的这个 和你的要求一点不差 我直接把程序发给你
C语言流程如下:
初始化游戏循环
↓
→→→→→→→→ 生成随机数←← ←
↑ ↓ ↑
↑ 等待一秒
↓ ↑
↑ 删除数字序列
否 ↓ ↑
→→ → 读取用户输入
↑ ↑ ↑
否 ↓
没
猜 ↑ ↓ ↑
对 输入了三次←否←输入正确吗
的
相 ↓ ↓ ↑
同
长←←←← 是 ↑
度 ↓
随 ↑
机 是
数 ↓
换 猜对的相同长度随机数换了三次→否→↑
了
三 ↓ ↑
次
↓ 是 ↑
是 ↓ ↑
给数字序列增加一位→→
↓
结束
初始数字序列长度是两位数,要求玩家在规定的时间内输入数字(例如长度是两位是数时必须在4秒内输入,三位是6秒,每增加一位数时间增加2秒,如果不能在规定时间内输入视为输入错误),游戏结束后输出:
最后一次显示的随机数字;
游戏一共显示了多少次数字;
玩家猜了三次,猜对了多少次,总共用时是多少;
不要使用数组和指针,最好能在TC2上通过。
没时间来写符合你题目的,这个是我以前写过的一个猜数字游戏,系统会给出一个的1~99之间的随机数,你来猜,看多少次可以猜中. 你看用得上不.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
int main (int argc, char **argv)
{
int d, c;
struct timeval tv;
问题存在:
我要的是按下某个键就出现一个随机数,该数显示时间可设定(实际很短),再按一下这个键时就可以较长时间显示(直至按键显示下一个随机数为止).这些随机数最好能即时选择一位、两位、三位等等的数,还有可以选择英语单词的话就更好了,如能帮助解决,在下十分感谢!如方便的话请发qq987520@.sogou.com,谢谢
gettimeofday (&tv, NULL);
srand (tv.tv_usec);
d = rand () % 100;
printf ("Please input a number:\n");
scanf ("%d", &c);
printf ("c=%d\n", c);
int min_num = 1;
int max_num = 99;
int num=1;
while (c != d)
{
if (c > d)
{
if( c < max_num )
max_num = c;
printf ("%d - %d\n", min_num ,max_num);
}
else if (c < d)
{
if( c > min_num )
min_num = c;
printf ("%d - %d\n", min_num ,max_num);
}
else
break;
scanf ("%d", &c);
num++;
printf("c = %d \n",c);
}
printf ("it's true:%d,num=%d\n", c,num);
return 0;
}
可以给你个思路:随机生成的4位数字可以拆分为4个int 数:
int i = rand()%9000+1000;
int K =i/1000;
i =i%1000;
int M = i/100;
i=i%100;
int N = i/10;
int P = i%10;
这样的话 就把4位数就变为4个数字了;分别是 KMNP;再拿输入的数字来比较,分2次循环,第一次比较相同位置的
比如
int A=0,B=0;
int[] shuzi[] = new int[]{K,M,N,P};
int[] caize = new int[]{};//你猜测的数字分开
for(int l = 0;l<4;l++)
{
if(shuzi[i] == caize[i] )
{
A ++;//计数:正确的个数
}
for(int j =0;j<4;J++)
{
if(caize[i] == shuzi[j]
{
B++;//计数 ,出现相同的次数
continue; //跳出内循环,防止出现4444这样的情况以后 猜测为 1244 出现 2 A8B的情况
}
}
}
C语言都忘记了 只能做 C#
以上仅仅作为参考 !
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息