所以我试图用C ++编写一个数字游戏的猜测。计算机假定采用4位数的随机数,然后玩家也应该输入一个数字。规则是: 如果电脑选择:1234 玩家输入:1356 1必须显示为绿色,3必须为黄色,因为它在错误的地方,5和6为红色。游戏继续,直到玩家得到正确的答案。
#include<iostream>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include<unistd.h>
using namespace std;
int main()
{
int b;
HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
cout<<"System is now generating a number...."<<"\n";
int *Number = new int[4];
srand (time(NULL));
for(int counter=0;counter<4;)
{
Number[counter]=(rand()%9)+1;
if(Number[counter]!=Number[counter-1]&Number[counter]!=Number[counter-2]
2]&Number[counter]!=Number[counter-3])
{
counter ++;
}
else
{
counter--;
}
}
cout<<Number[0]<<Number[1]<<Number[2]<<Number[3]<<"\n";
int *Guess=new int[4];
cout<<"please enter 4 digits for your number"<<"\n";
for(int counterG=0;counterG<4;counterG++) //line 34
{
cin>>Guess[counterG];
for(int counter;counter<4&counter>0;)
{
if((counter=counterG)&(Guess[counterG]=Number[counter])) //line 40
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,10);
cout<<b<<"\n";
}
if((counter=counterG)&(Guess[counterG]==Number[counter- 1]|Guess[counterG]==Number[counter+1]|Guess[counterG]==Number[counter-2]|Guess[counterG]==Number[counter+2]))
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,14);
cout<<b<<"\n";
}
else
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,12);
cout<<b<<"\n";
}
}
}
现在程序没有问题直到第34行,但之后没有任何事情发生! It just gets the player digits 如果你能告诉我我做错了什么,我会很高兴的
答案 0 :(得分:0)
不是一个完整的答案,但评论的时间太长了:
if(Number[counter]!=Number[counter-1]&Number[counter]!=Number[counter-2]
2]&Number[counter]!=Number[counter-3])
这一行单独包含很多错误:
&&
,而不是&
。2]
。我希望你在写这个问题时只是一个错字。counter
为0.当您尝试访问Number[counter-3]
时会发生什么?它是一个超出界限的访问,导致未定义的行为,这可能导致任何事情。可能还有更多。
现在该怎么做:
答案 1 :(得分:-1)
1-替换&amp;与&amp;&amp;(AND运算符)
2-在一个简单的整数变量中输入,然后通过首先检查大于0且小于9999的数字来验证该数字。
3-然后从这个变量中分离数字,然后将这些数字分配给aaray索引。