PASCAL 编的小游戏哦!
xcnoi吧
全部回复
仅看楼主
level 4
uses crt; type list=record ty,ax:integer; end; xy=record bx,by:integer; end; l1=array[1..4,1..5]of char; l2=array[1..5,1..6]of char; l3=array[1..8,1..5]of char; const my:l1=(('0','0','A','0','0'), ('A','0','H','0','A'), ('b','H','H','H','d'), ('0','T','U','T','0')); pl:l3=(('0','H','0','H','0'), ('p','H','I','H','q'), ('0','H','X','H','0'), ('0','V','0','V','0'), ('0','H','H','H','0'), ('0','H','O','H','0'), ('0','H','H','H','0'), ('0','0','V','0','0')); boss:l2=(('0','T','H','H','T','0'), ('X','H','I','I','H','X'), ('X','H','X','X','H','X'), ('H','0','H','H','0','H'), ('V','0','V','V','0','V')); var ix,hp,bshp,box,i,j,k,t,sum,every:integer; enlist:array[1..30]of list; ch:char; nowen:array[1..3]of list; bom,boe:array[1..25]of xy; procedure myij(x:integer); begin for k:=1 to 4 do begin if x>=2 then gotoxy(x-1,21+k) else gotoxy(x,21+k); write(' '); for t:=1 to 5 do if my[k,t]<>'0' then write(my[k,t]) else write(' '); if x+4<80 then write(' '); end; end; procedure now(enemy:integer); begin gotoxy(1,1); delline; gotoxy(1,1); insline; gotoxy(1,1); textcolor(black); write(' Hp:',hp,' Remain enemy:',enemy,' Boss Hp:',bshp); textcolor(red); end; function hiten(s:integer):integer; begin hiten:=0; for t:=1 to 3 do if (bom[s].by<=6)and(bom[s].bx-nowen[t].ax>=0) and(bom[s].bx-nowen[t].ax<=4)then hiten:=t; end; function hitmy(s:integer):boolean; begin hitmy:=false; if (boe[s].by>=21)and(boe[s].bx-ix>=0) and(boe[s].bx-ix<=4)then hitmy:=true; end; function hitbo(s:integer):boolean; begin hitbo:=false; if (bom[s].by<=7)and(bom[s].bx-box>=0) and(bom[s].bx-box<=5)then hitbo:=true; end; procedure clear(s:integer); begin for t:=1 to 4 do begin gotoxy(nowen[s].ax,t+1); write(' '); end; end; procedure win; begin clrscr; gotoxy(28,12); writeln('Congratulations,You win!'); write(' Press Enter to exit...'); readln; halt; end; procedure plij(s,x:integer); begin for k:=1 to 4 do begin if x>=2 then gotoxy(x-1,1+k) else gotoxy(x,1+k); write(' '); for t:=1 to 5 do if pl[s+k-1,t]<>'0' then write(pl[s+k-1,t]) else write(' '); if x+4<80 then write(' '); end; end; procedure lost; begin clrscr; gotoxy(32,12); writeln('Sorry,You lost!'); write(' Press Enter to exit...'); readln; 
2008年02月28日 04点02分 1
level 4
halt; end; function canmove(x:integer;y:integer):boolean; begin canmove:=false; if ((x>=2)and(y=1))or((x<=71)and(y=2)) then canmove:=true; 作者: jiangyuzhou 2008-2-14 11:45   回复此发言 -------------------------------------------------------------------------------- 2 pascal小游戏(原创) end; function appear(x:integer):byte; var f:boolean; begin repeat randomize; t:=random(70)+2; f:=true; for k:=1 to 3 do if (t-nowen[k].ax>=-5)and(t-nowen[k].ax<=5)then f:=false; until f; appear:=t; if enlist[x].ty=1 then plij(1,t) else plij(5,t); end; function enis:integer; begin t:=0; for k:=1 to 3 do if nowen[k].ty<>-1 then t:=t+1; enis:=t; end; function itmove(s,t:integer):boolean; begin itmove:=true; for k:=1 to 3 do if k<>s then if ((t=0)and(nowen[s].ax-nowen[k].ax<7)) or ((t=1)and(nowen[k].ax-nowen[s].ax<7)) then itmove:=false; end; procedure move(s:integer); begin randomize; t:=random(100) mod 2; if itmove(s,t) then if t=0 then begin if nowen[s].ty=0 then plij(1,nowen[s].ax-1) else plij(5,nowen[s].ax-1); nowen[s].ax:=nowen[s].ax-1; end else if t=1 then begin if nowen[s].ty=0 then plij(1,nowen[s].ax+1); if nowen[s].ty=1 then plij(5,nowen[s].ax+1); nowen[s].ax:=nowen[s].ax+1; end; end; procedure bb(s:integer); begin if nowen[s].ty=0 then begin for k:=1 to 25 do if boe[k].bx=0 then begin gotoxy(nowen[s].ax+1,6); write('V'); boe[k].bx:=nowen[s].ax+1; boe[k].by:=6; break; end; for k:=1 to 25 do if boe[k].bx=0 then begin gotoxy(nowen[s].ax
+3
,6); write('V'); boe[k].bx:=nowen[s].ax+3; boe[k].by:=6; break; end; end else begin for k:=1 to 25 do if boe[k].bx=0 then begin gotoxy(nowen[s].ax+2,6); write('V'); boe[k].bx:=nowen[s].ax+2; boe[k].by:=6; break; end; end; end; procedure main; begin i:=1; while 30-i+enis>=0 do begin gotoxy(1,1); ch:=' '; if keypressed then ch:=readkey; if hp<=0 then lost; for j:=1 to 25 do if bom[j].bx<>0 then if (hiten(j)<>0)or(bom[j].by=2) then begin if hiten(j)<>0 then begin clear(hiten(j)); now(30-i+enis); nowen[hiten(j)].ty:=-1; nowen[hiten(j)].ax:=0; end; gotoxy(bom[j].bx,bom[j].by); 
2008年02月28日 04点02分 2
level 4
write(' '); bom[j].bx:=0; bom[j].by:=0; myij(ix); end else begin gotoxy(bom[j].bx,bom[j].by); write(' '); bom[j].by:=bom[j].by-1; gotoxy(bom[j].bx,bom[j].by); write('A'); myij(ix); end; 作者: jiangyuzhou 2008-2-14 11:45   回复此发言 -------------------------------------------------------------------------------- 3 pascal小游戏(原创) if sum mod 2=0 then for k:=1 to 25 do if boe[k].bx<>0 then if hitmy(k)or(boe[k].by=25) then begin if hitmy(k) then hp:=hp-1; gotoxy(boe[k].bx,boe[k].by); write(' '); boe[k].bx:=0; boe[k].by:=0; myij(ix); now(30-i+enis); end else begin gotoxy(boe[k].bx,boe[k].by); write(' '); boe[k].by:=boe[k].by+1; gotoxy(boe[k].bx,boe[k].by); write('V'); end; case ch of #27:halt; 'a':if canmove(ix-2,1)then begin ix:=ix-1; myij(ix); end; 'd':if canmove(ix-2,2)then begin ix:=ix+1; myij(ix); end; 'j':begin for j:=1 to 25 do if bom[j].bx=0 then begin gotoxy(ix+2,21); write('A'); bom[j].bx:=ix+2; bom[j].by:=21; break; end; end; end; delay(every); sum:=sum+1; if sum mod (every*(every div 3))=0 then for j:=1 to 3 do if nowen[j].ty<>-1 then begin bb(j); move(j); sum:=0; end; for j:=1 to 3 do if (nowen[j].ty=-1)and(i<31) then begin nowen[j].ty:=enlist[i].ty; nowen[j].ax:=appear(j); i:=i+1; break; end; end; win; end; procedure welcome; begin clrscr; gotoxy(29,13); write('Press Enter to start:'); readln; writeln(' use: a-left b-right j-bomb'); write(' Please input how fast(suggest 20):'); readln(every); textbackground(green); clrscr; gotoxy(29,13); writeln('Now upbilnd enemy list...'); for i:=1 to 30 do begin randomize; enlist[i].ty:=random(100) mod 2; end; for i:=1 to 3 do with nowen[i] do begin ty:=-1; ax:=0; end; for i:=1 to 25 do with bom[i] do begin bx:=0; by:=0; end; for i:=1 to 25 do with boe[i] do begin bx:=0; by:=0; end; delay(500); clrscr; textcolor(red); ix:=38; hp:=20; sum:=0; bshp:=150; myij(ix); now(30); end; begin welcome; main; end. 打飞机 嘿嘿 好玩哦! 有兴趣自己调试下!
2008年02月28日 04点02分 3
level 0
。。。看不懂耶
2008年02月28日 05点02分 4
1