Wie kann ich genau diese ermittelten Werte der paint Methode übergeben, damit sie mir am gewünschten Feld vom TicTacToe einen Kreis zeichnet, bzw geht das überhaupt?
wenn die beiden Variabeln x und y so deklariert sind, dass sie als global gelten,
können Werte in einer Mehode gesetzt werden und in einer anderen gelesen werden.
Java:
publicclassRalph{privateint global =0;// Variable x global deklariertpublicvoidmethode1(){
global =20;// x kann hier benutzt werdenint localMethode1 =5;// lokale Variable kann nur der Methode1 verwendet werden }publicvoidmethode2(){System.out.println(global);// x kann hier benutzt werden int localMethode2 =3;// lokale Variable kann nur der Methode2 verwendet werden }}
Kreis wird jetzt an gewünschtem Punkt gezeichnet, jedoch flimmert es derbe... Wir wurden in der Schule mit einer ZEICHENFENSTER-Klasse vertraut gemacht, daher bin ich , was graphics angeht nicht sehr informiert.... Wieso zeichnet der sich unendlich oft?
Java:
importjava.awt.*;importjava.awt.event.*;importjava.awt.Component.*;importjava.awt.Canvas.*;importjava.awt.geom.*;importjavax.swing.*;importjavax.swing.JPanel;publicclassTictactoeextendsFrameimplementsRunnable,ActionListener,MouseListener,WindowListener{privateMenuBar mbar;//MenüprivateMenuMen;privateMenuItemNeuesSpiel;privateMenuItemBeenden;privateint px =0;privateint py =50;privateint laenge =20;privateint naechsterSpieler;privateint letzterSpieler;privateint i;publicintX;publicintY;privateGraphicsG;privateImage buffer;privateThread TTT;Kreis k =newKreis(this);publicint[] feld =newint[9];publicstaticvoid main (String args[]){TictactoeTtt=newTictactoe();Ttt.start();Ttt.setTitle("Tic-Tac-Toe");Ttt.setSize(120,170);Ttt.show();}publicTictactoe(){
mbar =newMenuBar();NeuesSpiel=newMenuItem("Neues Spiel");Beenden=newMenuItem("Beenden");Men=newMenu("Menü");Men.add(NeuesSpiel);Men.add(Beenden);
mbar.add(Men);NeuesSpiel.addActionListener (this);Beenden.addActionListener (this);Men.addActionListener (this);this.setMenuBar (mbar);this.addMouseListener (this);this.addWindowListener (this);Spielfeld();}publicvoidrun(){while(true){try{
TTT.sleep (1);}catch(InterruptedException e){}repaint();}}publicvoidstart(){
TTT =newThread(this);
TTT.start();}publicvoid actionPerformed (ActionEvent e){String cmd = e.getActionCommand();if(cmd.equals ("Beenden")){System.exit(0);}}publicvoidpaint(Graphics g){getXWert();getYWert();
g.drawOval(px+20*X,py+40*Y,laenge,laenge);}publicvoidmousePressed(MouseEvent e){X=getCoordinateX(e.getX());Y=getCoordinateY(e.getY());repaint();}publicvoidmouseExited(MouseEvent e){}publicvoidmouseReleased(MouseEvent e){}publicvoidmouseClicked(MouseEvent e){}publicvoidmouseEntered(MouseEvent e){}publicvoid windowOpened (WindowEvent e){// Wird hier nicht benötigt}publicvoid windowActivated (WindowEvent e){// Wird hier nicht benötigt}publicvoid windowDeactivated (WindowEvent e){// Wird hier nicht benötigt}publicvoid windowIconified (WindowEvent e){// Wird hier nicht benötigt}publicvoid windowDeiconified (WindowEvent e){// Wird hier nicht benötigt}publicvoid windowClosing (WindowEvent e){// Fenster schließenthis.dispose();}publicvoid windowClosed (WindowEvent e){// Programm beendenSystem.exit (0);}publicvoidSpielfeld(){for(i =0; i <9; i ++)//Initialisiere Startwerte
feld[i]=0;}publicintgetFeld(int x,int y){if(x < px || y < py)return9;int spalte =(x - px)/(laenge *2);int zeile =(y - py)/(laenge *2);if(spalte <3&& zeile <3)return zeile *3+ spalte;elsereturn9;}publicintgetCoordinateX(int x){int spalte =(x - px)/(laenge *2);return spalte;}publicintgetCoordinateY(int y){if( y < py)return9;int zeile =(y - py)/(laenge *2);return zeile;}publicvoidgetXWert(){System.out.println(X);}publicvoidgetYWert(){System.out.println(Y);}}