Pascal 背景会自动改变,过程会重复很多次,直到我松开鼠标按钮
我是一名学生,我正在做一个小老虎机游戏(如果同样的随机数出现3次,你就赢了)。我使用Borland Pascal 7。我使用图形使其更直观,但当我开始游戏时,我的背景从黑色变为灰色,另一个问题是,如果我单击游戏开始按钮,游戏会运行很多次,直到我释放鼠标按钮。我怎样才能解决这个问题 以下是我的完整计划:Pascal 背景会自动改变,过程会重复很多次,直到我松开鼠标按钮,pascal,turbo-pascal,Pascal,Turbo Pascal,我是一名学生,我正在做一个小老虎机游戏(如果同样的随机数出现3次,你就赢了)。我使用Borland Pascal 7。我使用图形使其更直观,但当我开始游戏时,我的背景从黑色变为灰色,另一个问题是,如果我单击游戏开始按钮,游戏会运行很多次,直到我释放鼠标按钮。我怎样才能解决这个问题 以下是我的完整计划: program slots; uses mymouse,graph,crt; var gdriver,gmode,coin:integer; m:mouserec; a,b,c,c
program slots;
uses mymouse,graph,crt;
var gdriver,gmode,coin:integer;
m:mouserec;
a,b,c,coins:string;
procedure gomb(x1,y1,x2,y2:integer;szoveg:string);
var j,n:integer;
begin
setcolor(blue);
rectangle(x1,y1,x2,y2);
setfillstyle(1,blue);
floodfill(x1+2,y1+2,blue);
setcolor(0);
outtextxy((x1+x2)div 2 -textwidth(szoveg) div 2 ,(y1+y2) div 2-textheight(szoveg) div 2,szoveg);
end;
procedure randomal(var a,b,c:string);
begin
randomize;
STR(random(2)+1,a);
STR(random(2)+1,b);
STR(random(2)+1,c);
end;
procedure menu;
begin;
settextstyle(0,0,1);
outtextxy(20,10,'Meno menu');
gomb(20,20,90,50,'Teglalap');
gomb(20,60,90,90,'Inditas');
gomb(20,100,90,130,'Harmadik');
gomb(20,140,90,170,'Negyedik');
end;
procedure teglalap(x1,x2,y1,y2,tinta:integer);
begin
setcolor(tinta);
rectangle(x1,x2,y1,y2);
end;
procedure jatek(var a,b,c:string;var coin:integer;coins:string);
begin;
clrscr;
menu;
randomal(a,b,c);
if ((a=b) AND (b=c)) then coin:=coin+1 else coin:=coin-1;
settextstyle(0,0,3);
setbkcolor(black);
outtextxy(200,20,a);
outtextxy(240,20,b);
outtextxy(280,20,c);
STR(coin,coins);
outtextxy(400,400,coins);
end;
procedure eger;
begin;
mouseinit;
mouseon;
menu;
repeat
getmouse(m);
if (m.left) and (m.x>20) ANd (m.x<90) and (m.y>20) and (m.y<50) then teglalap(90,90,300,300,blue);
if (m.left) and (m.x>20) AND (m.x<90) and (m.y>60) and (m.y<90) then jatek(a,b,c,coin,coins);
until ((m.left) and (m.x>20) ANd (m.x<140) and (m.y>140) and (m.y<170));
end;
begin
coin:=50;
gdriver:=detect;
initgraph(gdriver, gmode, '');
eger;
end.
程序槽;
使用mymouse、graph、crt;
变量gdriver,gmode,硬币:整数;
m:鼠标;
a、 b、c、硬币:弦;
过程gomb(x1,y1,x2,y2:整数;szoveg:字符串);
var j,n:整数;
开始
设置颜色(蓝色);
矩形(x1,y1,x2,y2);
setfillstyle(1,蓝色);
洪水填充(x1+2,y1+2,蓝色);
setcolor(0);
outtextxy((x1+x2)第2部分-文本宽度(szoveg)第2部分,(y1+y2)第2部分-文本高度(szoveg)第2部分,szoveg);
结束;
随机过程(变量a、b、c:字符串);
开始
随机化;
STR(随机(2)+1,a);
STR(随机(2)+1,b);
STR(随机(2)+1,c);
结束;
程序菜单;
开始;
settextstyle(0,0,1);
outtextxy(20,10,'Meno menu');
gomb(20,20,90,50,'Teglalap');
gomb(20,60,90,90,'Inditas');
gomb(20100,90130,'Harmadik');
gomb(20140,90170,'Negyedik');
结束;
程序teglalap(x1,x2,y1,y2,tinta:整数);
开始
setcolor(tinta);
矩形(x1,x2,y1,y2);
结束;
过程jatek(变量a、b、c:string;变量coin:integer;coins:string);
开始;
clrsc;
菜单;
随机(a,b,c);
如果((a=b)和(b=c))那么硬币:=硬币+1,否则硬币:=硬币-1;
settextstyle(0,0,3);
颜色(黑色);
outtextxy(200,20,a);
outtextxy(240,20,b);
outtextxy(280,20,c);
STR(硬币、硬币);
outtextxy(400400,硬币);
结束;
程序eger;
开始;
滑鼠;
老鼠;
菜单;
重复
小鼠(m);
如果(m.left)和(m.x>20)和(m.x20)和(m.y20)和(m.x60)和(m.y20)和(m.x140)和(m.y我有很多年使用Turbo Pascal:)
我使用此代码段初始化BGI(图形)模式:
Gd:=检测;
初始图(Gd、Gm、bgi);
如果GraphResult grOk那么
暂停(1);
颜色(黑色);
透明装置;
如果我没有记错,ClearDevice
适合清除屏幕,clrsc
适合文本模式
现在,GetMouse(m)代码>可能会立即返回鼠标数据,因此代码
在重复中
循环一次又一次地运行,没有任何延迟,即使您不使用鼠标。
一种解决方案是在执行该代码或
在调用GetMouse
之前添加一些延迟
Gd := Detect;
InitGraph(Gd, Gm, 'bgi');
if GraphResult <> grOk then
Halt(1);
SetBkColor(black);
Cleardevice;