Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7

    aiuto!problemi con gioco in java!

    ciao!
    Ho un problema con un gioco java che ho trovato su internet: quando lo compilo mi da errore nel main anche se il main c'è già,il mio dubbio è che essendo due i file non riescano a interagire!
    vi copio di seguito i codici, vi sarei molto grata se riusciste ad aiutarmi!
    import javax.swing.*;
    import java.awt.*;

    public class Forza4 {

    //creo la finestra dell'applicazione
    public static JFrame frame = new JFrame("Forza 4");
    public static Tavoliere griglia = new Tavoliere();

    public static void main(String[] args) {

    /* faccio in modo che la finestra sia creata sempre *
    * al centro dello schermo qualunque sia la risoluzione. *
    * Per fare questo uso l'oggetto di tipo toolkit che *
    * raccoglie tutte le informazioni grafiche sull'ambiente *
    * di lavoro (applicando getToolkit). *
    */
    Toolkit infoGrafiche = frame.getToolkit();

    /* utilizzo un oggetto di tipo Dimension apposito per *
    * memorizzare la larghezza e l'altezza dell'ambiente di *
    * lavoro *
    */
    Dimension risoluzione = infoGrafiche.getScreenSize();

    /* setBounds posiziona la finestra nello schermo: i primi *
    * due indicano il punto dell'angolo in alto a sinistra, *
    * i seguenti la larghezza e l'altezza *
    */
    frame.setBounds(risoluzione.width/4, risoluzione.height/5,
    0, 0);

    /* aggiungo i componenti a un contenitore grafico costruito *
    * tramite le direttive JPanel *
    */
    JPanel sudPanel = new JPanel();
    sudPanel.add(Tavoliere.iconaLabel);
    sudPanel.add(Tavoliere.bSalva);
    sudPanel.add(Tavoliere.bCarica);
    sudPanel.setBackground(Color.BLUE);
    frame.getContentPane().add(griglia ,BorderLayout.NORTH);
    frame.getContentPane().add(sudPanel,BorderLayout.S OUTH);
    frame.setResizable(false); //impedisco il ridimensionamento
    frame.setVisible(true); //visualizza la finestra
    frame.pack();

    }

    }


    seconda parte



    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    import java.util.StringTokenizer;
    import java.net.URL;

    /
    | |
    | TAVOLIERE |
    | |
    | ************************************************** *** |
    | * Contiene i metodi sottostanti al funzionamento * |
    | * dell'intera partita e delle singole fasi di * |
    | * verifica delle conseguenze alle mosse di ogni * |
    | * giocatore * |
    | ************************************************** *** |
    | |
    *------*/
    public class Tavoliere extends JPanel {

    /* Definisco i bottoni della finestra grafica *
    * per le azioni di supporto alla partita *
    */
    public static JButton bSalva = new JButton("Salva");
    public static JLabel iconaLabel = new JLabel();
    public static JButton bCarica = new JButton("Carica");

    /* Stabilisco le dimensioni delle caratteristiche *
    * di un tabellone per il gioco Forza 4 *
    */
    private final int DIAMETRO = 47;
    private final int SPAZIO = 13;
    private final int RIGHE = 6;
    private final int COLONNE = 7;

    /* Definisco le icone utilizzate nel gioco: con URL possiamo *
    * riferici alle icone salvandole nell'archivio jar *
    */
    URL url1 = getClass().getResource("/coingialla.png");
    URL url2 = getClass().getResource("/coinrossa.png");
    private ImageIcon rossa = new ImageIcon(url2);
    private ImageIcon gialla = new ImageIcon(url1);

    /* Variabili per la gestione della partita: controllo *
    * del turno, del salvataggio, dello stato del tavoliere *
    */
    private int flag = 0;
    private int n = 0;
    private Color colorTurno;
    private Color[][] arrGiocate;
    private static String stringaBuffer ;
    private static String modificato = "no";

    /*========================================*
    * Costruttore *
    * - *
    * Si occupa di creare il pannello come *
    * oggetto gestibile dal programma *
    *=========================================*/
    public Tavoliere(){
    inizioPartita();

    this.addMouseListener(new MouseAdapter() {
    /* Classe anonima interna per gestire ascoltatore specializzato*
    * del Tavoliere
    */
    public void mousePressed(MouseEvent e) {
    gioca(e.getPoint());
    }
    });//fine classe anonima Tavoliere

    /* Gestisce la creazione di una sottofinestra con *
    * messaggio ed elementi relativi al salvataggio *
    * della partita avvenuto
    */
    bSalva.addMouseListener(new MouseAdapter() {
    /* Classe anonima interna per gestire ascoltatore specializzato*
    * del pulsante 'Salva'
    */
    public void mousePressed(MouseEvent evento) {
    try{
    salva();
    JOptionPane.showMessageDialog(null,"Partita salvata.",
    "Forza 4",
    JOptionPane.INFORMATION_MESSAGE);
    }
    catch(IOException e) {}
    }
    });//fine classe anonima Salva
    /* Gestisce la creazione di una sottofinestra con *
    * messaggio ed elementi relativi all'effettuato *
    * caricamento della partita
    */
    bCarica.addMouseListener(new MouseAdapter() {
    /* Classe anonima interna per gestire ascoltatore specializzato*
    * del pulsante 'Carica'
    */
    public void mousePressed(MouseEvent evento) {
    try{
    carica();
    JOptionPane.showMessageDialog(null,"Partita caricata.",
    "Forza 4",
    JOptionPane.INFORMATION_MESSAGE);
    }
    catch(IOException e) {}
    }
    });//fine classe anonima Carica

    /* Gestisce la creazione di una sottofinestra con *
    * messaggio ed elementi relativi alla richiesta *
    * di salvataggio della partita
    */
    WindowListener frameListener = new WindowAdapter(){
    /* Classe anonima interna per gestire ascoltatore specializzato*
    * del frame 'Forza4'
    */
    public void windowClosing(WindowEvent evento){
    if (modificato == "si"){
    int id = JOptionPane.showConfirmDialog(null,
    "Vuoi salvare la partita in corso?",
    "Exit", JOptionPane.YES_NO_OPTION,
    JOptionPane.QUESTION_MESSAGE);
    if (id == 0){
    try{
    salva();
    }
    catch(IOException e) {}
    }
    }
    System.exit(0); //esce dal programma
    }
    };//fine classe anonima frame 'Forza4'
    Forza4.frame.addWindowListener(frameListener);
    }

    /**
    * Metodo che imposta le singole variabili ai *
    * valori per l'inizio della partita *
    **/
    private void inizioPartita(){
    arrGiocate = new Color[COLONNE][RIGHE];
    stringaBuffer = "";
    modificato = "no";
    colorTurno = Color.YELLOW;
    iconaLabel.setIcon(gialla);
    repaint();
    }

    /
    * Metodo che disegna il tabellone per la *
    * partita di Forza 4 *
    */
    public void paint(Graphics g){
    //disegno il rettangolo blu
    g.setColor(Color.BLUE);
    g.fillRect(0, 0, getSize().width, getSize().height);
    n = 0;//il tabellone ha tutti cerchi bianchi
    /* Dalla prima posizione in basso a sinistra il Tavoliere
    * viene ridisegnato in corrispondeza delle giocate
    * contenute nell'array
    */
    for (int col = 0; col < COLONNE; col++) {
    for (int row= 0; row < RIGHE; row++) {
    if (arrGiocate[col][row] == null){
    g.setColor(Color.WHITE);
    } else {
    g.setColor(arrGiocate[col][row]);
    ++n ;//conta le giocate
    }
    g.fillOval(SPAZIO + ((SPAZIO + DIAMETRO) * col), SPAZIO
    + ((SPAZIO + DIAMETRO) * row), DIAMETRO, DIAMETRO);
    }
    }

    }

    /*
    * Metodo che controlla dove un gettone viene *
    * inserito *
    */
    private void gioca(Point point){
    /* Si ricava la colonna e la riga dal punto sul quale si preme
    */
    int row = point.y / (DIAMETRO + SPAZIO);
    int col = point.x / (DIAMETRO + SPAZIO);
    // Se la posizione è libera...
    if (arrGiocate[col][row] == null) {
    //...la occupo
    salvaSuStringaBuffer(col);
    for (row = RIGHE - 1; row >= 0; row--) {
    /* Se non ci fosse la condizione successiva giocheremmo
    * sempre e solo sulla prima riga
    */
    if (arrGiocate[col][row] == null) {
    arrGiocate[col][row] = colorTurno;
    repaint();
    modificato = "si";//un click ha modificato la partita
    controllaTutto(col, row);
    /* La condizione successiva serve a dare il turno
    * al giocatore avversario. Se non ci fosse, il metodo
    * 'Gioca' non saprebbe riconoscere l'alternanza del
    * turno tra più partite consecutive
    */
    if (flag == 0){
    colorTurno = (colorTurno == Color.RED ?
    Color.YELLOW : Color.RED);
    iconaLabel.setIcon(((colorTurno == Color.RED ?
    rossa : gialla)));
    }
    flag = 0;
    return;
    }
    }
    }
    }

    /*
    * Metodo che verifica lo stato attuale *
    * della partita *
    */
    private void controllaTutto(int col, int row){
    if (controllaVerticale(col) || controllaOrizzontale(row)
    || controllaDiagonaleSinistra(col, row)
    || controllaDiagonaleDestra(col, row)){
    JOptionPane.showMessageDialog(this,
    (colorTurno == Color.RED ? "Il Rosso" : "Il Giallo")
    +" ha vinto!","Game Over", JOptionPane.INFORMATION_MESSAGE);
    flag = 1;
    inizioPartita();
    } else if (n == 41) {
    JOptionPane.showMessageDialog(this,"Pari e patta!",
    "Game Over", JOptionPane.INFORMATION_MESSAGE);
    flag = 1;
    inizioPartita();
    }
    }
    /
    * Metodo di controllo della combinazione *
    * su diagonale sinistra *
    */
    private boolean controllaDiagonaleSinistra(int col, int row){
    if (col >= row) {
    col = col-row;
    row = 0;
    } else {
    row = row-col;
    col = 0;
    }
    for (int cnt = 0; row < RIGHE && col < COLONNE; row++, col++) {
    if (arrGiocate[col][row] == colorTurno) {
    if (++cnt >= 4)
    return true;
    } else {
    cnt = 0;
    }
    }
    return false;
    }
    /**
    * Metodo di controllo della combinazione *
    * su diagonale destra *
    */
    private boolean controllaDiagonaleDestra(int col, int row){
    col = Math.max(0, col - 4);
    row = Math.min(RIGHE - 1, row + 4);
    for (int cnt = 0; row >= 0 && col < COLONNE; row--, col++) {
    if (arrGiocate[col][row] == colorTurno) {
    if (++cnt >= 4)
    return true;
    } else {
    cnt = 0;
    }
    }
    return false;
    }

    /*
    * Metodo di controllo della combinazione *
    * su colonna *
    */
    private boolean controllaVerticale(int col){
    for (int cnt = 0, row= 0; row < RIGHE; row++) {
    if (arrGiocate[col][row] == colorTurno) {
    if (++cnt >= 4)
    return true;
    } else {
    cnt = 0;
    }
    }
    return false;
    }
    /*
    * Metodo di controllo della combinazione *
    * su riga *
    */
    private boolean controllaOrizzontale(int row){
    for (int cnt = 0, col= 0; col < COLONNE; col++) {
    if (arrGiocate[col][row] == colorTurno) {
    if (++cnt >= 4)
    return true;
    } else {
    cnt = 0;
    }
    }
    return false;
    }
    /*==============================================*
    * Metodo di aggiornamento del buffer con *
    * la configurazione del tabellone *
    *==============================================*/
    private void salvaSuStringaBuffer(int col){
    switch(col){
    case 0:
    stringaBuffer=stringaBuffer + "a ";

    break;
    case 1:
    stringaBuffer=stringaBuffer + "b ";

    break;
    case 2:
    stringaBuffer=stringaBuffer + "c ";

    break;
    case 3:
    stringaBuffer=stringaBuffer + "d ";

    break;
    case 4:
    stringaBuffer=stringaBuffer + "e ";

    break;
    case 5:
    stringaBuffer=stringaBuffer + "f ";

    break;
    case 6:
    stringaBuffer=stringaBuffer + "g ";

    break;
    default:
    break;
    }
    }

    /*================================================*
    * Metodo che restituisce la dimensione preferita *
    * per il contenitore è un override ed è basilare *
    *================================================*/
    public Dimension getPreferredSize() {
    return new Dimension((DIAMETRO + SPAZIO) * COLONNE,
    (DIAMETRO + SPAZIO) * RIGHE);
    }
    /*==============================================*
    * Metodo di caricamento del buffer con la *
    * configurazione della partita salvata *
    *==============================================*/
    private void carica()throws IOException{
    // incapsula in BufferedReader un file aperto in lettura
    BufferedReader filein = new BufferedReader(new FileReader
    ("SalvataggioForza4.sav"));
    Point puntodi = new Point(0,35);
    inizioPartita();
    String nextStr = filein.readLine();// legge una riga del file
    while(nextStr != null){
    char x = nextStr.charAt(0);
    switch (x) {
    case 'a':
    puntodi.x = 35;
    gioca(puntodi);
    break;
    case 'b':
    puntodi.x = 95;
    gioca(puntodi);
    break;
    case 'c':
    puntodi.x = 155;
    gioca(puntodi);
    break;
    case 'd':
    puntodi.x = 215;
    gioca(puntodi);
    break;
    case 'e':
    puntodi.x = 275;
    gioca(puntodi);
    break;
    case 'f':
    puntodi.x = 335;
    gioca(puntodi);
    break;
    case 'g':
    puntodi.x = 395;
    gioca(puntodi);
    break;
    }
    nextStr = filein.readLine();
    }
    modificato = "no";
    filein.close(); // chiude il file
    }
    /*==============================================*
    * Metodo di salvataggio della configurazione *
    * del tabellone al momento di gioco attuale *
    *==============================================*/
    private void salva()throws IOException{
    // creo un oggetto FileWriter...
    FileWriter fileOut = new FileWriter("SalvataggioForza4.sav");
    // ... che incapsulo in un BufferedWriter...
    BufferedWriter fileBuf = new BufferedWriter(fileOut);
    // ... che incapsulo in un PrintWriter
    PrintWriter printOut = new PrintWriter(fileBuf);
    StringTokenizer st = new StringTokenizer(stringaBuffer, " ");
    int m = st.countTokens();
    for (int i = 0; i < m ; i++){
    printOut.println(st.nextToken());
    }
    printOut.close();
    modificato = "no";
    }
    }
    Grazie in anticipo!
    ro!

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    posta l'errore preciso che ti da.
    Controlla che entrambi i file siano nella stessa cartella, compili tutto con un

    javac *.java

    ed esegui la classe che contiene il main: Forza4

    javaw Forza4

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7
    grazie mille..ora provo poi ti faccio sapere!

  4. #4
    Hai messo nel posto giusto (in classpath) i files /coingialla.png e /coinrossa.png ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7
    dove li devo mettere?

  6. #6
    Dunque, dovresti riprodurre la seguente situazione:
    src--|
    |
    Forza4.java
    |
    Tavoliere.java
    |
    coingialla.png
    |
    coinrossa.png

    Ok ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7
    scusa ma sn davvero alle prime armi, non capisco cosa intendi x
    src--|
    |
    Forza4.java
    |
    Tavoliere.java
    |
    coingialla.png
    |
    coinrossa.png

    non so che programma usi e molto probabilmente è x quello che non ti seguo.(uso Jpad pro,ma se hai un altro programma da consigliarmi sarò ben contenta di usarlo perchè il mio lascia un po a desiderare!)
    Ho capito che devo concatenare i vari files,ma non so come si fa..
    Grazie!
    ro

  8. #8
    usa eclipse o netbeans.
    Lo schemino era per farti capire che le 2 png vanno nella root del classpath.

    Al limite posta le 2 immagini che provo a prepararti il progettino completo per eclipse

    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7
    grazie sei un tesoro!!!eclipse l'ho istallato ma non capisco xkè non riesco ad eseguire!

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    7
    ti allego il secondo!
    Immagini allegate Immagini allegate

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 © 2024 vBulletin Solutions, Inc. All rights reserved.