Oppure

Loading
04/08/13 9:42
Poggi Marco
Con il free pascal è possibile definire delle classi ( variabili che contengono dati e sottoprogrammi )
- freepascal.org/docs-html/ref/… -

Se ben utilizzati, questi meccanismi sono un valido aiuto per la gestione sicura e controllata dei dati.
Di contro si ha una maggiore " complessità strutturale " del programma.
Per maggiori chiarimenti: it.wikipedia.org/wiki/…
aaa
04/08/13 13:15
Progman
ok grazie mille!!
scusa l'ultima curiosità e poi smetto davvero: ma nella modalità grafica si può usare un repeat...until o almeno ritornare nella modalità normale senza chiudere la modialità grafica?
aaa
04/08/13 15:30
Poggi Marco
Non ci dovrebbero essere problemi a chiudere o aprire la modalità grafica - basta usare le istruzioni apposite -.
Come hai impostato il programma? ( Posta il codice )
aaa
05/08/13 14:28
Progman
ecco qua il programma; ho scritto un commento laterale al punto in cui mi serve aiuto.

Program grafica;
Uses graph,Crt;
var     Scheda,Modo:smallInt;
        c:char;
bEGIN
Scheda:=detect;
modo:=0;
Initgraph(scheda, modo, '');
If Graphresult<>grOK then
  Writeln('ERRORE: modalità grafica non installata correttamente')
else
begin
  {colline sinistra}
  setcolor(2);
  Arc(200,200,0,180,50);
  line(150,200,150,700);
  line(250,200,250,700);
  line(150,700,250,700);
  SETFILLSTYLE(1,2);
  floodfill(200,300,2);
  setcolor(0);
  line(175,200,175,225);
  line(225,200,225,225);
  setcolor(2);
  Arc(300,400,0,180,50);
  line(250,450,250,700);
  line(350,400,350,700);
  line(250,700,350,700);
  SETFILLSTYLE(1,2);
  floodfill(270,600,2);
  setcolor(0);
  line(275,375,275,400);
  line(325,375,325,400);
  delay(500);
  {colline destra}
  setcolor(2);
  Arc(1100,200,0,180,50);
  line(1050,200,1050,700);
  line(1150,200,1150,700);
  line(1050,700,1150,700);
  SETFILLSTYLE(1,2);
  floodfill(1100,300,2);
  setcolor(0);
  line(1075,200,1075,225);
  line(1125,200,1125,225);
  setcolor(2);
  Arc(1200,400,0,180,50);
  line(1150,450,1150,700);
  line(1250,400,1250,700);
  line(1150,700,1250,700);
  SETFILLSTYLE(1,2);
  floodfill(1170,600,2);
  setcolor(0);
  line(1175,375,1175,400);
  line(1225,375,1225,400);
  setcolor(15);
  SETTEXTSTYLE(triplexfont,horizdir,5);
  outtextxy(250,200,'SUPER MARIO PASCAL');
  delay(1000);
  outtextxy(200,300,'1: GIOCA SINGOLO');
  OUTTEXTXY(200,400,'2: GIOCA IN DUE ');
  SETVIEWPORT(100,300,900,900,false);
  c:=readkey;
  if c=#49 then                 //ecco qua: vorrei fare in modo che io possa usare la readkey senza uscire dalla
                                     //finestra grafica premendo il tasto nella finestra del pascal normale
  outtextxy(200,300,'prova');
  delay(10000);
  //halt;   commento il comando halt   //}
  closegraph;
end;
readln;
end.


spero di essermi spiegato correttamente
Ultima modifica effettuata da Phi 27/10/13 19:45
aaa
06/08/13 16:09
Poggi Marco
Con la grafica del pascal, non credo sia possibile interagire direttamente con la tastiera. - Bisogna attivare la seconda finestra a terminale. -
In alternativa, è possibile utilizzare il mouse.
( pierotofy.it/pages/guide_tutorials/Pascal/Pascal_Ricevere_input_dal_Mouse/ )
aaa
27/09/13 13:49
gigisoft
Salve,
ricordo che col pascal, anche in modalità grafica, Read e ReadKey funzionavano perfettamente...
dalla grafica esce all'istruzione closegraph
per cui per evitare di uscire troppo presto, inserisci le istruzioni di input in un ciclo del genere:

Repeat
    c:=readkey; 
    if c=#49 then
        outtextxy(200,300,'prova');
Until c = #13 (* il tasto invio *)


inoltre per il disegno dell'omino su uno sfondo qualunque ( e non per forza monocromatico ) ti consiglio di studiare le istruzioni GetImage e PutImage

Ciao. :k:

Luigi

aaa
17/10/13 21:53
lorenzoscarrone
const r = 10;
var tasto:char;
     x,y:integer;
     a,b:smallint;
begin
 a=detect;
 initgraph(a,b,'');
 x=50;y=50;
   repeat
   setcolor(black);
   circle(x,y,r); //cancella il vecchio cerchio
    tasto = readkey;
    case tasto of:
    'a': x=x-1; //ti muovi a sx
    's': y=y+1; //ti muovi giù
    'd': x=x+1; //ti muovi dx
    'w': y=y-1; //ti muovi sù
    end;
    setcolor(white); //disegna quello nuovo
    circle(x,y,r); 
   until false;
end.

scusa eventuali errori ma è parecchio che non uso più pascal ;) in teoria dovrebbe funzionare;) :k:
Ultima modifica effettuata da Phi 27/10/13 19:43
aaa
27/10/13 19:32
Phi
Ultima modifica effettuata da Phi 27/10/13 19:49
aaa