Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
-PacMan- - pacman-0.7.3-beta.pas

pacman-0.7.3-beta.pas

Caricato da:
Scarica il programma completo

  1. (*Nome source:  pacman*)
  2. (*Versione:             0.7-beta*)
  3. (*Licenza:              GNU GPL*)
  4. (*Rilascio:             06/09/2010*)
  5. (*Autore:               Francesco Marrone (alias Giarados)*)
  6. (*Descrizione:  menu + editor + main + credits + info --> tutto in questo modulo*)
  7.  
  8. program pacman_06;
  9.  
  10. uses    mura,entita,
  11.                 wincrt,wingraph,ghosts_pacmen,
  12.                 pulsanti,main,editor;
  13.                
  14. const percorso_logo='images\logo.bmp';
  15. const larghezza_logo=109;
  16. const altezza_logo=350;
  17.  
  18. var
  19.         tasto_gioca,tasto_editor,tasto_uscita,tasto_info,tasto_comandi:pulsante;
  20.         tasti_allineati:byte;
  21.         gd,gm:smallint;
  22.         logo:pointer;
  23.         logo_caricato:boolean;
  24.        
  25. {la procedura credits mostra una schermata con i riconoscimenti ha chi ha
  26. inventato il gioco e a chi l'ha riscritto in pascal o ha collaborato nello
  27. sviluppo}
  28. procedure credits;
  29. var backtomaimenu:pulsante;
  30. begin
  31.         backtomaimenu.crea(1,   19,     3,      4,      1,      2,'Back');
  32.        
  33.         cleardevice;
  34.         setcolor(yellow);
  35.         SetTextStyle(boldfont,HorizDir,5);
  36.         outtextxy(100,1,'PacMan');
  37.         SetTextStyle(italicfont,HorizDir,2);
  38.         outtext('  v. '+versione);
  39.         outtextxy(10,70,'PacMan è un videogioco ideato da Tohru Iwatani');
  40.         outtextxy(10,80,'programmatore della Namco e pubblicato per la ');
  41.         outtextxy(10,90,'prima volta dalla Midway Games nel 1980  nel ');
  42.         outtextxy(10,100,'formato arcade da sala.');
  43.         outtextxy(10,120,'Il gioco che qui vi viene proposto è un remake');
  44.         outtextxy(10,130,'dell''originale progettato da Franesco Marrone');
  45.         outtextxy(10,140,'e da lui stesso sviluppato.');
  46.         outtextxy(10,160,'Viene rilasciato sotto lincenza GNU GPL.');
  47.         outtextxy(10,170,'Si troverà in allegato il testo della licenza');
  48.         outtextxy(10,180,'e il source code. Si prega di rispettare i');
  49.         outtextxy(10,190,'termini della suddetta e nel caso ridistribuiate');
  50.         outtextxy(10,200,'il gioco di allegare nuovamente la stessa e il');
  51.         outtextxy(10,210,'sorgente.');
  52.         outtextxy(10,230,'Sperando che abbiate una buona esperienza di');
  53.         outtextxy(10,240,'gioco vi ringrazio di utilizzare questo software');
  54.         outtextxy(10,260,'Segnalazione bug: marronciccio@gmail.com');
  55.         outtextxy(100,290,'Francesco Marrone (alias Giarados)');
  56.  
  57.         while not backtomaimenu.pressato do backtomaimenu.disegna;
  58.        
  59.         cleardevice;
  60.         SetTextStyle(CourierNewFont,HorizDir,2);
  61. end;
  62.  
  63. {la procedura comandi mostra una breve guida a come
  64. utilizzare la tastiera per giocare}
  65. procedure comandi;
  66. var backtomaimenu:pulsante;
  67. begin
  68.         backtomaimenu.crea(1,   1,      3,      4,      1,      2,'Back');
  69.  
  70.         cleardevice;
  71.         setcolor(yellow);
  72.         SetTextStyle(boldfont,HorizDir,5);
  73.         outtextxy(100,1,'PacMan');
  74.         SetTextStyle(boldfont,HorizDir,2);
  75.         outtext('  v. '+versione);
  76.        
  77.         outtextxy(10,80,        'Movimento verso l''alto:               Freccia Su');
  78.         outtextxy(10,100,       'Movimento verso il basso:              Freccia Giù');
  79.         outtextxy(10,120,       'Movimento verso destra:                Freccia DX');
  80.         outtextxy(10,140,       'Movimento verso sinistra:              Freccia SX');
  81.         outtextxy(10,160,       'Pausa:                         Space Bar');
  82.         outtextxy(10,180,       'Uscita:                                Esc');
  83.        
  84.         SetTextStyle(boldfont,HorizDir,4);
  85.         outtextxy(35,200,'Trucchi sbloccati');
  86.        
  87.         SetTextStyle(boldfont,HorizDir,2);
  88.        
  89.         {nel caso in cui si totalizza un punteggio superiore a X si sbloccheranno
  90.         determinati trucchi}
  91.         if highest>=30000 then
  92.                 outtextxy(10,240,       'Gambe in spalla!               SHIFT+F')
  93.         else outtextxy(10,240,  '****************               *****');
  94.        
  95.         if highest>=70000 then
  96.                 outtextxy(10,260,       'One up!                        +')
  97.         else    outtextxy(10,260,       '****************               *****');
  98.        
  99.         if highest>=90000 then
  100.                 outtextxy(10,280,       'Walls off!                     SHIFT+V')
  101.         else    outtextxy(10,280,       '****************               *****');
  102.        
  103.         while not backtomaimenu.pressato do backtomaimenu.disegna;
  104.        
  105.         cleardevice;
  106.         SetTextStyle(CourierNewFont,HorizDir,2);
  107. end;
  108.  
  109.  
  110. begin
  111.  
  112.         {viene caricato il logo..}
  113.        
  114.         if thisbitmapexists(percorso_logo,larghezza_logo,altezza_logo)=1 then
  115.         begin
  116.                 alloca_memoria(logo,percorso_logo,larghezza_logo,altezza_logo);
  117.                 logo_caricato:=true;
  118.         end
  119.         else logo_caricato:=false;
  120.                        
  121.                        
  122.         {apre il file hishest_score e importa il punteggio massimo
  123.         se non esiste lo crea e vi scrive 0}
  124.         assign(score_file,'highest_scores');
  125.         if thisfileexists('highest_scores') then
  126.         begin
  127.                 reset(score_file);
  128.                 read(score_file,highest);
  129.         end
  130.         else    begin
  131.                                 rewrite(score_file);
  132.                                 write(score_file,0);
  133.                         end;
  134.  
  135.         {la grafica viene inizializzata e vengono creati tutti i tasti}
  136.         gd:=NoPalette; gm:=mCustom;
  137.         setwindowsize(350,350);
  138.         initgraph(gd,gm,nome_gioco);
  139.        
  140.         tasti_allineati:=10;
  141.  
  142.         {se esiste il logo il layout del menu principale varia rispetto al caso in cui tale logo non esiste}
  143.         tasto_gioca.crea        (tasti_allineati,       2,      3,      7,      1,      2,'Play');
  144.        
  145.         if logo_caricato then tasti_allineati+=1;
  146.         tasto_editor.crea       (tasti_allineati,       6,      3,      7,      1,      2,'Editor');
  147.        
  148.         if logo_caricato then tasti_allineati+=1;
  149.         tasto_info.crea         (tasti_allineati,       10,     3,      7,      1,      2,'Info');
  150.  
  151.         if logo_caricato then tasti_allineati+=1;
  152.         tasto_comandi.crea      (tasti_allineati,       14,     3,      7,      1,      2,'Comandi');
  153.  
  154.         if logo_caricato then tasti_allineati+=1;
  155.         tasto_uscita.crea       (tasti_allineati,       18,     3,      7,      1,      2,'Exit');
  156.  
  157.         repeat
  158.                 {se il logo è stato cariato allora viene mostrato}
  159.                 if logo_caricato then putimage(0,0,logo^,normalput)
  160.                         else    begin
  161.                                                 {altrimenti viene visualizzato il nome del gioco}
  162.                                                 setcolor(yellow);
  163.                                                 SetTextStyle(boldfont,VertDir,5);
  164.                                                 outtextxy(55,300,nome_gioco);
  165.                                                 SetTextStyle(CourierNewFont,HorizDir,2);
  166.                                                 setcolor(getbkcolor);
  167.                                         end;
  168.  
  169.                 {vengono disegnati i tasti}
  170.                 tasto_gioca.disegna;
  171.                 tasto_editor.disegna;
  172.                 tasto_info.disegna;
  173.                 tasto_uscita.disegna;
  174.                 tasto_comandi.disegna;
  175.  
  176.                 {se viene premuto il tasto gioca allora
  177.                 viene avviata una sessione di gioco}
  178.                 if tasto_gioca.pressato then
  179.                 begin
  180.                         closegraph;
  181.                        
  182.                         gioco;
  183.        
  184.                         gd:=NoPalette; gm:=mCustom;
  185.                         setwindowsize(350,350);
  186.                         initgraph(gd,gm,nome_gioco);
  187.                 end;
  188.                
  189.                 {se tasto_editor viene pressato
  190.                 allora viene avviata una sessione dell'editor di mappa}
  191.                 if tasto_editor.pressato then
  192.                 begin
  193.                         closegraph;
  194.                        
  195.                         aneditor;
  196.        
  197.                         gd:=NoPalette; gm:=mCustom;
  198.                         setwindowsize(350,350);
  199.                         initgraph(gd,gm,nome_gioco);
  200.                 end;
  201.                
  202.                 if tasto_info.pressato then credits;
  203.  
  204.                 if tasto_comandi.pressato then comandi;
  205.                
  206.         until tasto_uscita.pressato or CloseGraphRequest;       {ripeti il tutto sino a quando exit viene pressato o quando la finestra viene chiusa}
  207.  
  208.        
  209.         closegraph;
  210. end.