感谢上外静中任淳同学提供
uses crt;
label
h; //h是重新开始游戏
const
y1=18;
y2=18; //p1,p2的纵坐标
var
x1,x2:byte; //p1,p2的横坐标
act:byte; //p2动作
sec,sec1:integer; //时间间隔
p,q:byte; //p1,p2的生命值
ek:byte; //用于增强p2防御力
c:char; //用于读取键盘敲击的键
m,e:char; //p1,p2的朝向(判断往哪里攻击)
i,j:byte; //循环变量
ys1,ys2:byte; //p1,p2的颜色
l,r:boolean; //l:p1是否胜利 r:p2是否胜利
f:boolean; //游戏是否结束
y,n:boolean; //判断玩家是否继续
procedure start;
begin
clrscr;
textcolor(lightmagenta);
writeln('Fighting Game');
textcolor(magenta);
writeln('a: left');
writeln('d: right');
writeln('j: attack');
writeln('space: pause');
textcolor(yellow);
writeln('You are p1.');
while not keypressed do x1:=10;
clrscr;
textcolor(lightgreen);
gotoxy(34,10);
write('ARE YOU READY? '); //倒计时
textcolor(lightred);
for i:=3 downto 1 do begin
write(i);
sound(100);
delay(1000);
write(#8);
nosound;
end;
clrscr;
textcolor(lightblue);
gotoxy(40,10);
write('GO!');
sound(1000);
delay(1000);
nosound;
clrscr;
end;
procedure life; //打印生命值
begin
p:=10;
q:=10;
gotoxy(11,1);
textcolor(ys1);
for i:=1 to p do write('+');
gotoxy(33,1);
write('p1');
textcolor(lightred);
write(' VS ');
textcolor(ys2);
write('p2');
gotoxy(61,1);
for i:=1 to q do write('+');
end;
procedure me; //打印p1
begin
textcolor(ys1);
gotoxy(x1,y1-1);
write('*');
gotoxy(x1,y1);
write('|');
gotoxy(x1,y1+1);
write('^');
end;
procedure enemy; //打印p2
begin
textcolor(ys2);
gotoxy(x2,y2-1);
write('*');
gotoxy(x2,y2);
write('|');
gotoxy(x2,y2+1);
write('^');
end;
procedure floor; //地板
begin
textbackground(green);
for i:=20 to 25 do
for j:=1 to 80 do begin
gotoxy(j,i);
write(' ');
end;
textbackground(black);
end;
procedure a; //p1向左
begin
if x1>1 then begin
gotoxy(x1,y1-1);
write(' ');
gotoxy(x1,y1);
write(' ');
gotoxy(x1,y1+1);
write(' ');
x1:=x1-1;
end;
m:='a';
me;
enemy;
end;
procedure d; //p1向右
begin
if x1<80 then begin
gotoxy(x1,y1-1);
write(' ');
gotoxy(x1,y1);
write(' ');
gotoxy(x1,y1+1);
write(' ');
x1:=x1+1;
end;
m:='d';
me;
enemy;
end;
procedure s; //p1攻击
begin
textcolor(ys1);
if (m='a') and (x1>1) then begin
gotoxy(x1-1,y1);
write('-');
if x1>=3 then begin
gotoxy(x1-2,y1);
write('(');
end;
if (x1-1=x2) or (x1-2=x2) then begin
ek:=ek+1;
if (q>0) and (ek=10) then begin
q:=q-1;
ek:=0;
end;
gotoxy(70-q,1);
write(' ');
textcolor(lightred);
gotoxy(x2,y2-1);
write('*');
gotoxy(x2,y2+1);
write('^');
delay(50);
end;
delay(50);
gotoxy(x1-1,y1);
write(' ');
if x1>=3 then begin
gotoxy(x1-2,y1);
write(' ');
end;
end
else if (x1<80) and (m='d') then begin
gotoxy(x1+1,y1);
write('-');
if x1<=78 then write(')');
if (x1+1=x2) or (x1+2=x2) then begin
ek:=ek+1;
if (q>0) and (ek=10) then begin
q:=q-1;
ek:=0;
end;
gotoxy(70-q,1);
write(' ');
textcolor(lightred);
gotoxy(x2,y2-1);
write('*');
gotoxy(x2,y2+1);
write('^');
delay(50);
end;
delay(50);
gotoxy(x1+1,y1);
write(' ');
if x1<=78 then begin
gotoxy(x1+2,y1);
write(' ');
end;
end;
if q=0 then begin
f:=false;
r:=false;
end;
me;
enemy;
end;
procedure je; //p2向左
begin
if x2>1 then begin
gotoxy(x2,y2-1);
write(' ');
gotoxy(x2,y2);
write(' ');
gotoxy(x2,y2+1);
write(' ');
x2:=x2-1;
end;
e:='j';
me;
enemy;
end;
procedure le; //p2向右
begin
if x2<80 then begin
gotoxy(x2,y2-1);
write(' ');
gotoxy(x2,y2);
write(' ');
gotoxy(x2,y2+1);
write(' ');
x2:=x2+1;
end;
e:='l';
me;
enemy;
end;
procedure k; //p2攻击
begin
textcolor(ys2);
if (e='j') and (x2>1) then begin
gotoxy(x2-1,y2);
write('-');
if x2>=3 then begin
gotoxy(x2-2,y2);
write('(');
end;
if (x2-2=x1) or (x2-1=x1) then begin
if p>0 then p:=p-1;
gotoxy(11+p,1);
write(' ');
textcolor(lightred);
gotoxy(x1,y1-1);
write('*');
gotoxy(x1,y1+1);
write('^');
delay(50);
end;
delay(50);
gotoxy(x2-1,y2);
write(' ');
if x2>=3 then begin
gotoxy(x2-2,y2);
write(' ');
end;
end
else if (e='l') and (x2<80) then begin
gotoxy(x2+1,y2);
write('-');
if x2<=78 then begin
gotoxy(x2+2,y2);
write(')');
end;
if (x2+1=x1) or (x2+2=x1) then begin
if p>0 then p:=p-1;
gotoxy(11+p,1);
write(' ');
textcolor(lightred);
gotoxy(x1,y1-1);
write('*');
gotoxy(x1,y1+1);
write('^');
delay(50);
end;
delay(50);
gotoxy(x2+1,y2);
write(' ');
if x2<=78 then write(' ');
end;
if p=0 then begin
f:=false;
l:=false;
end;
me;
enemy;
end;
begin //主程序
cursoroff;
randomize;
h:l:=true; //判断p1胜利
r:=true; //判断p2胜利
f:=true; //判断游戏是否结束
sec:=(random(2)+1)*50; //p2动作时间间隔
sec1:=0; //时间间隔
x1:=10; //p1横坐标位置
m:='d'; //p1面向的方向(d右,a左)
ys1:=14; //定义p1的颜色(黄色)
x2:=71; //p2横坐标位置
e:='j'; //p2面向的方向(l右,j左)
ys2:=8; //定义p2的颜色(暗灰色)
start; //操作说明
life; //显示生命值
me; //显示p1
enemy; //显示p2
floor; //显示地板
while f do begin
if keypressed then begin
c:=readkey;
if c=' ' then begin
gotoxy(38,12);
textcolor(lightmagenta);
write('PAUSE');
c:='p';
while c<>' ' do
if keypressed then c:=readkey;
gotoxy(38,12);
write(' '); //擦除'pause'
end; //暂停
if c='a' then a;
if c='d' then d;
if c='j' then s; //左右和攻击
end;
delay(5);
sec1:=sec1+5; //时间暂停
if sec1>=sec then begin //随机时间间隔到达后
sec1:=0;
sec:=(random(2)+1)*50;
act:=random(2);
if abs(x1-x2)>=3 then
begin
if x2<x1 then le else je;
end //判断p1朝哪个方向走
else //当p1,p2间距小于3,即x1,x2在攻击范围内时
begin
if x1<x2 then //p1在p2左面
if e='l' then le //p2背对p1时
else k //p2正对p1时
else if x2<x1 then //p1在p2右面
if e='j' then je //p2背对p1时
else k //p2正对p1时
else if x2=x1 then //p1,p2重叠时
case act of
0: je;
1: le;
end; //在p1,p2在同一位置时控制p2离开
end;
end;
end;
delay(500);
sound(100); //以下是判断p1,p2哪方胜利还是平手
if l then begin //如果p1胜利
gotoxy(x2,y2-1);
write(' ');
gotoxy(x2,y2);
write(' ');
gotoxy(x2,y2+1);
write(' ');
textcolor(ys2);
gotoxy(x2-1,y2+1);
write('>-*');
delay(2000);
nosound;
clrscr;
sound(1000);
textcolor(yellow);
gotoxy(37,10);
write('YOU WIN!');
end
else if r then begin //如果p2胜利
gotoxy(x1,y1-1);
write(' ');
gotoxy(x1,y1);
write(' ');
gotoxy(x1,y1+1);
write(' ');
textcolor(ys1);
gotoxy(x1-1,y1+1);
write('*-<');
delay(2000);
nosound;
clrscr;
sound(1000);
textcolor(lightred);
gotoxy(37,10);
write('YOU LOSE');
end
else begin //平手
gotoxy(x1,y1-1);
write(' ');
gotoxy(x1,y1);
write(' ');
gotoxy(x1,y1+1);
write(' ');
gotoxy(x2,y2-1);
write(' ');
gotoxy(x2,y2);
write(' ');
gotoxy(x2,y2+1);
write(' ');
textcolor(ys1);
gotoxy(x1-1,y1+1);
write('*-<');
textcolor(ys2);
gotoxy(x2-1,y2+1);
write('>-*');
delay(2000);
nosound;
clrscr;
sound(1000);
textcolor(lightgreen);
gotoxy(36,10);
write('nobody wins');
end;
delay(5000);
nosound; //以下为判断是否继续
clrscr;
y:=true;
n:=false;
textcolor(7);
gotoxy(38,11);
write('REPLAY?');
gotoxy(24,12);
write('(A: right D: left Enter: dicide)');
while c<>#13 do begin
gotoxy(36,13);
if y then textcolor(blink) else textcolor(7);
write('yes');
textcolor(7);
write(' ');
if n then textcolor(blink) else textcolor(7);
write('no');
if keypressed then begin
c:=readkey;
if c='a' then begin
y:=true;
n:=false;
end
else if c='d' then begin
y:=false;
n:=true;
end
else if c=#13 then
if y then goto h; //重新开始
end;
end;
end.
- HDU4930 Fighting the Landlords 模拟
Fighting the Landlords Fighting the Landlords Time Limit: 2000/1000 MS (Java/Others) Memory Limit ...
- Z - Fighting 和 Depth-bias
Depth-bias操作在clipping之后进行实施,所以depth-bias对几何clipping没有影响. 另外需要注意的是:对一个给定体元(primitive),bias值是一个常量,在进行差 ...
- Codeforces Gym 100015F Fighting for Triangles 状压DP
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
- URAL 2025. Line Fighting (math)
2025. Line Fighting Time limit: 1.0 second Memory limit: 64 MB Boxing, karate, sambo- The audience i ...
- 【翻唱】Keep On Fighting
http://video.yingtu.co/0/77868591-502c-4af1-853b-d313e83c94a9.mp4 Keep On Fighting
- hdu4930 Fighting the Landlords(模拟 多校6)
题目链接:pid=4930">http://acm.hdu.edu.cn/showproblem.php? pid=4930 Fighting the Landlords Time L ...
- HDU 4930 Fighting the Landlords(扯淡模拟题)
Fighting the Landlords 大意: 斗地主... . 分别给出两把手牌,肯定都合法.每张牌大小顺序是Y (i.e. colored Joker) > X (i.e. Black ...
- Fighting regressions with git bisect---within git bisect algorithm
https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html Fighting regressions with gi ...
随机推荐
- .htaccess根据IP地址限制访问
屏蔽IP地址 屏蔽IP地址有时是非常必要的,比如对于一个外贸公司网站,来自国内的访问是不会带来任何经济效益的,而且还占用服务器资源,造成访问延迟等问题. 如果要屏蔽某一特定IP可以使用: order ...
- .htaccess保护目录与文件
一般来说很多虚拟主机预设是没有开启保护网站主机目录下的文件,其实很危险的,假若你的目录下忘记放置index文件,那很可能您目录就被看光,一个不小心很可能重要资料就被拿走,这是蛮严重的一件事情.如果是L ...
- easyui 之ComboTree 用法Demo
实现效果如下: HTML部分: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="ser ...
- MySql指令集
http://blog.csdn.net/cl05300629/article/details/9464007
- Python开发入门与实战10-事务
1. 事务 本章我们将通过一个例子来简要的说明“事务”,这个开发实战里经常遇到的名词.事务是如何体现在一个具体的业务和系统的实现里. 事务是通过将一组相关操作组合为一个,要么全部成功要么全部失败的单元 ...
- MVC乱码可能的原因
1.数据传输不对,或者根本没有进控制器 2.分部视图建立时一定要选择
- DES跨(C# Android IOS)三个平台通用的加解密方法
#region 跨平台加解密(c# 安卓 IOS) // public static string sKey = "12345678"; ...
- Steganography-图片隐写术
今天做DAM的作业,做到图片水印的时候,想起来当初小调同学把言页之庭的种子通过图片发给我.看到下面这个新闻真是觉得碉堡了!!技术宅又一次可以成功而隐晦的表白了!!哈哈哈!! http://war.16 ...
- CSS简单布局总结
display block 块级元素,占据一行 none 隐藏 inline 允许同一行显示,但不再有宽和高 inline-block 允许在一行的块级元素,可 ...
- HDU 1254
http://acm.hdu.edu.cn/showproblem.php?pid=1254 暴搜,状态是四维的(箱子和人的坐标),向一个方向推箱子还要判断人能否走到推的位置,1A #include ...