нужно, чтоб символ, например '*' перемещался по экрану при управлении с клавиатуры(не двигался постоянно, как в змейке, а делал шаг при нажатии и удержании клавиши) подскажите с чего начать
считываешь нажатый символ. определяешь, какая это стрелка затираешь старую * выводишь новую * в месте в соответствии с тем, какую стрелку нажали
что из этого вызывает затруднения?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Не "имеющая значение клавиши", а хранящая ее код. Char, разумеется. И обрабатывать ее удобнее именно через Case. Посмотри в поиске по поводу совместного использования Case и ReadKey, я думаю ты найдешь много примеров, которые тебе помогут решить задачу...
Ты спрашивал с чего начать, но это тебе уже подсказали... Я похожую задачу решал, и если нужно, то вот прикреплённый файл: KR_kv.PAS ( 857 байт )
Кол-во скачиваний: 850
Тока тут не звёздочка, а прямоугольник!!!
--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
uses crt;
type har=record
sila:integer;
zawnog:integer;
zawgol:integer;
zawjiv:integer;
zawpoyas:integer;
end;
const
hero=#1;
zombie=#2;
zdr=#3;
gold=#36;
var udar,spase,snap:char;zx,zy,Y,ud,X,n:integer;s,hero_damage,zombie_healse,zombie_d
amage,hero_healse:integer;
i,j,hx,hy,mx,my,money:integer;Fh, Fz:fileof har; rec:har ;
{-----------------------------------------------------------------------}{ procedure sozdanie;
begin
assign(fz,'zombie');
rewrite(fz);
with rec do
begin
write('sila');
readln(sila);
write(fz,rec);
write('zawnog');
readln(zawnog);
write(fz,rec);
write('zawgol');
readln(zawgol);
write(fz,rec);
write('zawjiv');
readln(zawjiv);
write(fz,rec);
write('zawpoyas');
readln(zawpoyas);
write(fz,rec);
end;
end;}procedure life;
begin
gotoxy(hx,hy);
write(zdr);
if(x=hx) and (y=hy) thenbegin
write('healse');
hero_healse:=hero_healse+15;
hx:=random(10)+1;
hy:=random(10)+1;
end;
mx:=hx+10;
my:=hy+10;
begin
gotoxy(mx,my);
write(gold);
if(x=mx) and (y=my) thenbegin
write('gold');
money:=money+random(10)+1;
hx:=random(10)+1;
hy:=random(10)+1;
end;
end;
end;
{----------------------------------------------------}procedure fight;
beginrepeat udar:= readkey;
clrscr;
writeln('udary: w-golova,s-nogi,a-jivot.d-poyas');
write('zombie healse',zombie_healse,'/',hero_healse,'hero_healse');
ud:=0;
case udar of#119: ud:=1;
#115: ud:=2;
#97: ud:=3;
#100: ud:=4;
end;
if (ud=1)or(ud=2)or(ud=3)or(ud=4) thenbegin
hero_healse:=hero_healse-random(zombie_damage);
zombie_healse:=zombie_healse-random(hero_damage);
ud:=0;
end;
until(hero_healse<=0) or (zombie_healse<=0);
if hero_healse>0thenbegin
clrscr;
gotoxy(2,40);
write('you win');
n:=n+1;
zx:=random(70)+1;
zy:=random(20)+1;
zombie_healse:=30;
zombie_damage:=10;
s:=0;
end;
if hero_healse<=0thenbegin
clrscr;
gotoxy(40,10);
write('game over press enter');
readln;
snap:=#27;
s:=2;
end;
end;
procedure map;
beginif (x=zx) and (y=zy) thenbegin
gotoxy(10,40);
writeln;
writeln('est zombie press spase to fight');
spase:=readkey;
case spase of#32: s:=2end;
if s=2thenbegin
clrscr;
fight;
end;
end;
end;
{---------------------------------------------------------}begin{ sozdanie;}
clrscr;
money:=0;
n:=0;
hero_healse:=55;
zombie_healse:=30;
zombie_damage:=10;
hero_damage:=15;
my:=10;
my:=15;
zx:=10;
zy:=20;
hx:=10;
hy:=10;
y:=5;
x:=5;
textbackground(2);
GoToXY(X,Y);
textcolor(1);
writeln(hero);
snap:=readkey;
Repeat snap:=readkey;
textbackground(2);
clrscr;
gotoxy(60,1);
write('chislo pobed=',n);
gotoxy(1,1);
write('health=',hero_healse);
gotoxy(15,1);
write('gold=',money);
gotoxy(Zx,Zy);
write(zombie);
case snap of#72: y:=y-1;
#80: y:=y+1;
#75: x:=x-1;
#77: x:=x+1;
#102: s:=1;
end;
life;
map;
GoToXY(X,Y);
writeln(hero);
Until snap=#27;
clrscr;
end.
.
минусов много, но в перспективе создание и использование файлов с характеристиками юнитов, возможность игры на разных модулях(картах), может даже возможност выполнения квестов.
Может для начала лучше заняться созданием движущихся zombie? да и не одного, и чтоб они тоже нападали, возможно даже плодились чтоб, а то так не интересно играть, проиграть неподдаваясь невозможно! Тогда и необходимость в картах отпадёт, просто играть будет интересней!!!
--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)