要编写一个找相同的数字的游戏,用pascal编写。
var num,i:longint;
function judge(x:longint):boolean;
var a,b,c,sum:longint;
begin
c:=x mod 10;
a:=x div 100;
b:=x mod 100;
b:=b div 10;
sum:=a+b;
if ((a=b)or(b=c)or(a=c)) then exit(false);
if (b<=(a+c)) then exit(false);
if ((sum=2)or(sum=3)or(sum=5)or(sum=7)or(sum=11)or(sum=13)or(sum=17)) then exit(false);
exit(true);
end;
begin
num:=0;
for i:=100 to 999 do
if judge(i) then
begin
inc(num);
write(i,' ');
if (num mod 8=0) then writeln;
end;
end.
pascal游戏
Fpc五子棋 功能强大(悔棋+存“棋谱”)
var pan:array[0..16,0..16] of string;
i,j,h1,h2,l1,l2,h,l,n,n1,n2,choose,z1,z2:integer;
ju1,ju2:array[0..10000] of string;
s1,s2,p1,p2:string;
hui1,hui2:boolean;
procedure juout;
begin
for i:=1 to z1 do
writeln(ju1[i],ju2[i]);
writeln('1 保存棋局');
writeln('2 退出');
read(choose);
case choose of
1:begin
assign(output,'五子棋棋局.txt');
rewrite(output);
for i:=1 to z1 do
writeln(ju1[i],ju2[i]);
close(output);
exit;
end;
2:exit;
end;
end;
procedure options;
begin
writeln('双方悔棋次数限定:');
writeln('(初始值为0)');
read(n);
n1:=n;
n2:=n;
end;
procedure out;
begin
write(' ');
for i:=1 to 15 do
write(i:2);
writeln;
for i:=1 to 15 do
begin
write(i:2);
for j:=1 to 15 do
write(pan[i,j]);
writeln;
end;
end;
function trytry1(h,l:integer):boolean;
var i,t:integer;
begin
trytry1:=false;
t:=0;
i:=0;
while pan[h-i,l]='○' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l]='○' do begin inc(i); inc(t); end;
if t>=6 then begin trytry1:=true; exit; end;
t:=0;
i:=0;
while pan[h,l-i]='○' do begin inc(i); inc(t); end;
i:=0;
while pan[h,l+i]='○' do begin inc(i); inc(t); end;
if t>=6 then begin trytry1:=true; exit; end;
t:=0;
i:=0;
while pan[h-i,l-i]='○' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l+i]='○' do begin inc(i); inc(t); end;
if t>=6 then begin trytry1:=true; exit; end;
t:=0;
i:=0;
while pan[h-i,l+i]='○' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l-i]='○' do begin inc(i); inc(t); end;
if t>=6 then begin trytry1:=true; exit; end;
end;
function trytry2(h,l:integer):boolean;
var i,t:integer;
begin
trytry2:=false;
t:=0;
i:=0;
while pan[h-i,l]='●' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l]='●' do begin inc(i); inc(t); end;
if t>=6 then begin trytry2:=true; exit; end;
t:=0;
i:=0;
while pan[h,l-i]='●' do begin inc(i); inc(t); end;
i:=0;
while pan[h,l+i]='●' do begin inc(i); inc(t); end;
if t>=6 then begin trytry2:=true; exit; end;
t:=0;
i:=0;
while pan[h-i,l-i]='●' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l+i]='●' do begin inc(i); inc(t); end;
if t>=6 then begin trytry2:=true; exit; end;
t:=0;
i:=0;
while pan[h-i,l+i]='●' do begin inc(i); inc(t); end;
i:=0;
while pan[h+i,l-i]='●' do begin inc(i); inc(t); end;
if t>=6 then begin trytry2:=true; exit; end;
end;
procedure game;
begin
repeat
inc(z1);
writeln('黑棋走子 请输入落子坐标');
read(h,l);
while (h=0) and(l=0) and(hui1=false) do
begin
writeln('对不起,双方不能连续悔棋');
read(h1,l1);
h:=h1;l:=l1;
while (pan[h1,l1]='○') or (pan[h1,l1]='●') or (h115) or(l115) do
begin
writeln('对不起 该处不能落子');
writeln('黑棋走子 请输入落子坐标');
read(h1,l1);
h:=h1;l:=l1;
end;
end;
while (h=0) and(l=0) and(n1=0) do
begin
writeln('对不起,您的悔棋机会已用完');
writeln('黑棋走子 请输入落子坐标');
readln(h,l);
while (pan[h,l]='○')or(pan[h,l]='●')or((h=0) and (l0))or((l=0) and (h0))or(h115)or(l115) do
begin
writeln('对不起 该处不能落子');
writeln('黑棋走子 请输入落子坐标');
read(h,l);
end;
end;
if (h0)and(l0) then begin h1:=h; l1:=l; end;
while (pan[h,l]='○')or(pan[h,l]='●')or((h=0) and (l0))or((l=0) and (h0))or(h115)or(l115) do
begin
writeln('对不起 该处不能落子');
writeln('黑棋走子 请输入落子坐标');
read(h,l);
if (h0)and(l0) then begin h1:=h; l1:=l; end;
end;
if (h0) and(l0) then
begin
s1:=pan[h1,l1];
pan[h1,l1]:='○';
hui2:=true;
str(h1,p1);str(l1,p2);
ju1[z1]:='黑棋在'+p1+','+p2+'落子 ';
out;
end;
while (h=0) and (l=0) do
begin
pan[h1,l1]:=s1;
pan[h2,l2]:=s2;
out;
writeln('黑棋悔棋');
writeln('黑棋走子 请输入落子坐标');
hui2:=false;
dec(n1);
dec(z1);
dec(z2);
ju2[z2]:='';
ju1[z1]:='';
writeln('还可悔棋',n1,'次');
read(h1,l1);
h:=h1;
l:=l1;
while (pan[h1,l1]='○') or (pan[h1,l1]='●') or (h115) or(l115) do
begin
writeln('对不起 该处不能落子');
writeln('黑棋走子 请输入落子坐标');
read(h1,l1);
end;
s1:=pan[h1,l1];
pan[h1,l1]:='○';
hui2:=false;
str(h1,p1);str(l1,p2);
ju1[z1]:='黑棋在'+p1+','+p2+'落子 ';
out;
end;
if trytry1(h1,l1)=true then begin writeln('黑棋胜'); readln; juout; break; end;
inc(z2);
writeln('白棋走子 请输入落子坐标');
read(h,l);
while (h=0) and(l=0) and(hui2=false) do
begin
writeln('对不起,双方不能连续悔棋');
read(h2,l2); h:=h2;l:=l2;
while (pan[h2,l2]='○') or (pan[h2,l2]='●') or (h215) or(l215) do
begin
writeln('对不起 该处不能落子');
writeln('白棋走子 请输入落子坐标');
read(h2,l2);
h:=h2;l:=l2;
end;
end;
while (h=0) and(l=0) and(n2=0) do
begin
writeln('对不起,您的悔棋机会已用完');
writeln('白棋走子 请输入落子坐标');
readln(h,l);
while (pan[h,l]='○')or(pan[h,l]='●')or((h=0) and (l0))or((l=0) and (h0))or(h115)or(l115) do
begin
writeln('对不起 该处不能落子');
writeln('白棋走子 请输入落子坐标');
read(h,l);
end;
end;
if (h0)and(l0) then begin h2:=h; l2:=l; end;
while (pan[h,l]='○')or(pan[h,l]='●')or((h=0) and (l0))or((l=0)and (h0))or(h215)or(l215) do
begin
writeln('对不起 该处不能落子');
writeln('白棋走子 请输入落子坐标');
read(h,l);
if (h0)and(l0) then begin h2:=h; l2:=l; end;
end;
if (h0) and(l0) then
begin
s2:=pan[h2,l2];
pan[h2,l2]:='●';
hui1:=true;
str(h2,p1);str(l2,p2);
ju2[z2]:='白棋在'+p1+','+p2+'落子 ';
out;
end;
while (h=0) and (l=0) do
begin
pan[h1,l1]:=s1;
pan[h2,l2]:=s2;
out;
writeln('白棋悔棋');
writeln('白棋走子 请输入落子坐标');
hui1:=false;
dec(n2);
dec(n1);
ju1[z1]:='';
ju2[z2]:='';
writeln('还可悔棋',n2,'次');
read(h2,l2);
h:=h2;
l:=l2;
while (pan[h2,l2]='○') or (pan[h2,l2]='●') or (h215) or(l215) do
begin
writeln('对不起 该处不能落子');
writeln('白棋走子 请输入落子坐标');
read(h2,l2);
end;
s2:=pan[h2,l2];
str(h2,p1);str(l2,p2);
ju2[z2]:='白棋在'+p1+','+p2+'落子 ';
pan[h2,l2]:='●';
out;
end;
if trytry2(h2,l2)=true then begin writeln('白棋胜'); readln; juout; break; end;
until 1=2;
end;
begin
writeln('欢迎使用Free Pascal游戏程序');
readln;
writeln('作者:丁浩玙');
readln;
writeln('翻版必究');
readln;
writeln('QQ:541600517');
readln;
writeln;
writeln('游戏——五子棋');
readln;
n1:=0;
n2:=0;
while choose1 do
begin
writeln('1 开始游戏');
writeln('2 游戏说明');
writeln('3 设置');
writeln('4 退出');
readln(choose);
case choose of
1:;
2:begin
writeln('本游戏规则与传统五子棋规则相同,落子时需输入落子的行列;悔棋需在己方回合内输入“0 0”即可,双方不可连续悔棋');
readln;
end;
3:begin options; readln; end;
4:exit;
end;
end;
z1:=0;
z2:=0;
hui1:=false;
hui2:=false;
for i:=2 to 14 do
for j:=2 to 14 do
pan[i,j]:='╋';
for i:=1 to 15 do
begin
pan[1,i]:='┳';
pan[i,1]:='┣';
pan[15,i]:='┻';
pan[i,15]:='┫';
end;
pan[1,1]:='┏';
pan[1,15]:='┓';
pan[15,1]:='┗';
pan[15,15]:='┛';
out;
readln;
writeln('////游戏开始\\\\');
game;
readln;
readln;
end.
pascal编程:数字游戏
不一定是最优,仅提供一种思路 !vara:array[1..15,1..15] of integer;p,d,d0:array[1..15] of integer;b:array[1..15] of boolean;i,j,n:integer;sum:integer;find:boolean;function s:integer;vari,j:integer;beginfor j:=1 to n do a[1,j]:=d[j];for i:=2 to n do for j:=1 to n-i+1 do a[i,j]:=a[i-1,j]+a[i-1,j+1];s:=a[n,1];end;procedure pailie(x:integer);varm:integer;beginif x>n then beginif s=sum then begin for m:=1 to n do write(d[m]:3); writeln;find:=true; end;end else for m:=1 to n do if (not b[m])and(not find) then begin d0:=d; d[x]:=p[m]; b[m]:=true; pailie(x+1); b[m]:=false; d:=d0; end; end;beginn:=12;sum:=13312;find:=false;for i:=1 to n do begin p[i]:=i; b[i]:=false; end;pailie(1);end.
求编程高手解答(PASCAL)
都是模拟的吧
1.
var n,m,k,k1,k2,i,st,en:longint;
a:array[1..500] of boolean;
b0:boolean;
begin
readln(n,m);
fillchar(a,sizeof(a),1);
if m=1 then begin writeln(n); halt; end;
k:=0;
k2:=n;
st:=1; en:=n;
repeat
if not b0 then inc(k) else dec(k);
if k>en then begin k:=en-1; b0:=true; end;
if k<st then begin k:=st+ 1; b0:=false; end;
if a[k] then inc(k1);
if k1=m then begin
k1:=0;
a[k]:=false;
writeln(k);
if st=k then begin inc(st); k:=st-1; b0:=not b0; end;
if en=k then begin dec(en); k:=en+1; b0:=not b0; end;
dec(k2);
if k2=1 then break;
end;
until false;
for i:=1 to n do if a[i] then writeln(i);
end.
2.
var n:longint;
res:int64;
begin
readln(n);
repeat
if n<10 then writeln(n) else write(n,' ');
if n<10 then break;
res:=1;
repeat
res:=res*(n mod 10);
n:=n div 10;
if n=0 then break;
until false;
n:=res;
until false;
end.
游戏一般用什么编程语言开发?
一般的大型游戏开发不是单一用某一种软件语言的问题。一个大型游戏的开发需要非常大的团队用各种各样的语言和工具来完成。
总结一下主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
首先一般的游戏开发架构(Windows平台)从底到顶一般是Direct X™——游戏引擎——游戏。
大型游戏开发的大部分工作其实都是在编写游戏脚本,脚本是大型游戏得以如此高速开发和发布的主要原因。脚本化的开发让游戏开发摆脱了硬编码的种种弊端,让游戏内容可以轻易的修改和调试。比如比较流行的语言。,然后编写脚本将其组织成一个游戏,不需要什么底层的编程语言。
Windows平台比较流行的方法是使用最新版本的Visual Studio,显卡厂商如NVIDIA也会为VS开发一些插件来简化显卡编程和调试。扩展资料:
汇编语言
为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是就产生了汇编语言。所以说,汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号语言。
汇编语言由于是采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码。而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言中由于使用了助记符号,用汇编语言编制的程序送入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的 “汇编程序“的加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。
用汇编语言等非机器语言书写好的符号程序称源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。汇编语言是低级语言。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
高级语言
不论是机器语言还是汇编语言都是面向硬件的具体操作的,语言对机器的过分依赖,要求使用者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推广应用是不利的。计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。
这种与自然语言相近并为计算机所接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机,只要配备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以通用。
如今被广泛使用的高级语言有BASIC、PASCAL、C、COBOL、FORTRAN、LOGO以及VC、VB等。这些语言都是属于系统软件。
计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译方式和解释方式。
编译方式是:事先编好一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户由高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是:源程序进入计算机时,解释程序边扫描边解释作逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。
PASCAL、 FORTRAN、COBOL等高级语言执行编译方式;BASIC语言则以执行解释方式为主;而PASCAL、C语言是能书写编译程序的高级程序设计语言。每一种高级(程序设计)语言,都有自己人为规定的专用符号、英文单词、语法规则和语句结构(书写格式)。高级语言与自然语言(英语)更接近,而与硬件功能相分离(彻底脱离了具体的指令系统),便于广大用户掌握和使用。高级语言的通用性强,兼容性好,便于移植
游戏一般用什么编程语言开发?
Unity。语言:C#,Lua。UE4。语言:蓝图,C++H5游戏,例如微信小游戏、网页游戏。主要用到JavaScript和相关技术其他。独立游戏圈流行的MonoDevelop(C#)、Love2D(Lua)等等;还有大厂采用自研引擎的,但是近几年大量转向UE4和Unity。现代游戏开发,绝大部分人都会采用成熟引擎来制作,并不是从0开始写起。对游戏引擎来说,编程语言并不重要。学习编程和学习游戏开发有很大重叠,但并不是会编程就会开发游戏,反过来也还是不对。客观的说,引擎的使用方法是必学的,编程技术也要基本合格。
给我一个用free pascal编译的游戏程序
program xcvbn; varplife,plifemax,patt,pre:integer;gr,ex,exmax:integer;alife,alife1,aatt,are:integer;name,fname:string;na:text;code,co:string;dz:integer;money:longint;mp,mpmax:integer;red,blue,knife,clothes:integer;i:integer;god:array[1..100] of 1..7;godthing:integer;procedure bag;varobj:integer;beginwriteln;writeln;writeln('百宝箱:');writeln('1:红色药丸: ',red,' 2:兰色药丸: ',blue,' 3:神剑:',knife,' 4:防身衣:',clothes,' 5;离开');writeln;writeln;writeln('请选择:');repeatreadln( obj);case obj of1:beginif red>0 then beginred:=red-1;plife:=plife+40;if plife>plifemax then plife:=plifemax;end;end;2:beginif blue>0 then beginblue:=blue-1;mp:=mp+40;if mp>mpmax then mp:=mpmax;end;end;3:beginif knife>0 then beginknife:=knife-1;patt:=patt+15;end;end;4:beginif clothes>0 then beginclothes:=clothes-1;pre:=pre+15;end;end;end;writeln;writeln;writeln;until obj=5;exit;end;procedure bagplus(sh:integer);begincase sh of1:red:=red+1;2:blue:=blue+1;3:knife:=knife+1;4:clothes:=clothes+1;end;end;procedure shop;varob:integer;beginwriteln;writeln;writeln('欢迎来到商店!');writeln(' 1:红色药丸 2:兰色药丸 3:神剑 4:防身衣 5:离开');writeln(' $15 $15 $30 $30');writeln;writeln('你想买什么?');writeln;repeatreadln(ob);case ob of1:beginif money>=15 thenbeginmoney:=money-15;bagplus(1);writeln('OK!');writeln(' 1:红色药丸 2:兰色药丸 3:神剑 4:防身衣 5:离开');writeln(' $15 $15 $30 $30');writeln;writeln('你想买什么?');writeln;endelse writeln('钱不够啊,老大!');end;2:beginif money>=15 thenbeginmoney:=money-15;bagplus(2);writeln('OK!');writeln(' 1:红色药丸 2:兰色药丸 3:神剑 4:防身衣 5:离开');writeln(' $15 $15 $30 $30');writeln;writeln('你想买什么?');writeln;endelse writeln('钱不够啊,老大!');end;3:beginif money>=30 thenbeginmoney:=money-30;bagplus(3);writeln('OK!');writeln(' 1:红色药丸 2:兰色药丸 3:神剑 4:防身衣 5:离开');writeln(' $15 $15 $30 $30');writeln;writeln('你想买什么?');writeln;endelse writeln('钱不够啊,老大!');end;4:beginif money>=30 thenbeginmoney:=money-30;bagplus(4);writeln('OK!');writeln(' 1:红色药丸 2:兰色药丸 3:神剑 4:防身衣 5:离开');writeln(' $15 $15 $30 $30');writeln;writeln('你想买什么?');writeln;endelse writeln('钱不够啊,老大!');end;end;until ob=5;exit;end;procedure storm;varka,kp:integer;beginif mp>=30 then beginwriteln;writeln;writeln('破天一剑!!!!!!!!!!');writeln(' 怪物生命:',alife1);writeln('你的生命:',plife,'/',plifemax);kp:=(random(patt)-random(are))*33; ;if kp>0 then beginwriteln('攻击!!怪物得到',kp,' 伤害!?!');alife1:=alife1-kp;endelse beginwriteln('你无法攻击');end;ka:=aatt-pre+random(aatt div 4)-aatt div 2;if ka>0 then beginwriteln('怪物攻击!!你得到',ka,' 伤害!?!');plife:=plife-ka;endelse beginwriteln( ' 怪物无法攻击');end;mp:=mp-30;endelse writeln('魔力不够!!');end;procedure wall;varka,kp:integer;beginif mp>=15 then beginwriteln;writeln;writeln('你用雷光!!!!');writeln('怪物生命:',alife1);writeln('你的生命:',plife,'/',plifemax);kp:=(random(patt)-random(are))*26;if kp>0 then beginwriteln('攻击!!怪物得到',kp,' 伤害!?!');alife1:=alife1-kp;endelse beginwriteln('你输了');end;ka:=aatt-pre+random(aatt div 4)-aatt div 2;if ka>0 then beginwriteln('怪物攻击!!你得到',ka,' 伤害!?!');plife:=plife-ka;endelse beginwriteln( ' 你赢了!!!!!');end;mp:=mp-10;endelse writeln('生命不够!!');end;procedure ball;varka,kp:integer;beginif mp>=5 then beginwriteln;writeln;writeln('你用粉碎神拳!!!');writeln('怪物生命:',alife1);writeln('你的生命:',plife,'/',plifemax);kp:=(random(patt)-random(are))*20;if kp>0 then beginwriteln('攻击!!怪物得到',kp,' 伤害!?!');alife1:=alife1-kp;endelse beginwriteln('你输了');end;ka:=aatt-pre+random(aatt div 4)-aatt div 2;if ka>0 then beginwriteln('怪物攻击!!你得到',ka,' 伤害!?!');plife:=plife-ka;endelse beginwriteln( ' 你赢了!!!!!');end;mp:=mp-10;endelse writeln('生命不够!!');end;procedure magic;varma:integer;beginwriteln;writeln;writeln('1. 粉碎神拳 [5] 2. 雷光 [15] 3.破天一剑 [30]');writeln('魔法值: ',mp,'/',mpmax);read(ma);case ma of1:ball;2:wall;3:storm;end;end;procedure plusmoney;varmoney1:longint;beginmoney1:=random(alife);writeln;writeln;writeln('你得到 $',money1);money:=money1+money;end;procedure load;beginclose(na);writeln;writeln;writeln('你的名字: ');readln;readln(name);fname:=concat(name,'.txt');assign(na,fname);reset(na);readln(na,code);writeln('输入密码:');readln(co);if cocode thenbeginwriteln('密码错误');readln;halt;end;readln(na,plife);readln(na,plifemax);readln(na,patt);readln(na,pre);readln(na,ex);readln(na,exmax);readln(na,gr);readln(na,money);readln(na,mp);readln(na,mpmax);readln(na,red);readln(na,blue);readln(na,knife);readln(na,clothes);end;procedure save;var i:integer;beginclose(na);assign(na,fname);rewrite(na);writeln(na,code);writeln(na,plife);writeln(na,plifemax);writeln(na,patt);writeln(na,pre);writeln(na,ex);writeln(na,exmax);writeln(na,gr);writeln(na,money);writeln(na,mp);writeln(na,mpmax);writeln(na,red);writeln(na,blue);writeln(na,knife);writeln(na,clothes);writeln(na,godthing);for i:=1 to godthing do writeln(god[i]);writeln;writeln;writeln('save successfully');writeln;writeln;end;procedure see;var i:integer;beginwriteln('你的名字: ',name);writeln('你的生命: ',plife,'/',plifemax);writeln('攻击力: ',patt);writeln('防御力: ',pre);writeln('经验: ',ex);writeln('升级经验',exmax);writeln('级数: ',gr);writeln('钞票:',money);writeln('魔力: ',mp,'/',mpmax);write('光之七神器:');for i:=1 to godthing do write(god[i],' ');writeln;writeln('百宝箱:');writeln('红色药丸:',red);writeln('兰色药丸:',blue);writeln('神剑:' ,knife);writeln('防身衣:',clothes);writeln;writeln;end;procedure people;beginplife:=100;plifemax:=100;patt:=20;pre:=15;money:=100;gr:=1;ex:=0;exmax:=20;mp:=50;mpmax:=50;red:=5;blue:=5;knife:=0;clothes:=0;end;procedure old;var i:integer;beginwriteln('输入你的名字 :');readln;readln(name);fname:=concat(name,'.txt');assign(na,fname);reset(na);readln(na,code);writeln('输入密码:');readln(co);if cocode thenbeginwriteln('密码错误!');readln;halt;end;readln(na,plife);readln(na,plifemax);readln(na,patt);readln(na,pre);readln(na,ex);readln(na,exmax);readln(na,gr);readln(na,money);readln(na,mp);readln(na,mpmax);readln(na,red);readln(na,blue);readln(na,knife);readln(na,clothes);readln(na,godthing);for i:=1 to godthing do readln(god[i]);end;procedure new;var i:integer;beginwriteln( ' 输入你的名字: ');readln;readln(name);if name'0' then beginfname:=concat(name,'.txt');assign(na,fname);rewrite(na);writeln('输入密码');readln(code);writeln(na,code);people;writeln(na,plife);writeln(na,plifemax);writeln(na,patt);writeln(na,pre);writeln(na,ex);writeln(na,exmax);writeln(na,gr);writeln(na,money);writeln(na,mp);writeln(na,mpmax);writeln(na,red);writeln(na,blue);writeln(na,knife);writeln(na,clothes);writeln(godthing);for i:=1 to godthing do writeln(god[i]);endelse halt;end;procedure denlu;vardl:byte;beginwriteln('-------------------自制的游戏不要笑----------------------');writeln('-----------------------仅供娱乐----------------------');writeln('1: 新游戏 2:老游戏 3:退出');read(dl);case dl of1:new;2:old;3:halt;end;end;procedure godthing2;varqi:integer;beginrandomize;qi:=random(50);case qi of0,8:beginwriteln('得到光之七神具----1:辟天宝剑');writeln('攻击增加60点!!!');patt:=patt+60;godthing:=godthing+1;god[godthing]:=1;end;3,16:beginwriteln('得到光之七神具----2:开地玄远剑');writeln('攻击力*2');patt:=patt*2;godthing:=godthing+1;god[godthing]:=2;end;end;end;procedure grow;beginif ex>=exmax then beginplife:=plifemax+50;plifemax:=plife;patt:=patt+15;pre:=pre+15;mpmax:=mpmax+30;mp:=mpmax;ex:=0;gr:=gr+1;exmax:=exmax+100;writeln('升级!!');godthing2;writeln;writeln;end;end;procedure experience;beginrandomize;ex:=ex+random(alife)+30;grow;end;procedure attack;varwin,lost,run:boolean;ch,ff,kp,ka:integer;procedure winner;beginwin:=false;if alife1<1 then win :=true;end;procedure loster;beginlost:=false;if plife<1 then lost:=true;end;beginwin:=false;lost:=false;run:=false;writeln('1:攻击; 2:逃跑');writeln('你的生命:',plife,'/',plifemax);writeln('你的魔法值: ',mp,'/',mpmax);readln(ch);if ch=1 then beginalife1:=alife;repeatwriteln;writeln;writeln('1:物理¥攻击; 2:魔法¥攻击; 3:用百宝箱; 4.逃跑 ');read(ff);case ff of1:beginwriteln;writeln;writeln;writeln;{}kp:=random(patt)-random(are);if kp>0 then beginwriteln('你攻击!!怪物受到',kp,' 伤害');alife1:=alife1-kp;endelse beginwriteln('你输了');end;ka:=random(aatt)-random(pre);if ka>0 then beginwriteln('怪物攻击,你得到',ka,' 伤害');plife:=plife-ka;endelse beginwriteln( '怪物输了');end;writeln(' 怪物生命:',alife1);writeln('你生命:',plife,'/',plifemax);writeln('你的魔法值: ',mp,'/',mpmax);end;2:beginmagic;end;3:beginbag;end;4:beginrun:=true;writeln('逃跑失败');end;end;winner;loster;until win or lost or run;if win then begin experience; plusmoney; writeln('你赢了!!!'); writeln; end;if lost thenbeginwriteln('输了');readln;halt;end;endelse exit;end;procedure animal;beginalife:=plifemax+random(50);if plifemax=100 then beginaatt:=15;are:=10;endelse beginaatt:=aatt+10;are:=are+7;end;attack;end;procedure meet;varcc:integer;beginrandomize;cc:=random(100);if cc<40 then beginwriteln;writeln('你遇见一个怪物');animal;endelse writeln('没碰到.......');end;procedure choose;beginwriteln('1:找怪物; 2:去商店; 3:读取; 4:保存; 5:退出 6:查看 7:用百宝箱');read(dz);case dz of1:meet;2:shop;3:load;4:save;6:see;7:bag;end;end;begindenlu;while dz5 dochoose;close(na);end.魔兽
求一个free pascal的小游戏
USES Crt;
CONST
Change:Array [0..6,0..3,0..7] Of Byte =(((0,1,1,1,2,1,3,1),(1,0,1,1,1,2,1,3),(0,1,1,1,2,1,3,1),(1,0,1,1,1,2,1,3)),
((1,0,0,1,1,1,2,1),(1,0,1,1,1,2,2,1),(0,1,1,1,2,1,1,2),(1,0,0,1,1,1,1,2)),
((1,0,2,0,1,1,2,1),(1,0,2,0,1,1,2,1),(1,0,2,0,1,1,2,1),(1,0,2,0,1,1,2,1)),
((1,0,2,0,0,1,1,1),(0,0,0,1,1,1,1,2),(1,0,2,0,0,1,1,1),(0,0,0,1,1,1,1,2)),
((0,0,1,0,1,1,2,1),(1,0,0,1,1,1,0,2),(0,0,1,0,1,1,2,1),(1,0,0,1,1,1,0,2)),
((1,0,2,0,1,1,1,2),(0,0,0,1,1,1,2,1),(1,0,0,2,1,1,1,2),(2,2,0,1,1,1,2,1)),
((0,0,1,0,1,1,1,2),(2,0,0,1,1,1,2,1),(2,2,1,0,1,1,1,2),(0,2,0,1,1,1,2,1)));
VAR
Board:Array [0..3,0..11,1..25] Of Byte;
Players,N,Nowx,Nowy,Kind,Trans,Speed:Byte;
Time,Score:Word;
Now:Array [0..7] Of Byte;
PROCEDURE Furbish;
VAR B,C:Byte;
Begin
For C:=24 Downto 2 Do Begin
Gotoxy(1,C);
For B:=1 To 10 Do
If Board[0,B,C]=0 Then Write(' ')
Else Write('圹');
End;
End;
PROCEDURE Clear;
Var A,B,C:Byte;D:Boolean;
Begin
For A:=24 Downto 1 Do
Begin
D:=True;
For B:=1 To 10 Do
If Board[0,B,A]=0 Then D:=False;
If D=True Then
Begin
Score:=Score+10;Gotoxy(1,1);Write(Score:5,'0');
For C:=A Downto 2 Do
For B:=1 To 10 Do
Board[0,B,C]:=Board[0,B,C-1];
A:=A+1;
End;
End;
Furbish;
End;
FUNCTION Canmove(X,Y:Byte):Boolean;
BEGIN
Canmove:=True;
If Board[0,X+Now[0],Y+Now[1]]>0 Then Canmove:=False;
If Board[0,X+Now[2],Y+Now[3]]>0 Then Canmove:=False;
If Board[0,X+Now[4],Y+Now[5]]>0 Then Canmove:=False;
If Board[0,X+Now[6],Y+Now[7]]>0 Then Canmove:=False;
End;
PROCEDURE Clean;
Begin
Gotoxy((Nowx+Now[0])*2-1,Nowy+Now[1]);Write(' ');
Gotoxy((Nowx+Now[2])*2-1,Nowy+Now[3]);Write(' ');
Gotoxy((Nowx+Now[4])*2-1,Nowy+Now[5]);Write(' ');
Gotoxy((Nowx+Now[6])*2-1,Nowy+Now[7]);Write(' ');
End;
PROCEDURE Show;
Begin
Gotoxy((Nowx+Now[0])*2-1,Nowy+Now[1]);Write('圹');
Gotoxy((Nowx+Now[2])*2-1,Nowy+Now[3]);Write('圹');
Gotoxy((Nowx+Now[4])*2-1,Nowy+Now[5]);Write('圹');
Gotoxy((Nowx+Now[6])*2-1,Nowy+Now[7]);Write('圹');
End;
BEGIN
Fillchar(Board,Sizeof(Board),0);
Randomize;Score:=0;
For N:=1 To 24 Do
Board[0,0,N]:=1;
For N:=1 To 24 Do
Board[0,11,N]:=1;
For N:=1 To 10 Do
Board[0,N,25]:=1;
Window(31,2,50,25);Textcolor(White);Textbackground(Blue);
Clrscr;Window(31,2,51,25);
Speed:=1;
Kind:=Random(7);Trans:=Random(4);Nowx:=4;Nowy:=1;
For N:=0 To 7 Do
Now[N]:=Change[Kind,Trans,N];
While Canmove(Nowx,Nowy) Do
Begin
Repeat
Clean;Nowy:=Nowy+1;Show;
Repeat
If Keypressed Then
Case Upcase(Readkey) Of
#0:Case Readkey Of
#75:If Canmove(Nowx-1,Nowy) Then Begin Clean;Nowx:=Nowx-1;Show;End;
#77:If Canmove(Nowx+1,Nowy) Then Begin Clean;Nowx:=Nowx+1;Show;End;
#80:Begin Clean;Repeat
If Canmove(Nowx,Nowy+1) Then Nowy:=Nowy+1;
Until Not(Canmove(Nowx,Nowy+1));Show;End;
#61:Begin Gotoxy(9,12);Write('Pause');Repeat Delay(1000);Until Keypressed;Furbish;End;
End;
#27:Exit;
' ',#13:Begin
Clean;Trans:=Trans+1;
If Trans=4 Then Trans:=0;
For N:=0 To 7 Do
Now[N]:=Change[Kind,Trans,N];
If Not(Canmove(Nowx,Nowy)) Then Begin Trans:=Trans-1;For N:=0 To 7 Do
Now[N]:=Change[Kind,Trans,N];Show;End
Else Show;
End;
End;
Until Not(Keypressed);
Delay((10-Speed)*50);
Until Not(Canmove(Nowx,Nowy+1));
Score:=Score+1;Gotoxy(1,1);Write(Score:5,'0');Speed:=(Score Div 300)+1;
Board[0,Nowx+Now[0],Nowy+Now[1]]:=1;
Board[0,Nowx+Now[2],Nowy+Now[3]]:=1;
Board[0,Nowx+Now[4],Nowy+Now[5]]:=1;
Board[0,Nowx+Now[6],Nowy+Now[7]]:=1;
Clear;
Kind:=Random(7);Trans:=Random(4);Nowx:=4;Nowy:=1;
For N:=0 To 7 Do
Now[N]:=Change[Kind,Trans,N];
End;
Gotoxy(7,12);Write('GAME OVER');Readln;
END.
2003 pascal复赛 编程的试题和答案
首先,你没说清是普及组还是提高组。
其次,网上的解题报告满天飞,搜一下就有。
我说了,从网上一搜就有,而且字数太多百度不让贴,而且你最好先自己编一下,而且...,do you know?
NOIP2003普及组复赛试题
大榕树 http://drs.126.com
题一、乒乓球(Table.pas)
【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
【输入格式】每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成。其中E表示比赛信息结束,程序应该忽略E之后的所有内容。
【输出格式】输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【输入样例】
WWWWWWWWWWWWWWWWWWWW
WWLWE
【输出样例】
11:0
11:0
1:1
21:0
2:1
题二、数字游戏(Game.pas)
【问题描述】丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。
例如,对于下面这圈数字(n=4,m=2):
当要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod 10)×(-1 mod 10)=9×9=81。特别值得注意的是,无论是负数还是正数,对10取模的结果均为非负值。
丁丁请你编写程序帮他赢得这个游戏。
【输入格式】输入文件第一行有两个整数,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有个整数,其绝对值不大于104,按顺序给出圈中的数字,首尾相接。
【输出格式】输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值,第二行是最大值。
【输入样例】
4 2
4
3
-1
2
【输出样例】
7
81
题三、栈(Stack.pas)
【问题背景】栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。
栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。
栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。
【问题描述】
宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n。
现在可以进行两种操作,
1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的push操作)
2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的pop操作)
使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由1 2 3生成序列2 3 1的过程。(原始状态如上图所示)
你的程序将对给定的n,计算并输出由操作数序列1,2,…,n经过操作可能得到的输出序列的总数。
【输入格式】
输入文件只含一个整数n(1≤n≤18)
【输出格式】
输出文件只有一行,即可能输出序列的总数目
【输入样例】
3
【输出样例】
5
题四、麦森数(Mason.pas)
【问题描述】形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。
任务:从文件中输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示)
【输入格式】
文件中只包含一个整数P(1000<P<3100000)
【输出格式】
第一行:十进制高精度数2P-1的位数。
第2-11行:十进制高精度数2P-1的最后500位数字。(每行输出50位,共输出10行,不足500位时高位补0)
不必验证2P-1与P是否为素数。
【输入样例】
1279
【输出样例】
386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087
pascal~~~noip2003普及组第一题 乒乓球的一个问题
1.读入的是一个一个字符,不是字符串,最后的结束符号是'E',所以读到'E'停止;(注意读入语句是read而不是readln)
2.while true do会一直循环下去,如果你不强行终止的话;不过注意到循环中有个break语句,那是终止的操作;
3.这个语句的意思是比分至少相差2才能分出胜负;比如10:10时要打到12:10才能赢,而不是11:10。
pascal的简单程序问题。
LZ的错误有两处。
第一处:
if(b=100)then c:=1000*a+b else
if(b=10)then c:=100*a+b else
if(b=1)then c:=10*a+b
write(c);
这个地方,if(b=1)then c:=10*a+b最后要加上分号,即 if(b=1)then c:=10*a+b;
第二处,请LZ注意自己语句的逻辑关系,
if(a0) then
begin
if(b>999)
then write('cuowu');
end
这一句你用一个BEGIN END结束了 if(b>999) then write('cuowu'); 的逻辑关系,所以,下面紧接着的ELSE表示不满足条件if(a0)。这样的话,也就说你的程序中主体部分中只有1个IF语句,但你在程序的结尾 else write('cuowu');请LZ自己看看,这个ELSE是没有IF语句在前面作为条件语句的,所以最后这句else write(