关于可以抽签的编程。
开始
随机化;
writeln("恭喜你!",随机(& ltNumbers > )+1,“赢了!”);
结束。
可以播放的节目?这里是一个贪吃蛇程序,原创,但是好像有bug(对游戏没有影响)
程序GReedySNAKE
使用Crt
const up = 0;
右= 1;
down = 2;
左= 3;
平常= 0;
奖金= 1;
shorten = 2;
类型点=记录
x,y:整数;
结束;
tfood类型=记录
fpoint:点;
ftype:byte;
的大小写字节
平常:();
奖金:
(b time:word;
bs core:byte);
缩短:
(stime:word;
slength:byte);
结束;
var cur,bin:point;
食物:tfood
轨道:数组[1..200]的点;
ch:char;
dir:字节;
hit:布尔型;
int,length,score:整数;
函数p zero(p:point):boolean;
var bool:布尔型;
开始
如果(p.x=0)和(p.y=0 ),则
布尔:=真
其他
bool:= false;
p zero:= bool;
结束;
过程p write(p:point;ch:char);
开始
如果不是pzero(p ),则
开始
gotoxy(p.x,p . y);
写(ch);
结束;
结束;
函数psame(p,p2:point):boolean;
var bool:布尔型;
开始
如果(p.x=p2.x)和(p.y=p2.y ),则
布尔:=真
其他
bool:= false;
psame:= bool;
结束;
过程pset(var p:point;x2,y2:整数);
开始
p . x:= x2;
p . y:= y2;
结束;
过程new food(var s food:t food);
var int2:整数;
好的:布尔型;
开始
用sfood做
开始
pwrite(fpoint,' ');
ftype:= random(9);
如果(ftype=3)或(ftype=4)那么ftype:= 1;
如果ftype=5,则ftype:= 2;
如果ftype & gt5那么ftype:= 0;
案例类型
通常:;
奖金:
开始
btime:=(random(3)+4)* 20;{20=1000/50}
bs core:= 8-(btime div 20);
结束;
缩短:
开始
如果3 & gt那么长度
ftype:=通常
其他
开始
stime:=(random(3)+4)* 20;
slength:= random(2)+1;
结束;
结束;
结束;
重复
好的:=真;
pset(fpoint,random(78)+2,random(46)+2);
对于int:=1到长度do
okay:=okay and (not psame(fpoint,track[int]);
okay:=okay and(非psame(fpoint,cur)) and(非psame(fpoint,bin));
直到还好;
案例类型
通常:
开始
textcolor(浅洋红色);
pwrite(fpoint,# 3);
textcolor(黄色);
结束;
奖金:
开始
textbackground(红色);
pwrite(fpoint,' B ');
textbackground(黑色);
结束;
缩短:
开始
textbackground(绿色);
pwrite(fpoint,' S ');
textbackground(黑色);
结束;
结束;
结束;
结束;
程序newtrack
var int:integer;
开始
pwrite(bin,' ');
对于int:=1到长度do
pwrite(track[int],# 219);
textcolor(浅红色);
pwrite(cur,# 2);
textcolor(黄色);
gotoxy(cur.x,cur . y);
结束;
开始
随机化;
check break:= false;
textbackground(黑色);
textcolor(黄色);
clrscr
writeln('贪婪的蛇');
writeln('使用',#27#24#25#26,'键来控制蛇。');
writeln(‘持续按下其中一个键可以让蛇跑得更快。’);
textcolor(浅洋红色);
写(# 3);
textcolor(黄色);
writeln('普通食物,吃了得分+10。');
textbackground(红色);
写(' B ');
textbackground(黑色);
writeln('奖励食物,如果吃了得分+40或60或80。“快吃吧!”);
writeln('如果被吃掉,蛇的长度会大大增加。');
writeln('所以尽量吃这种食物:');
textbackground(绿色);
写(' S ');
textbackground(黑色);
用食物来缩短蛇的长度。也要快!”);
writeln('蛇的最大长度是201。');
writeln(‘如果长度真的是201,游戏就结束了。’);
writeln('不要让蛇撞到墙壁或它的身体!');
writeln(' P '键:暂停,暂停时按任意键继续。);
writeln('注意:(1)游戏前最好按Alt-Enter。');
writeln(' (2)如果蛇走得太快,再试试打开它。');
writeln('按任意键继续...');
ch:= read key;
如果ch=#0那么ch:= read key;
clrscr
writeln('谈经验:');
writeln('(1)连续按',#27#24#25#26,'键中的一个可以使蛇变快,');
writeln('小心使用这个!');
writeln('应该只在食物不平常的时候使用。');
writeln('(2)当蛇的长度过长时,');
writeln(‘最好放弃吃奖励食品的机会。’);
writeln('(3)最好不要一而再、再而三地追逐奖金食物!');
writeln('也许蛇会撞到它的身体。');
只谈经验。用不用,这是你的选择。);
writeln('按任意键继续...');
ch:= read key;
如果ch=#0那么ch:= read key;
text mode(8060);
textbackground(黑色);
clrscr
textcolor(黄色);
pset(cur,1,1);
对于int:=1到100 do
pset(track[int],0,0);
pset(bin,0,0);
长度:= 1;
得分:= 0;
dir:= right;
textbackground(红色);
gotoxy(1,50);
writeln
writeln
textbackground(蓝色);
写('长度: ',长度+1);
gotoxy(1,49);
写('分数: ',分数);
textbackground(黑色);
textcolor(红色);
gotoxy(1,1);
写(# 2);
gotoxy(1,1);
textcolor(黄色);
newfood(食物);
ch:= read key;
如果ch=#0那么ch:= read key;
重复
重复
case food . ft类型
通常:
开始
textcolor(浅洋红色);
pwrite(food.fpoint,# 3);
textcolor(黄色);
结束;
奖金:
开始
textbackground(红色);
pwrite(food.fpoint,' B ');
textbackground(黑色);
结束;
缩短:
开始
textbackground(绿色);
pwrite(food.fpoint,' S ');
textbackground(黑色);
结束;
结束;
gotoxy(food.fpoint.x,food . fpoint . y);
如果psame(cur,food.fpoint)则
开始
case food . ft类型
通常:
开始
inc(分数);
inc(长度);
结束;
奖金:
开始
inc(score,food . bs core * 2);
inc(length,trunc(food . bs core * 2.5));
结束;
缩短:
开始
for int:= 1 to food . slength do
开始
pwrite(track[length-int+1],' ');
pset(track[length-int+1],0,0);
结束;
dec(长度、食物、长度);
结束;
结束;
textbackground(蓝色);
gotoxy(8,49);
写(分数* 10);
gotoxy(9,50);
textbackground(红色);
clreol
textbackground(蓝色);
写(长度+1);
textbackground(黑色);
newfood(食物);
结束;
延迟(50);
if food.ftype & lt& gt那就像往常一样
开始
dec(food . b time);
如果food.btime=0,则
newfood(食物);
结束;
案例目录
向上:
开始
如果cur.y & gt那么1
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:=length downto 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
十二月(当前年);
newtrack
结束
其他
hit:= true;
结束;
左侧:
开始
如果cur.x & gt那么1
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
dec(cur . x);
newtrack
结束
其他
hit:= true;
结束;
右:
开始
if cur.x & lt那就80
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
Inc(cur . x);
newtrack
结束
其他
hit:= true;
结束;
向下:
开始
if cur.y & lt那就48
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
Inc(cur . y);
newtrack
结束
其他
hit:= true;
结束;
结束;
对于int:=1到长度do
开始
hit:=hit或psame(cur,track[int]);
结束;
如果长度& gt=200然后打:=真;
直到按键或击键;
如果打中了
其他
开始
如果psame(cur,food.fpoint)则
开始
case food . ft类型
通常:
开始
inc(分数);
inc(长度);
结束;
奖金:
开始
inc(score,food . bs core * 2);
inc(length,trunc(food . bs core * 2.5));
结束;
缩短:
开始
for int:= 1 to food . slength do
开始
pwrite(track[length-int+1],' ');
pset(track[length-int+1],0,0);
结束;
dec(长度、食物、长度);
结束;
结束;
textbackground(蓝色);
gotoxy(8,49);
写(分数* 10);
gotoxy(9,50);
textbackground(红色);
clreol
textbackground(蓝色);
写(长度+1);
textbackground(黑色);
newfood(食物);
结束;
ch:= read key;
第箱
#27:暂停;
#0:
开始
ch:= read key;
第箱
#72:{UP}
开始
if(cur . y & gt;1)和(dir & lt& gt向下)然后
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
十二月(当前年);
newtrack
dir:= up;
结束
其他
如果目录& lt& gt下然后打:=真;
结束;
#75:{LEFT}
开始
if(cur . x & gt;1)和(dir & lt& gt对)然后
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
dec(cur . x);
newtrack
dir:= left;
结束
其他
如果目录& lt& gt右然后击:=真;
结束;
#77:{RIGHT}
开始
if(cur . x & lt;80)和(dir & lt& gt左)然后
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
Inc(cur . x);
newtrack
dir:= right;
结束
其他
如果目录& lt& gt左然后打:=真;
结束;
# 80:{向下}
开始
if(cur . y & lt;48)和(dir & lt& gt向上)然后
开始
bin:=轨道[长度];
如果长度& lt那么=200
for int:= length-1 down to 1 do
轨道[int+1]:=轨道[int]
其他
for int:= 199 down to 1 do
track[int+1]:= track[int];
track[1]:= cur;
Inc(cur . y);
newtrack
dir:= down;
结束
其他
如果目录& lt& gtup then hit:= true;
结束;
结束;
结束;
else if (ch='P ')或(ch='p') then
开始
ch:= read key;
如果ch=#0那么ch:= read key;
结束;
结束;
结束;
直到击中;
text mode(co80);
textbackground(黑色);
textcolor(黄色);
clrscr
写(# 219 # 219 # 219);
textcolor(浅红色);
写(# 2);
textcolor(黄色);
writeln('游戏结束!');
writeln(' Score:',Score * 10);
写('蛇长:');
如果长度& lt200然后writeln(长度+1)
else writeln(201);
writeln(' Press & lt;输入& gt退出...);
readln
结束。