• Напишите программу, решающую следующую задачу. В верхнем правом углу стандартного графического окна, линиями рисуется квадратное игровое поле размером 10X10 ячеек. Размер квадратной ячейки задается в программе константой и имеет размер 30X30 пикселей (см. рисунок ниже). Компьютер, используя датчик случайных чисел, загадывает два числа в диапазоне от 1 до 10. Первое число — номер горизонтали игрового поля, второе — номер вертикали игрового поля. Таким образом, компьютер загадывает ячейку, которая располагается на пресечении горизонтали и вертикали. Пользователь с 10 попыток должен отыскать загаданную компьютером ячейку. Для этого он вводит с клавиатуры два целых числа номер по горизонтали и номер по вертикали ячейки.



    Если номера горизонталей и номера вертикалей не совпадают, то в ячейке, указанной пользователем, рисуется перечеркнутый квадрат (см. рисунок ниже).



    Если номера горизонталей или номера вертикалей совпадают, то в ячейке, указанной пользователем, рисуется синий квадрат (см. рисунок ниже).



    Если номера горизонталей и номера вертикалей совпадают, то в ячейке, указанной пользователем, рисуется красный квадрат (см. рисунок ниже), выводится сообщение: «Ты выиграл!», и на этом программа завершается.



    Если же пользователю не удается с 10 попыток определить положение загаданной компьютером ячейки, то выводится сообщение: «Ты проиграл!», в ячейке, загаданной компьютером, рисуется красный квадрат, и на этом программа завершается.

Ответы 2

  • В правом углу? Автор задачи - тот ещё мазохист.
  • uses GraphABC;const  a=30;var xt,yt,x,y,i,j,t,xl,yl:integer;procedure cross(x,y,a:integer);begin;setpencolor(clred);line(x,y,x-a,y+a);line(x-a,y,x,y+a);setpencolor(clblack);end;begin;randomize;x:=windowwidth-300;y:=0;for i:=1 to 10 do begin;  for j:=1 to 10 do   begin;    rectangle(x,y,x+a,y+a);    x+=a;   end;  y+=a;  x:=windowwidth-300; end;x:=random(1,10);y:=random(1,10);t:=0;while t<>10 do begin;  readln(xt);  readln(yt);   if (xt<>x) and (yt<>y) then    begin;     xl:=windowwidth+xt*30-300;     yl:=300-yt*30;       cross(xl,yl,a);     inc(t);    end;   if (xt=x) or (yt=y) then    begin;     xl:=windowwidth+xt*30-305;     yl:=300-yt*30+4;      floodfill(xl,yl,clBlue);     inc(t);    end;   if (xt=x) and (yt=y) then    begin;     xl:=windowwidth+xt*30-305;     yl:=300-yt*30+4;      floodfill(xl,yl,clRed);       writeln('Ты выиграл!');        break;    end; end;if t=10 then begin;  writeln('Ты проиграл!');   xl:=windowwidth+x*30-305;   yl:=300-y*30+4;   floodfill(xl,yl,clRed); end;end.  
    • Автор:

      roland
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years