нужно, чтоб символ, например '*' перемещался по экрану при управлении с клавиатуры(не двигался постоянно, как в змейке, а делал шаг при нажатии и удержании клавиши) подскажите с чего начать
мисс_граффити
27.01.2008 23:16
считываешь нажатый символ. определяешь, какая это стрелка затираешь старую * выводишь новую * в месте в соответствии с тем, какую стрелку нажали
что из этого вызывает затруднения?
maklir
27.01.2008 23:41
какого типа переменная, имеющаяя значение клавиши? и можно ли попробовать оформить через 'case'
volvo
27.01.2008 23:50
Не "имеющая значение клавиши", а хранящая ее код. Char, разумеется. И обрабатывать ее удобнее именно через Case. Посмотри в поиске по поводу совместного использования Case и ReadKey, я думаю ты найдешь много примеров, которые тебе помогут решить задачу...
maklir
27.01.2008 23:55
большое спасибо, когда закончу, поделюсь творчеством)))))
Yevgeny
28.01.2008 0:01
Ты спрашивал с чего начать, но это тебе уже подсказали... Я похожую задачу решал, и если нужно, то вот прикреплённый файл: Нажмите для просмотра прикрепленного файла Тока тут не звёздочка, а прямоугольник!!!
maklir
30.01.2008 0:01
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:file of 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) then begin 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) then begin write('gold'); money:=money+random(10)+1; hx:=random(10)+1; hy:=random(10)+1; end; end; end; {----------------------------------------------------} procedure fight; begin
repeat 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) then begin 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>0 then begin 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<=0 then begin clrscr; gotoxy(40,10); write('game over press enter'); readln; snap:=#27; s:=2; end; end; procedure map; begin if (x=zx) and (y=zy) then begin gotoxy(10,40); writeln; writeln('est zombie press spase to fight'); spase:=readkey; case spase of #32: s:=2 end; if s=2 then begin clrscr; fight; end; end; end;
минусов много, но в перспективе создание и использование файлов с характеристиками юнитов, возможность игры на разных модулях(картах), может даже возможност выполнения квестов.
Yevgeny
30.01.2008 2:34
Может для начала лучше заняться созданием движущихся zombie? да и не одного, и чтоб они тоже нападали, возможно даже плодились чтоб, а то так не интересно играть, проиграть неподдаваясь невозможно! Тогда и необходимость в картах отпадёт, просто играть будет интересней!!!
maklir
30.01.2008 12:44
приму к сведению, хорошая идея)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.