Hintergrund ändert sich von selbst und das Verfahren wiederholt sich viele Male, bis ich die Maustaste loslassen

StackOverflow https://stackoverflow.com/questions/2572439

  •  24-09-2019
  •  | 
  •  

Frage

Ich bin ein Student, und ich arbeite an einem kleinen Slots Spiel (wenn die gleiche Zufallszahl aufkommt 3 abgelaufen, Sie gewinnen). Ich benutze Borland Pascal 7. Ich Verwendung Graph dies ein wenig mehr visuelle zu machen, aber wenn ich das Spiel meinen Hintergrund Kurven von schwarz zu grau beginnen, und das andere Problem ist, dass, wenn ich das Spiel Starttaste klicken, wird das Spiel läuft oft bis ich die Maustaste loslassen. Wie kann ich dieses Problem lösen?

Hier ist mein volles Programm:

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.
War es hilfreich?

Lösung

Ich habe viele Jahre Turbo Pascal zu verwenden:)

habe ich diese Schnipsel BGI init (Grafik) Modus:

  Gd := Detect;
  InitGraph(Gd, Gm, 'bgi');
  if GraphResult <> grOk then
    Halt(1);
  SetBkColor(black);
  Cleardevice;

Wenn ich mich richtig erinnere, ClearDevice zum Löschen des Bildschirms richtig ist, ClrScr ist für Textmodus.

Nun kehrt GetMouse(m); wahrscheinlich sofort die Mausdaten somit den Code
in der repeat Schleife läuft immer wieder ohne Verzögerung, auch wenn Sie nicht mit der Maus.
Eine Lösung ist, zu überprüfen, ob die Maustaste nicht gedrückt wird, bevor Sie diesen Code ausführen oder in fügen Sie eine Art von Verzögerung, bevor die GetMouse aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top