Дословно: написать программу для трех звездочек...
выглядит эта прога примерно так: на экрани носятся три звездочки, начиная свой "бег" слевого края экрана и заканчивая правым краем (при этом звездочки не выходят за приделы экрана и не меняет своей строки) Каждая звездочка проходит эту дистанцию по разному, при чем скорость звездочки меняется с каждым новым "забегом".
*
*
*
Вот что то в этом роде...
Я конечно ща сяду сам писать эту прогу, но хотелось бы услышать совет профессионалов.
Вот немного пописал эту прогу...
uses crt;
var i,i1,i2,s,mesto:integer;
begin
clrscr;
randomize;
i:=2;i1:=1;i2:=1;mesto:=1;
repeat
s:=random(2);
delay(50);
If s=0 then
begin
i:=i+1;
textcolor(white);
gotoxy(i,1);
write('*');
end
else
if s=1 then
begin
i1:=i1+1;
textcolor(white);
gotoxy(i1,1);
write('*');
end
else
begin
i2:=I2+1;
textcolor (white);
gotoxy(i2,3);
write('*');
end;
if i=80 then
begin
mesto:=mesto+1;
gotoxy(1,mesto+3);
writeln ('tochka1 zanila1',mesto,'mesto');
end;
if i=1 then
begin
mesto:=mesto+1;
gotoxy(1,3+mesto);
writeln ('tochka2 zanila',mesto,'mesto');
end;
begin
if i2=80 then
mesto:=mesto+1;
gotoxy(1,mesto+3);
write ('3 tochka zanila' ,mesto,'mesto');
end;
until(i>=80)and(i1>=80)and(i2>=80);
readln
end.
М | теги для кода ставь Altair |
Guest, вот тебе программа... Добавь вывод результатов и все готово
uses crt;
const
n = 3;
var
delta, pos: array[1 .. n] of integer;
finish: boolean;
i: integer;
begin
clrscr;
randomize;
for i := 1 to n do begin
pos[i] := 1;
delta[i] := random(3) + 1;
end;
finish := false;
repeat
i := 1;
delay(125);
repeat
gotoxy(1, 10+i); clreol;
gotoxy(pos[i], 10+i); write('*');
inc(pos[i], delta[i]);
finish := pos[i] >= 80;
inc(i)
until (i > n) or finish;
until finish;
end.
спасибо...
тут не большая проблема возникла, две из звездочек в любом случае идут пораллельно, как исправить, что б все 3 шли асинхронно...
и еще что такое ink
uses crt;
const
n = 3;
var
delta, pos: array[1 .. n] of integer;
finish: boolean;
i, plus: integer;
T: set of byte;
begin
clrscr;
randomize; T := [];
for i := 1 to n do begin
pos[i] := 1;
{ Генерируем НЕповторяющиеся числа}
repeat
plus := random(4) + 1;
until not (plus in T); { Число еще не было сгенерировано ранее }
{
Добавить его во множество, в следующий раз
оно не должно повториться
}
T := T + [plus];
delta[i] := plus + 1;
end;
finish := false;
repeat
i := 1;
delay(125);
repeat
gotoxy(1, 10+i); clreol;
gotoxy(pos[i], 10+i); write('*');
inc(pos[i], delta[i]);
finish := pos[i] >= 80;
inc(i)
until (i > n) or finish;
until finish;
end.
Слушай, агромное тебе спасибо...
если я тебя еще не достал...
Скажи что за тип такой просто не первый раз встречаю set of byte;
и еще что такое clreol
А можно сделать так что б все точки добегали до финиша и еще тут попытался сделать вывод, но понятно как сделать вывод о победителе,а как о остальных звездочках - какое они место заняли...=)
...
gotoxy(1, 10+i); clreol;
gotoxy(pos[i], 10+i); write('*');
inc(pos[i], delta[i]);
finish := pos[i] >= 80;
i:=i+1;
until (i > n) or finish;
until finish;
writeln;
i:=i-1;
writeln('pobeda ', i ,' tochki');
readln
end.
clreol - это очищение экрана от лишних звездочек, я понял =)
...
until finish; { это - окончание соревнования, то что было у меня }
writeln;
dec(i);
writeln('#', i, ' первое место');
if i = 1 then plus := 2
else plus := 1;
if pos[plus] > pos[6 - (plus + i)] then
writeln('#', plus, ' второе; #', 6 - (plus + i), ' третье')
else
writeln('#', 6 - (plus + i), ' второе; #', plus, ' третье');
end.
теперь уже толчно все работает и все рулез...
Короче спасибо тебе от всего Строительного Факультета АГТУ =)...