class ToLinier { public Line2D.Double linie1, linie2; public ToLinier( Line2D.Double lin1, Line2D.Double lin2 ) { linie1 = lin1; linie2 = lin2; } //end constructor }// endclass ToLinier
og så skal du blot ændre den metode der skal returnere 2 liner til at returnere et objekt af typen ToLinier, og lave return sætningen om til: return new ToLinier( denEne, denAnden );
Hvad gør jeg så når det hele sker i samme klasse? Jeg prøvede nemlig, men så sagde den: "load: TicTacToeGame can't be instantiated.", hvilket jeg sådan set også selv kom frem til tidligere... :(
Lige nu sidder jeg bare og arbejder på grænsefladen, hvilket jeg ikke har prøvet mere end een gang før, men den er her: import java.applet.Applet; import java.awt.*; import java.awt.geom.Line2D;
public class TicTacToeGame extends Applet{ public Line2D linie1, linie2;
Lidt frås at generere et helt TicTacToeGame objekt bare for at få returneret 2 linier.
og vi kan nok være ret sikre på at det objekt vi laver til at ineholde de 2 linie IKKE vil kunne castes til et Shape. så linien: g2.draw((Shape)cross(x, y)); skal skrives om til: ToLinier tempObj = cross(x, y); g2.draw( tempObj.linie1 ); // tegn de to linier hver for sig g2.draw( tempObj.linie2 ); På den måde vil de parametre vi giver til draw funktioner være objekter af en type der passer til den metode. (vi kan ikke bare give den et totalt nyt og ukendt objekt).
class ToLinier { //TILFØJET public Line2D linie1, linie2; public ToLinier( Line2D lin1, Line2D lin2 ) { linie1 = lin1; linie2 = lin2; } //end constructor }// endclass ToLinier
public void paint(Graphics g){ Graphics2D g2 = (Graphics2D)g; int x = 0, y = 0; for(int i = 0; i < 3; i++){ if(i!=0) x += 50; y = 0; for(int j = 0; j < 3; j++){ Rectangle r = rectangle(x,y); g2.draw(r); ToLinier tempObj = cross(x, y); g2.draw( tempObj.linie1 ); // tegn de to linier hver for sig g2.draw( tempObj.linie2 ); //FJERNET g2.draw((Shape)cross(x, y)); y += 50; } } }
public ToLinier cross(int x, int y){ //ÆNFRET Line2D line1 = new Line2D.Double(x += 10,y += 10,x += 30,y += 30); Line2D line2 = new Line2D.Double(x += 20,y += 10,x += 40,y += 30); return new ToLinier(line1,line2); //ÆNDRET }
/* public Object circle(int x, int y){
return circle; }*/
public Rectangle rectangle(int x,int y){ Rectangle rectangle = new Rectangle(x, y, 50, 50); return rectangle; } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.