Программирование на языке Pascal




Пример пользовательского интерфейса - часть 2


begin clrscr; textcolor(lightmagenta); writeln(' Поиграем в "Быков и коров"?'); textcolor(yellow); writeln(' (бык - это цифра, стоящая на своем месте; а корова - просто верная)'); textcolor(green); writeln(' Итак... Я загадываю число из разных цифр. Вам отгадывать! '); writeln(' (Выход из программы - <ESC> )'); textcolor(cyan); write('Введите количество цифр в угадываемом числе: '); {$I-}; flag:= false; repeat textcolor(white); c1:= readkey; clreol; err:= check(c1); if err= 4 then error_('введена не цифра!',-27,0); if err = 0 then case c1 of '0' : begin writeln; error_('в числе должна быть хотя бы одна цифра!',-3,-1) end; '1' : begin c1:= readkey; flag:= true; case c1 of '0' : begin n:=10; writeln(c1) end; #13 : n:= 1; else begin writeln(c1); error_('в числе может быть не более 10 разных цифр!',-7,-1); end; end;{case} end; else begin val(c1,n,err); flag:= true; end; end; if n>10 then until flag; writeln;

{-- Zagadyvanie chisla --------------------} randomize; zagadano[1]:= random(9)+1; set_of_zagad:=[zagadano[1]]; for i:=2 to n do repeat zagadano[i]:= random(10); if not (zagadano[i] in set_of_zagad) then begin set_of_zagad:= set_of_zagad+[zagadano[i]]; flag:= true; end else flag:=false; until flag;

{--- Game --------------------------} textcolor(lightmagenta); write('Начинаем! '); textcolor(cyan); clreol; writeln('Вводите Ваши числа:'); textcolor(white); num_of_popyt:= 0; flag:= true; repeat {Ввод очередного числа} cow:= 0; bull:= 0; set_of_popyt:= []; j:=1; while j<=n do {Ввод по цифрам} repeat c:= readkey; err:= check(c); clreol; if err = 4 then error_('Введена не цифра! Измените последний символ.',-54,0); if err = 0 then if (c='0')and(j=1) then error_('Первой цифрой не может быть ноль! Повторите ввод.',-59,0) else begin val(c,popytka[j],err); if popytka[j] in set_of_popyt then error_('Одинаковых цифр быть не должно! Измените последнюю цифру.',-67,0) else begin set_of_popyt:= set_of_popyt+[popytka[j]]; flag:= true; if popytka[j]=zagadano[j] then inc(bull) else if popytka[j] in set_of_zagad then inc(cow); inc(j) end; end; until flag;

clreol; readln; textcolor(yellow); gotoxy(n+1,wherey-1); writeln(' Быков - ',bull,'; коров - ',cow); inc(num_of_popyt); textcolor(white); until bull = n; textcolor(green); if bull= n then writeln('Поздравляю! Вы выиграли за ',num_of_popyt,' шагов!'); readln; clrscr end.




Содержание  Назад  Вперед