LOCATE M, 35: PRINT
m3:
LOCATE M, 35: PRINT "-"
LOCATE M, 37: INPUT В
IF (B<1) OR (B>A(J-1J) THEN GOTO m3
A(J-1)=A(J-1)-B SLEEP
PRINTXOD 2, "Вы победили"
END SUB
Программа 4_11.c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void print_xod(int color,char *msg);
void start(void);
void user(void);
void computer(void);
#define N 5
#define Q 12
int i,j,k,b,s,m=l;
int a[N];
main() {
start(); ml:
user () ;
computer() ;
goto ml; }
void start(void) {
clrscr();
randomize();
k=random(N-3)+3; /* число кучек */
for(i=0; i<k; i++)
a[i]=random(Q)+1;
print_xod(RED,"Начало игры"); }
void user(void) {
textcolor(GREEN);
gotoxy(20,m-l); cprintf("Ваш ход (кучка - сколько берем):");
m2:
gotoxy(33,m);
cprintf(" ") ;
gotoxy(33,m);
scanf("%d",&j);
if((j<l) || (j>k) || (a[j-l]=0)) goto ra2;
m3:
gotoxy(35,m); cprintf("- ") ;
gotoxy(37,m); scanf("%d",&b);
if((b<l) || (b>a[j-l])) goto m3;
a[j-l]-=b;
print_xod(GREEN,"Вы победили");
return; }
void computer(void) {
for(s=0, i=0; i<k; i++)
s ^= a[i];
if(s==0) {
for(i=l,j=0,s=a[0]; i<k; i++)
if(s<a[i]) {s=a[i]; j=i;} b=l; }
else
for(j=0; j<k; j++)
(b=a[j]-(a[j]"s);
if(b>=0) break;}
a[j]-=b;
print_xod(RED,"Победил компьютер");
return; }
void print_xod(int color,char *msg) (
textcolor(color);
for(i=0; i<k; i++)
gotoxy(3*i+l,m) ;
cprintf("%3d",a[i]);}
m++;
if(m>23)
{
m=2;
clrscr();
print_xod( color, msg) ;
}
for(j=0,s=0; j<k; j++)
s+=a[j];
if(s!=0) return;
gotoxy(l,m);
cprintf("%s",msg);
getch();
exit(0); }
Программа 4_11.pas
program nim; uses Crt; const
n=5; q=12; var
i,j,k,b,s,m:integer; a:array [l..n] of byte; label ml;
procedure print_xod(color:integer);
begin textcolor(color);
for i:=l to k do begin
gotoxy(3*i,m);
write(a[i]:2);
Содержание Назад Вперед