Сейчас уже разобрался со случайными числами, почти...
Во первых, имперически выяснил, что int rand(), не возвращает отрицательных значений. Соответственно, возможный диапазон 0-32767.
Собственно, случайное расположение кораблей ЦПУ я делаю примерно так:
int Randomize9() {
int r=rand();
if (r>0 && r<=3500) r=1;
if (r>3500 && r<=7000) r=2;
if (r>7000 && r<=10500) r=3;
if (r>10500 && r<=14000) r=4;
if (r>14000 && r<=17500) r=5;
if (r>17500 && r<=21000) r=6;
if (r>21000 && r<=24500) r=7;
if (r>24500 && r<=28000) r=8;
if (r>28000 && r<=31500) r=9;
if (r>31500) r=0;
return r;
}
int ThrowCoin() {
int r=rand();
if (r>16383) return 1; else return 0;
}
void DefineCPUShips() {
int cntx, cnty;
int px,py, cnt;
int isOK=0;
int deck=4, Left=1;
int direction=0;
while (!isOK) {
px=Randomize9();
py=Randomize9();
direction=ThrowCoin();
if (!direction && px<=6 || direction && py<=6) isOK=1;
}
for (cnt=0; cnt<3; cnt++) if (!direction) fieldCPU[px+cnt][py]=1;
else fieldCPU[px][py+cnt]=1;
RepaintGrid(CPU);
}
Fur die freiheit zu kampfen um jeden preis
|