Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    5

    urgente:collegamento tra Frame

    vorrei che facendo partire il programma prima mi aprisse una pagina poi spingendo "clicca sull'immagine" andasse a far partire il giochino..ma nn ci salto fuori qualcuno puo darmi una mano??

    codice 1Pagina:
    /** File Introduzione.java.
    *Contiene la classe Introduzione.
    */

    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.event.*;
    import java.awt.Image;
    import java.awt.Graphics;
    /**Apre un frame di introduzione al programma.
    */
    public class Pagina extends JFrame implements ActionListener{
    private JFrame f;
    //Crea la finestra e vi inserisce la copertina del programma
    public Pagina (){

    this.f=f;
    Toolkit tk= Toolkit.getDefaultToolkit();

    try{
    Dimension d=new Dimension();
    d=tk.getScreenSize();

    }
    catch(Throwable e){}

    setTitle("Snake");
    setDefaultCloseOperation(f.DO_NOTHING_ON_CLOSE );
    Container c= getContentPane();

    Image intro=tk.getImage("Snake.jpg");
    JButton b=new JButton(new ImageIcon (intro));
    c.add(b);
    b.setActionCommand("inizia");
    b.addActionListener(this);
    setBounds(150,100,700,600);
    c.setLayout(new FlowLayout());
    JLabel la=new JLabel("Clicca sull'immagine per iniziare ");
    c.add(la);
    JButton b2=new JButton(" Informazioni ");
    b2.addActionListener (this);
    c.add(b2);
    JButton b3=new JButton(" Esci ");
    c.add(b3);
    b3.addActionListener(this);
    show();
    }
    /**Genera l'evento detrminato dalla pressione di un bottone.
    *Ci sono tre opzioni: vedere le informazioni, uscire direttamente, aprire il programma.
    */
    public void actionPerformed(ActionEvent e){

    String scelta=e.getActionCommand();
    if(scelta.equals("inizia")){
    dispose();
    f.show();
    }
    if(scelta.equals(" Esci ")){
    System.exit(0);
    }
    if(scelta.equals(" Informazioni ")){
    new Informazioni();
    }
    }
    }

    poi c'è la pagina del gioco:
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.awt.Color.*;
    import java.io.*;
    import javax.imageio.*;
    import java.util.*;
    import java.awt.geom.*;
    public class SnakePit{
    SnakeFrame m = new SnakeFrame();
    //m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //m.show();
    }
    class SnakeFrame extends JPanel
    {
    public SnakeFrame()
    {
    setTitle("Snake");
    setSize(299,177);
    SnakePanel punt2 = new SnakePanel();
    Container punt = getContentPane();
    punt.add(punt2);
    }
    }
    class SnakePanel extends JPanel
    {
    public SnakePanel()
    {
    last = new Point2D.Double(100,100);
    lines = new ArrayList();
    cibo = new ArrayList();
    percorso = new int[291][143];
    x1=100;
    y1=100;
    x2=100;
    y2=100;
    risp=0;
    for(r=0;r<289;r++)
    {
    for(colonne=0;colonne<141;colonne++)
    {
    percorso[r][colonne]=0;
    }
    }
    if(c==1)
    lines.clear();
    KeyHandler listener = new KeyHandler();
    addKeyListener(listener);
    setFocusable(true);
    Timer t = new Timer(20);
    TimerAction listener2 = new TimerAction();
    t.addTimerListener(listener2);
    }
    public void add(int dx, int dy)
    {
    if(dx != x || dy != y)
    {
    if(dx != -x || dy != -y)
    {
    x=dx;
    y=dy;
    Point2D end = new Point2D.Double(last.getX() + dx,last.getY() + dy);
    Line2D line = new Line2D.Double(last,end);
    lines.add(line);
    if(dx == -1)
    percorso[x1][y1]=-2;
    if(dx == 1)
    percorso[x1][y1]=2;
    if(dy == -1)
    percorso[x1][y1]=-1;
    if(dy == 1)
    percorso[x1][y1]=1;
    lines.remove(0);
    repaint();
    x1=(int)(end.getX());
    y1=(int)(end.getY());
    last=end;
    if(dx == -1)
    percorso[x1][y1]=-2;
    if(dx == 1)
    percorso[x1][y1]=2;
    if(dy == -1)
    percorso[x1][y1]=-1;
    if(dy == 1)
    percorso[x1][y1]=1;
    }
    }
    }
    public void incr(int z)
    {
    incremento = z;
    }
    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    Rectangle2D limite = new Rectangle2D.Double(0,0,290,141);
    g2.draw(limite);
    Rectangle2D limite2 = new Rectangle2D.Double(1,1,288,139);
    g2.draw(limite2);
    //Rectangle2D limite3 = new Rectangle2D.Double(2,2,286,137);
    //g2.draw(limite3);
    for(int i=0;i<lines.size();i++)
    g2.draw((Line2D)lines.get(i));
    for(i=0;i<cibo.size();i++)
    {
    g2.draw((Rectangle2D)cibo.get(i));
    }
    }
    private Point2D last,last2;
    private ArrayList lines,cibo;
    private static int incremento = 1;
    private class KeyHandler implements KeyListener
    {
    public void keyPressed(KeyEvent event)
    {
    SnakeFrame punt = new SnakeFrame();
    int keyCode = event.getKeyCode();
    int d;
    d= incremento;
    if(keyCode == KeyEvent.VK_LEFT) add(-d,0);
    else if(keyCode == KeyEvent.VK_RIGHT) add(d,0);
    else if(keyCode == KeyEvent.VK_UP) add(0,-d);
    else if(keyCode == KeyEvent.VK_DOWN) add(0,d);
    }
    public void keyReleased(KeyEvent event) {}
    public void keyTyped(KeyEvent event)
    {
    }
    }
    private class TimerAction implements TimeListener
    {
    public void timeElapsed(TimerEvent event)
    {
    if (getWidth()==0)
    {
    return;
    }
    if(percorso[x1+x][y1+y] == 0)
    {
    if((last.getX()) < 290 && (last.getY()) < 149 && (last.getX()) > 1 && (last.getY()) > 1)
    {
    Point2D end = new Point2D.Double(last.getX() + x,last.getY() + y);
    Line2D line = new Line2D.Double(last,end);
    lines.add(line);
    x1=(int)(end.getX());
    y1=(int)(end.getY());
    if(lines.size()> nemiciCont)
    {
    //System.out.println("lalla" + percorso[x2][y2]);
    if(percorso[x2][y2] == -2)
    {
    percorso[x2][y2]=0;
    x2=x2-1;
    }
    if(percorso[x2][y2] == 2)
    {
    percorso[x2][y2]=0;
    x2=x2+1;
    }
    if(percorso[x2][y2] == -1)
    {
    percorso[x2][y2]=0;
    y2=y2-1;
    }
    if(percorso[x2][y2] == 1)
    {
    percorso[x2][y2]=0;
    y2=y2+1;
    }
    //System.out.println(percorso[x2][y2]);
    lines.remove(0);
    }
    repaint();
    if(x == -1)
    percorso[x1][y1]=-2;
    if(x == 1)
    percorso[x1][y1]=2;
    if(y == -1)
    percorso[x1][y1]=-1;
    if(y == 1)
    percorso[x1][y1]=1;
    last=end;
    }
    if((last.getY() + y) >= 141)
    {
    lines.clear();
    nemiciCont=10;
    last = new Point2D.Double(100,100);
    crash=1;
    }
    if((last.getX() + x) >= 289)
    {
    lines.clear();
    nemiciCont=10;
    last = new Point2D.Double(100,100);
    crash=1;
    }
    if((last.getX() + x) <= 0)
    {
    lines.clear();
    nemiciCont=10;
    last = new Point2D.Double(100,100);
    crash=1;
    }
    if((last.getY() + y) <= 0)
    {
    lines.clear();
    nemiciCont=10;
    last = new Point2D.Double(100,100);
    crash=1;
    }
    }
    else if(percorso[x1+x][y1+y]!=0)
    {
    lines.clear();
    nemiciCont=10;
    last = new Point2D.Double(100,100);
    x1=100;
    y1=100;
    x2=100;
    y2=100;
    crash=1;
    }
    if(crash==1)
    {
    crash=0;
    x=0;
    y=0;
    for(r=0;r<289;r++)
    {
    for(colonne=0;colonne<141;colonne++)
    {
    percorso[r][colonne]=0;
    }
    }
    }
    if(b==0)
    {
    do
    {
    w = generator.nextInt(284);
    z = generator.nextInt(136);
    if(percorso[w][z]==0 && percorso[w+1][z+1]==0 && percorso[w+2][z+2]==0 && percorso[w+3][z+3]==0 && percorso[w+4][z+4]==0 && percorso[w+5][z+5]==0)
    risp=1;
    }
    while(risp != 1);
    risp=0;
    Rectangle2D rect = new Rectangle2D.Double(w,z,5,5);
    cibo.add(rect);
    repaint();
    b=1;
    }
    if((last.getX() + x) >= w && (last.getX() + x) <= w+5 && (last.getY() + y) >= z && (last.getY() + y) <= z+5)
    {
    cibo.remove(0);
    b=0;
    nemiciCont= nemiciCont +50;
    }
    }
    }
    private Random generator = new Random();
    private int x,y,w,z;
    private int c,i,nemiciCont=10,b=0,crash=0,r,colonne;
    private int[][] percorso;
    private int x1,y1,x2,y2,risp;
    Graphics2D g2,g3;
    }
    class TimerEvent extends AWTEvent
    {
    public TimerEvent(Timer t){ super(t,TIMER_EVENT);}
    public static final int TIMER_EVENT
    = AWTEvent.RESERVED_ID_MAX+5555;
    }
    interface TimeListener extends EventListener
    {
    public void timeElapsed(TimerEvent event);
    }
    class Timer extends JComponent implements Runnable
    {
    public Timer(int i)
    {
    listenerList = new EventListenerList();
    interval = i;
    Thread t = new Thread(this);
    t.start();
    }
    public void addTimerListener(TimeListener listener)
    {
    listenerList.add(TimeListener.class,listener);
    }
    public void removeTimerListener(TimeListener listener)
    {
    listenerList.remove(TimeListener.class,listener);
    }
    public void run()
    {
    while(true)
    {
    try{ Thread.sleep(interval);}
    catch(InterruptedException e){}
    TimerEvent event = new TimerEvent(this);
    EventQueue queue
    = Toolkit.getDefaultToolkit().getSystemEventQueue();
    queue.postEvent(event);
    }
    }
    public void processEvent(AWTEvent event)
    {
    if(event instanceof TimerEvent)
    {
    EventListener[] listeners = listenerList.getListeners(TimeListener.class);
    for(int a=0;a<listeners.length;a++)
    ((TimeListener)listeners[a]).timeElapsed((TimerEvent)event);
    }
    else
    super.processEvent(event);
    }
    private int interval;
    private EventListenerList listeners;
    }
    se avete voglia di guardare anche il gioco perchè penso che anche lui abbia qualche errore...
    grazie mille!!
    a dimenticavo che il main è dichiarato in un ulteriore altra pagina...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Urgente non esiste nel forum: l'unica urgenza è quella di leggere il regolamento.
    I titoli devono essere esaustivi e il codice, specialmente se tanto come nel tuo caso, deve essere digitato all'interno degli appositi tag [*code] e [*/code] (senza l'asterisco rosso).

    Qui chiudo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.