Предмет: Информатика, автор: NyashkaYbivashka

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



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



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



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



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

Ответы

Автор ответа: Gleb1Kosyrev
0
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.  
Автор ответа: Gleb1Kosyrev
0
В правом углу? Автор задачи - тот ещё мазохист.
Похожие вопросы
Предмет: История, автор: nadezhdaaa2810