IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Игра "поле чудес"
Dimanx
сообщение 11.02.2008 10:39
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Собственно эта задача мало чем отличается от придыдущей мойе темы. Но в правилах сказано для каждой задачи своя тема.
Сама задача звучит так:
По запросу скрытно (звездочками) ввести строку символов, затем по приглашению в цикле вводить отдельные буквы и открывать их в исходной закрытой строке (при наличии) зеленым цветом на своих местах.
Я частично написал ее.
НЕ могу доделать только две вещи:
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©;
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.

Вот мой код.
Исходники похожих задач залили на рапиду http://www.rapidshare.ru/572471
Там 5-ть задач в одной из них есть операции с цветами, только я не могу понять как их реализовать в моей программе.
Подскажите пожалуйста.
Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Dimanx   Игра "поле чудес"   11.02.2008 10:39


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 17.07.2025 2:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"