Помощь - Поиск - Пользователи - Календарь
Полная версия: Кроссворд
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
barlog
По строкам дали задание сделать кроссворд.
Вот один из них.
uses crt;
type vect=array [1..7,1..8] of string;
var i,j,c,v:integer;
x,y:vect;k:char;
begin
x[1,2]:='в';x[2,2]:='о';x[3,2]:='з';x[4,2]:='г';x[5,2]:='л';x[6,2]:='а';x[7,2]:='с';
x[1,4]:='л';x[2,4]:='а';x[3,4]:='т';x[5,4]:='ы';
x[6,5]:='а';x[7,5]:='с';
x[1,6]:='н';x[2,6]:='о';x[3,6]:='т';x[4,6]:='а';
x[1,8]:='с';x[2,8]:='п';x[3,8]:='е';x[4,8]:='к';x[5,8]:='т';x[6,8]:='р';
x[1,3]:='и';x[1,5]:='ь';x[1,7]:='ю';
x[3,1]:='д';x[3,3]:='о';
x[6,3]:='т';x[6,4]:='л';x[6,6]:='с';
clrscr;
c:=2;v:=2;
textcolor(green);
writeln('    ЪДї        ');
writeln('    і і        ');
writeln('ЪДВДЕДЕДВДВДВДї');
writeln('і і і і і і і і');
writeln('ГДЕДЕДЕДБДЕДЕДЩ');
writeln('і і і і   і і  ');
writeln('ГДЕДЕДЕДї ГДґ  ');
writeln('і і і і і і і  ');
writeln('ГДЕДБДБДЩ ГДЕДї');
writeln('і і       і і і');
writeln('ГДЕДВДВДї ГДЕДЩ');
writeln('і і і і і і і  ');
writeln('ГДЕДБДБДЩ АДЩ  ');
writeln('і і            ');
writeln('ГДЕДВДВДВДВДї  ');
writeln('і і і і і і і  ');
writeln('АДБДБДБДБДБДЩ  ');
gotoxy(c,v);
repeat
  gotoxy(c,v);
  k:=readkey;
case k of
 #72: begin v:=v-2;gotoxy(c,v);end;
 #75: begin c:=c-2;gotoxy(c,v);end;
 #77: begin c:=c+2;gotoxy(c,v);end;
 #80: begin v:=v+2;gotoxy(c,v);end;
 #13: begin i:=c div 2;j:=v div 2; readln(y[i,j]);gotoxy(c,v);end;
 #59: begin for i:=1 to 7 do
            for j:=1 to 8 do
            if (y[i,j]<>' ')and(y[i,j]<>x[i,j]) then
                                                begin
                                                textcolor(red);
                                                gotoxy(i*2,j*2);write(y[i,j]);
                                                gotoxy(i*2,j*2);
                                                textcolor(green);
                                                end;
      end;
 end;
 gotoxy(20,15);writeln('                                                   ');
  gotoxy(20,10);writeln('                                                   ');

 if (c>1)and(c<15)and(v=4)then begin gotoxy(20,10);writeln('восклицание');gotoxy(c,v);end;
 if (c>1)and(c<13)and(v=16)then begin gotoxy(20,10);writeln('цвета радуги по сути');gotoxy(c,v);end;
 if (c>1)and(c<9)and(v=8)then begin gotoxy(20,10);writeln('одежда рыцаря');gotoxy(c,v);end;
 if (c>1)and(c<9)and(v=12)then begin gotoxy(20,10);writeln('музыкальный знак');gotoxy(c,v);end;
 if (c>11)and(c<15)and(v=10)then begin gotoxy(20,10);writeln('профессионал');gotoxy(c,v);end;
 if (v>2)and(v<17)and(c=2)then begin gotoxy(20,15);writeln('столица Литвы');gotoxy(c,v);end;
 if (v>1)and(v<9)and(c=6)then begin gotoxy(20,15);writeln('укрепленная огневая точка');gotoxy(c,v);end;
 if (v>2)and(v<13)and(c=12)then begin gotoxy(20,15);writeln('книга карт');gotoxy(c,v);end;
until readkey=#27;
clrscr;
gotoxy(20,15);
writeln('Спасибо за просмотр программы');
readln;
end.


Чё то в глючный какой-то. Не всегда работает как надо.
Хотел переделать вот в такой
uses crt;
type vect=array [1..18,1..24] of string;
var i,j,c,v:integer;
x,y:vect; k:char;
begin
x[2,7]:='b';x[4,7]:='r';x[6,7]:='a';x[8,7]:='z';x[10,7]:='i';x[12,7]:='l';x[14,7]:='i'; x[16,7]:='a';

x[4,2]:='e';x[4,4]:='v';x[4,6]:='e';x[4,8]:='r';x[4,10]:='e';x[4,12]:='s';x[4,14]:='t';

x[12,4]:='k';x[12,6]:='o';x[12,8]:='l';x[12,10]:='o';x[12,14]:='m';x[12,16]:='b';x[12,18]:='o';

x[12,6]:='н';x[2,6]:='о';x[3,6]:='т';x[4,6]:='а';

x[18,14]:='f';x[18,16]:='u';x[18,18]:='t';x[18,20]:='b';x[18,22]:='o';x[18,24]:='l';

x[10,16]:='p';x[12,16]:='o';x[14,16]:='r';x[14,18]:='t';x[14,20]:='u';

x[18,24]:='r';x[16,24]:='e';x[14,24]:='a';x[12,24]:='l';


clrscr;
c:=2;v:=2;
textcolor(green);
writeln('      ЪДї');
writeln('      і і');
writeln('ЪДВДВДЕДЕДВДВДї  ');
writeln('і і і і і і і і');
writeln('АДБДБДЕДЕДБДБДЩ');
writeln('      і і ');
writeln('      ГДґ');
writeln('      і і');
writeln('      ГДґ     ЪДї');
writeln('      і і     і і');
writeln('  ЪДВДЕДЕДВДВДЕДґ     ЪДї ');
writeln('  і і і і і і і і     і і');
writeln('  АДБДЕДЕДБДБДЕДґ     ГДґ');
writeln('      і і     і і     і і');
writeln('      ГДґ     ГДґ     ГДґ');
writeln('      і і     і і     і і');
writeln('      АДЩ   ЪДЕДЕДВДВДЕДґ ');
writeln('            і і і і і і і');
writeln('            АДБДБДБДБДБДЩ');
gotoxy(c,v);
repeat
  gotoxy(c,v);
  k:=readkey;
case k of
 #72: begin v:=v-2;gotoxy(c,v);end;
 #75: begin c:=c-2;gotoxy(c,v);end;
 #77: begin c:=c+2;gotoxy(c,v);end;
 #80: begin v:=v+2;gotoxy(c,v);end;
 #13: begin i:=c div 2;j:=v div 2; readln(y[i,j]);gotoxy(c,v);end;
 #59: begin for i:=1 to 16 do
            for j:=1 to 8 do
            if (y[i,j]<>' ')and(y[i,j]<>x[i,j]) then
                                                begin
                                                textcolor(red);
                                                gotoxy(i*2,j*2);write(y[i,j]);
                                                gotoxy(i*2,j*2);
                                                textcolor(green);
                                                end;
      end;
 end;
gotoxy(20,15);
writeln('Спасибо за просмотр программы');
readln;
end.

Выдаёт ошибки. Помогите пожалуйста. Может по строкам есть кроссворды и по проще? Или не глючные.
Буду рад помощи!
volvo
barlog, 2 ошибки: первая - синтаксическая, июо ловится компилятором... Ты открыл цикл Repeat, но не закрыл его... Слова Until у тебя в программе нет...

Вторая - более серьезная: программа будет компилироваться, но работать правильно начнет только тогда, когда ты эту ошибку исправишь... Коды стрелок - расширенные, т.е. сначала идет символ с кодом #0, и только потом - сам код клавиши (поищи по форуму, было несколько раз, почему это делается, и как с этим работать)...

С учетом этого, нижнюю часть программы (начиная от слова Repeat) я бы переделал так:

repeat
  gotoxy(c,v);
  k:=readkey;
  case k of
    #13: begin i:=c div 2;j:=v div 2; readln(y[i,j]);gotoxy(c,v);end;
     #0: case readkey of
           #72: begin v:=v-2;gotoxy(c,v);end;
           #75: begin c:=c-2;gotoxy(c,v);end;
           #77: begin c:=c+2;gotoxy(c,v);end;
           #80: begin v:=v+2;gotoxy(c,v);end;
           #59: begin for i:=1 to 16 do
                  for j:=1 to 8 do
                  if (y[i,j]<>' ')and(y[i,j]<>x[i,j]) then begin
                    textcolor(red);
                    gotoxy(i*2,j*2);write(y[i,j]);
                    gotoxy(i*2,j*2);
                    textcolor(green);
                  end;
                end;
         end;
  end;
until k = #27;

  gotoxy(20,15);
  writeln('Спасибо за просмотр программы');
  readln;
end.

Теперь программа деет тебе ходить по клеткам ... Осталось дополнить функциональность...
barlog
При попадании в определённуй клетку он выводит вопрос на который надо ответить.
uses crt;
type vect=array [1..7,1..8] of string;
var i,j,c,v:integer;
x,y:vect;k:char;
begin
x[1,2]:='в';x[2,2]:='о';x[3,2]:='з';x[4,2]:='г';x[5,2]:='л';x[6,2]:='а';x[7,2]:='с';
x[1,4]:='л';x[2,4]:='а';x[3,4]:='т';x[5,4]:='ы';
x[6,5]:='а';x[7,5]:='с';
x[1,6]:='н';x[2,6]:='о';x[3,6]:='т';x[4,6]:='а';
x[1,8]:='с';x[2,8]:='п';x[3,8]:='е';x[4,8]:='к';x[5,8]:='т';x[6,8]:='р';
x[1,3]:='и';x[1,5]:='ь';x[1,7]:='ю';
x[3,1]:='д';x[3,3]:='о';
x[6,3]:='т';x[6,4]:='л';x[6,6]:='с';
clrscr;
c:=2;v:=2;
textcolor(green);
writeln('    ЪДї        ');
writeln('    і і        ');
writeln('ЪДВДЕДЕДВДВДВДї');
writeln('і і і і і і і і');
writeln('ГДЕДЕДЕДБДЕДЕДЩ');
writeln('і і і і   і і  ');
writeln('ГДЕДЕДЕДї ГДґ  ');
writeln('і і і і і і і  ');
writeln('ГДЕДБДБДЩ ГДЕДї');
writeln('і і       і і і');
writeln('ГДЕДВДВДї ГДЕДЩ');
writeln('і і і і і і і  ');
writeln('ГДЕДБДБДЩ АДЩ  ');
writeln('і і            ');
writeln('ГДЕДВДВДВДВДї  ');
writeln('і і і і і і і  ');
writeln('АДБДБДБДБДБДЩ  ');
gotoxy(c,v);
repeat
  gotoxy(c,v);
  k:=readkey;
  case k of
    #13: begin i:=c div 2;j:=v div 2; readln(y[i,j]);gotoxy(c,v);end;
     #0: case readkey of
           #72: begin v:=v-2;gotoxy(c,v);end;
           #75: begin c:=c-2;gotoxy(c,v);end;
           #77: begin c:=c+2;gotoxy(c,v);end;
           #80: begin v:=v+2;gotoxy(c,v);end;
           #59: begin for i:=1 to 16 do
                  for j:=1 to 8 do
                  if (y[i,j]<>' ')and(y[i,j]<>x[i,j]) then begin
                    textcolor(red);
                    gotoxy(i*2,j*2);write(y[i,j]);
                    gotoxy(i*2,j*2);
                    textcolor(green);
                  end;
                end;
         end;
  end;

 gotoxy(20,15);writeln('                                                   ');
  gotoxy(20,10);writeln('                                                   ');

 if (c>1)and(c<15)and(v=4)then begin gotoxy(20,10);writeln('восклицание');gotoxy(c,v);end;
 if (c>1)and(c<13)and(v=16)then begin gotoxy(20,10);writeln('цвета радуги по сути');gotoxy(c,v);end;
 if (c>1)and(c<9)and(v=8)then begin gotoxy(20,10);writeln('одежда рыцаря');gotoxy(c,v);end;
 if (c>1)and(c<9)and(v=12)then begin gotoxy(20,10);writeln('музыкальный знак');gotoxy(c,v);end;
 if (c>11)and(c<15)and(v=10)then begin gotoxy(20,10);writeln('профессионал');gotoxy(c,v);end;
 if (v>2)and(v<17)and(c=2)then begin gotoxy(20,15);writeln('столица Литвы');gotoxy(c,v);end;
 if (v>1)and(v<9)and(c=6)then begin gotoxy(20,15);writeln('укрепленная огневая точка');gotoxy(c,v);end;
 if (v>2)and(v<13)and(c=12)then begin gotoxy(20,15);writeln('книга карт');gotoxy(c,v);end;
until readkey=#27;
clrscr;
gotoxy(20,15);
writeln('Спасибо за просмотр программы');
readln;
end.

Надо доделать этот вариант кроссворда до рабочего состояния. Если получиться то смогу переделать на другие вопросы потом. Нужно чтобы вводил тоже без глюков, и проверял на правильность ответ. Если так можено то помоги на премере этого кроссворда!
barlog
Окончательный вариант кроссворда. Нужно как то упростить ввод. Приходиться постоянно нажимать Enter. И чтобы принеправельном вводе и нажатие на F1 слово меняло цвет или выводилось сообщения о неправильном ответе.
uses crt;
type vect=array [1..10,1..10] of string;
var i,j,c,v:integer;
x,y:vect;k:char;
begin
x[1,5]:='Ф';x[1,6]:='л';x[1,7]:='а';x[1,8]:='г';
x[2,2]:='з';x[2,3]:='и';x[2,4]:='з';x[2,5]:='У';
x[3,5]:='Т';x[3,6]:='у';x[3,7]:='л';x[3,8]:='а';
x[4,2]:='к';x[4,3]:='р';x[4,4]:='а';x[4,5]:='Б';
x[5,5]:='О';x[5,6]:='с';x[5,7]:='л';x[5,8]:='о';
x[6,2]:='р';x[6,3]:='е';x[6,4]:='а';x[6,5]:='Л';
clrscr;
c:=2;v:=2;
textcolor(green);
writeln('        ЪДВДВДВДї        ');
writeln('      1 і і і і і       ');
writeln('  ЪДВДВДЕДЕДБДБДЩ');
writeln('2 і і і і і');
writeln('  АДБДБДЕДЕДВДВДї ');
writeln('      3 і і і і і');
writeln('  ЪДВДВДЕДЕДБДБДЩ');
writeln('4 і і і і і');
writeln('  АДБДБДЕДЕДВДВДї');
writeln('      5 і і і і і');
writeln('  ЪДВДВДЕДЕДБДБДЩ');
writeln('6 і і і і і');
writeln('  АДБДБДБДЩ');

writeln('1. Для выхода нажмите Esc');
writeln('2. Для ввода нажмите Enter');
gotoxy(35,5);  writeln('1. Один из составляющих визитной карточки любой страны?');
gotoxy(35,6);  writeln('2. Футбольная кличка Зидана?');
gotoxy(35,7);  writeln('3. Куда с самоварами не ездят?');
gotoxy(35,8);  writeln('4. Морская закуска к пиву?');
gotoxy(35,9);  writeln('5. Столица Норвегии?');
gotoxy(35,10); writeln('6. Футбольный <Королевский клуб>');

repeat
  gotoxy(c,v);
  k:=readkey;
  case k of
    #13: begin i:=c div 2;j:=v div 2; readln(y[i,j]);gotoxy(c,v);end;
     #0: case readkey of
           #72: begin v:=v-2;gotoxy(c,v);end;
           #75: begin c:=c-2;gotoxy(c,v);end;
           #77: begin c:=c+2;gotoxy(c,v);end;
           #80: begin v:=v+2;gotoxy(c,v);end;
           #59: begin for i:=1 to 10 do
                  for j:=1 to 10 do
                  if (y[i,j]<>' ')and(y[i,j]<>x[i,j]) then begin
                    textcolor(red);
                    gotoxy(i*2,j*2);write(y[i,j]);
                    gotoxy(i*2,j*2);
                    textcolor(green);
                  end;
                end;
         end;
  end;
until k = #27;

gotoxy(20,20);
writeln('Спасибо за просмотр программы');
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.