Ciao a tutti,sto cercando di creare il gioco Snake ma ho qualche problema nel collegare le pagine tra di loro, cioè vorrei che aprendo una pagina d'introduzione e poi cliccando su "Clicca sull'immagine per iniziare" mi facesse partire il giochino....ma nn ci salto fuori....c'è qlc che puo darmi una mano??![]()
il main è in un altra pagina e se potete dare un occhiata anche al codice di Snake perchè nn so se è giusto......Grazie mille....!!![]()
codice:/** 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(); } } }
Pagina del gioco:codice: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 extends Main { 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; }

Rispondi quotando