Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Gioco PacMan

  1. #1

    Gioco PacMan

    Ciao ragazzi!!

    Per l'università devo creare una versione particolare del gioco PacMan, ma sto avendo dei problemi...

    Su Internet ho trovato del codice open source che implementa la versione base, ma è un'applet ed io vorrei trasformarla in un jFrame perchè a me servirebbe un'applicativo...

    I files principali sono:
    -Model.java
    -View.java -> estende Canvas
    -Control.java (varie) -> la principale estende Applet

    Che linee guida dovrei seguire per trasformarla in una applicazione java???

    Grazie a tutti, ciao!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Gioco PacMan

    Originariamente inviato da dionisoft
    Per l'università devo creare una versione particolare del gioco PacMan, ma sto avendo dei problemi...

    Su Internet ho trovato del codice open source che implementa la versione base
    Ma se usi codice scritto da altri per un esame/esercizio ..... che cosa impari??

    Originariamente inviato da dionisoft
    ma è un'applet ed io vorrei trasformarla in un jFrame perchè a me servirebbe un'applicativo...

    Che linee guida dovrei seguire per trasformarla in una applicazione java???
    Bisognerebbe vedere il codice ma in linea di massima bisogna vedere:

    - se usa parametri per la applet (quelli che si passano alla applet con <param> in <applet>).
    - se carica immagini (o altro) usando i metodi di java.applet.Applet.
    - come effettua il painting del gioco.

    Questo è ciò che mi viene in mente sul momento .... ma ripeto, senza vedere il codice è difficile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Il codice è qui!!

    http://www.bennychow.com/download/pa...se_project.zip

    Non l'ho postato perchè è parecchio lungo...

    Utilizzo il codice di altri perchè lo scopo dell'esame è quello di applicare diversi algoritmi di Intelligenza Artificiale ai fantasmi e verificare le differenze, non quello di scrivere il gioco da zero!!!

    Inoltre dovrei rendere "pluggabile" l'applicazione (nel senso che dovrei creare dei file appositi per caricare gli algoritmi di AI) ma per quello credo sia ancora presto...

    Ad ogni modo se potessi darmi una mano te ne sarei grato!!

  4. #4
    una mano a fare cosa di preciso? Stai chiedendo ad andbin di svilupparti l'intero videogioco?
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Assolutamente no!

    Volevo solo sapere come convertire l'applet in un'applicazione java normale...

    Ad esempio se sostituire i Canvas con dei JPanel e cose simili. Di certo non avrei mai neanche pensato di fare una richiesta così assurda!! Saranno 10000 righe di codice!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da dionisoft
    Volevo solo sapere come convertire l'applet in un'applicazione java normale...
    Non è comunque affatto così "banale". Innanzitutto usa solo cose di AWT, non c'è nulla di Swing. Se vuoi usare Swing certamente dovresti usare JPanel invece di Canvas. Ma non basta. In Swing i concetti sul painting sono un po' diversi. Non si usa più update() e nemmeno paint(). Si usa paintComponent().
    Vedo poi che disegna tutti gli elementi del gioco tramite "primitive" di disegno (linee, archi ecc...) che praticamente è allucinante (nonchè poco comprensibile). Sarebbe stato meglio usare delle immagini per i vari elementi (muri, ecc..).
    In GameModel usa un array bidimensionale per rappresentare il piano di gioco e questo va bene. Ma per impostare la matrice usa una marea di assegnazioni ai singoli elementi dell'array. Praticamente allucinante e delirante!! Anche in questo caso sarebbe stato meglio fare diversamente, ad esempio studiare una rappresentazione del piano di gioco con un file di testo da caricare poi a runtime.

    Secondo la mia opinione, il 60% di quel codice si può tranquillamente "buttare" via. E anzi ... secondo me non vale la pena usare quel programma. Ti conviene rifare tutto da zero, in modo migliore e più pulito. Se hai le conoscenze su Swing appropriate non dovresti avere problemi. Se non le hai, non solo non riuscirai a farne uno da zero ma nemmeno a "convertire" questo in Swing!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Innanzitutto grazie mille per la risposta!!

    Avevo già notato che veniva tutto disegnato a mano, e per alcune cose sembra anche a me davvero una pazzia!!!
    Ad ogni modo nel mio progetto non devo utilizzare quei personaggi, quindi quella parte sarà sostituita da delle immagini che ho già provveduto a realizzare.

    Per il resto sto già implementando la base in swing (che non conosco in maniera eccellente, ma diciamo decente) ed ora che ho una certezza posso lavorare più tranquillamente!!

    Grazie per le risposte!!

    Spero di non aver offeso la sensibilità di nessuno postando il codice!!
    Come già detto non avevo assolutamente l'intenzione di chiedere ad altri di sviluppare la mia applicazione!!

    Ciao!!

  8. #8
    Ciao!!

    Ho realizzato la base dell'applicazione, ovvero ho creato la matrice e realizzato la grafica di base (il labirinto).

    Adesso ho un problema...come faccio a far muovere il pacman all'interno del labirinto??

    Avevo pensato ad un JPanel trasparente! L'ho realizzato creando il nuovo pannello così:

    Codice PHP:
    package PACMAN
    import java.awt.Color
    import java.awt.Dimension
    import java.awt.Graphics;
    import java.awt.image.BufferedImage
    import java.io.File;
    import javax.imageio.ImageIO;  
    public class 
    PacManPanel extends javax.swing.JPanel 
        
    BufferedImage image;
         
    int width;
         
    int height;
         
    File f;
         
    Dimension dim;
         
    int x;
         
    int y;
         public 
    PacManPanel(int x1int y1)     {
             
    super();
             
    x1;
             
    y1;
             
    = new File("src/Resources/PacMan2right.gif");
         }     
         public 
    void setImage(BufferedImage img)
         {
             
    this.image img;
             
    width img.getWidth();
             
    height img.getHeight();
         }      
        public 
    void paintComponent(Graphics g)
         {
             
    super.paintComponent(g);
             
    dim getSize();
             
    //g.setColor(Color.black);
             //g.fillRect(0, 0, getWidth(), getHeight());
             //g.setColor(Color.red);
             
    try
             {
                 
    setImage(ImageIO.read(f));
             }
             catch(
    Exception e)
             {
                 
    System.out.println("Errore...");
             }
             
    //int x = 20;
             //int y = 20;
             
    g.drawImage(imagexynull);
         }
     } 
    Per poi modificarne la posizione con:
    Codice PHP:
    pacmanPanel = new PacManPanel(50,50);
    pacmanPanel.setBackground(new Color(200,0,0,5));         
    pacmanPanel.setSize(409490);         
    pacmanPanel.setOpaque(false);         
    pacmanPanel.setBounds(00409490);         
    //jGamePanel.remove(pacmanPanel);         
    jGamePanel.add(pacmanPanel);         
    pacmanPanel.repaint();         
    //pacmanPanel.validate(); 
    Tuttavia sul pannello mi rimangono entrambe le immagini nelle due posizioni...la prima non mi si cancella...

    Che ne pensate? E' il modo giusto per far muovere un'immagine su di un pannello??

    Esistono altri modi più intelligenti??

    Grazie, ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.