本节内容
写一个猜数小demo。游戏规则:系统会随机产生四个互不相同且已经从小到大排好序的数字。首先玩家输入,如果数字和位置都正确的话,系统就会提示A,如果只有数字正确但位置不正确的话,系统就会提示B。玩家可以根据A和B的个数来推测正确答案,直到游戏结束。
首先我们需要产生四个不同的随机数,这个我们在前面的文章已经做过详细的介绍,这里就不再过多的解释啦。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int org[4]={};
srand(time(NULL));
for(int i=0;i<4;i++){
int temp=rand()%9+1;
if(i==0){
org[i]=temp;
}else{
int j=0;
for(;j<i;j++){
if(temp==org[j]){
break;
}
}
if(i==j){
org[i]=temp;
}else{
i--;
}
}
}
产生了四个随机数以后,我们需要让它们从小到大排好序。我们可以选用上一篇文章介绍的三种排序方式中的一种。在这我们就用冒泡排序好了。
for(int i=0;i<3;i++){
for(int j=0;j<3-i;j++){
if(org[j]>org[j+1]){
int temp=org[j];
org[j]=org[j+1];
org[j+1]=temp;
}
}
}
在提示玩家输入前,我们需要定义一个数组来接收玩家的输入。同时还需要定义两个变量来接收A和B的个数;
int input[4]={};
int acount;
int bcount;
接收了玩家的输入后,我们就要和标答进行判断。首先我们先判断数值是否正确,再判断位置是否正确。在每次判断结束后我们就要立即将结果告知玩家,如果acount=4,我们就得结束游戏,break一下。否则就得把acount和bcount清零。
while(1){
printf("请输入猜测的数字:");
for(int i=0;i<4;i++){
scanf("%d",&input[i]);
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(org[i]==input[j]){
if(i==j){//判断位置
acount++;
}else{
bcount++;
}
}
}
}
printf("%dA%dB\n",acount,bcount);
if(acount==4){
printf("全对!!!!\n");
break;
}else{
acount=0;
bcount=0;
}
}
return 0;
}
以上就是我们今天全部的代码量啦,看完之后有没有手痒痒想要立刻在电脑上把这段代码敲起来呢?那还等什么,赶紧行动起来吧!