
11.02.2008, 03:09
|
|
Новичок
Регистрация: 23.02.2007
Сообщений: 24
Провел на форуме: 186184
Репутация:
5
|
|
Вот вроде так надо выполнять задание.
ВО вторник если доделаю прогу у препода спрошу, так ли надо было делать.
Пока что есть две проблемы.
1) Как сделать так что если в загаданном слове несколько букв одинаковых открывались все эти буквы. например слово moloko открывается только первая о.
2)Как сделать открытые буквы зеленого цвета? Там в программах которые я выложил выше есть одна в которой звездочки меняют цвет. но как это реализовать в моейм, да еще так что бы в зеленный окрашивались только уже отгаданые буквы я не знаю.
Код:
uses crt,dos,objects;
type ps=^string;
var regs:Registers;l:ptrrec;
procedure clrscr;
begin regs.ax:=3;
intr($10,regs);end;
procedure readln(p:ps);
begin l:=ptrrec(p);
with regs do begin ah:=$3f;
bx:=0;cx:=80;
ds:=l.seg;dx:=l.ofs+1;
msdos(regs);
p^[0]:=chr(ax-2) end; end;
procedure write(p:ps);
begin l:=ptrrec(p);
with regs do begin ah:=$40;
bx:=1;cx:=length(p^);
ds:=l.seg;dx:=l.ofs+1;
msdos(regs);end;end;
procedure writeln(p:ps);
var e:ps;
begin new(e);e^:=#10#13;
write(p);write(e) end;
function readkey:char;
begin with regs do begin
ah:=8;msdos(regs);
readkey:=chr(al) end end;
procedure putc(c:char);
begin with regs do begin
ah:=2;dl:=ord(c);
msdos(regs);end end;
var p,s,e,st,s2:ps;
i:integer;
b:char;
k:integer;
Begin
clrscr;new(e);e^:=#10#13;
new(p);new(s);p^:='Введите слово, по нажатию ввода конец. ';
new(st);new(s2);
b:='0';
s2^:='';
write(p);
repeat st^:=st^+b;
b:=readkey;
if b=#13 then break;
putc('*');
until false;
clrscr;
for i:=2 to length(st^)+1 do s2^:=s2^+('*');
p^:='Введите буквы для выхода нажмите ввод ';
write(p);
write(s2);
repeat b:=readkey;
if b=#13 then break;
if pos(b,st^)>0 then begin
clrscr;
s2^[pos(b,st^)]:=b;
write (p);
write (s2);
end;
until false;
end.
Последний раз редактировалось Hardover; 11.02.2008 в 11:25..
|
|
|