不知道到底是哪错了?
以下是小弟照书(PDF不是很清楚)编的一个猜数字的小游戏,对于文本属性的一些问题还是不大明白,比如像textattr的用法,请大家帮忙看看哪有错误!
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
void main(void)
{
int answer[4],guess=0,a,b,times=0,i,j; /*定义数组answer[4]用来放答案,guess用来放玩家所猜出的数,位置和数字都对的用A来表示,只是数字对的用B表示*/
clrscr();
for (i=0;i<=3;i++)
{
randomize(); /*随机数发生器*/
answer[i]=rand()%10; /*这句就有些不明白了,请达人详解*/
for (j=0;j<i;j++)
{
while (answer[i]==answer[j])
{
answer[i]=rand()%10;
j=-1;
}
}
}
window (0,0,40,11)
textattr (YELLOW+(green<<4)); /*这就是最不明白的地方了*/
cprintf ("please guess\n");
while (a!=4) /*从这里开始进入猜数和答案的对比循环*/
{
a=0;
b=0;
times++;
do /*为什么要用DO循环??*/
{
window (10,0,40,21);
cprintf ("\r%d",times);
cscanf ("%d",&guess);
if (guess==0)
exit (0);
}
while (guess<0||guess>9999);
for (i=3;i>-1;i--)
{
for (j=0;j<4;j++)
{
if ((int)(guess/pow10(i)==answer[j]) /*开始比较最高位的数是否和答案一样*/
{
if (i+j=3) a=a+1;
else b=b+1;
}
}
guess=guess-(int)(guess/pow10(i))*pow10(i); /*去掉上次比较的那一位数,进入下一位比较*/
}
window (20,0,40,31);
cprintf ("\n\r% %dA%dB\n",a,b); /*最后输出是_A_B*/
}
}