ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
650
650
EMPFEHLEN
-
Hallo,
ich versuche mich schon seit Tagen an der Gewinnfunktion von Vier-Gewinnt. Mein Problem ist das ich die Icons die Ich eingefügt habe nicht vergleichen kann. Ich habe den Icons schon eine Beschreibung über setDescription zugewissen.
Doch ich finde keinen Weg diese miteinander zu vergleichen.
Kann mir villeicht jemand Helfen****
Ich poste mal die wichtigen stellen.
Code :1 2 3 4 5
... JLabel[][] feldLabel = new JLabel[ROWS][COLS]; static final int ROWS = 6; static final int COLS = 7; ...
Erstellung des Speilfelds
Code :1 2 3 4 5 6 7
for(int row=0; row<ROWS; row++){ for(int col=0; col<COLS;col++) { feldGrafik=new ImageIcon("img\\feld1.gif"); feldGrafik.setDescription("leer"); feld1.add(feldLabel[row][col]=new JLabel(feldGrafik)); } }
Die Steinsetzung durch Spieler
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public void player1Grafik(int spalte, int zeile){ spalte++; feldGrafik = new ImageIcon("img\\Buttonred.gif"); feldLabel[spalte][zeile].setIcon(feldGrafik); feldGrafik.setDescription("redButton"); status.setText(name1+" ist an der Reihe"); id=0; } public void player2Grafik(int spalte, int zeile){ spalte++; feldGrafik = new ImageIcon("img\\Buttonyellow.gif"); feldGrafik.setDescription("yellowButton"); feldLabel[spalte][zeile].setIcon(feldGrafik); status.setText(name2+" ist an der Reihe"); id=1; }
Danke schonmal im vorraus******
-
05.04.11 12:42 #2
Du findest keinen Weg 2 Strings miteinander zu vergleichen oder verstehe ich das falsch?
Strings werden mit der equals()-Methode verglichen.Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Ne das hast du falsch verstanden. Wie man Strings vergleicht weiß ich. Mein Problem ist wie kann ich die icons im Array vergleichen?
-
05.04.11 13:40 #4
Ich würde es so versuchen...
Code java:1
description = feldLabel[spalte][zeile].getIcon().getDescription();
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
also su funktioniert das nicht!!
Vielleicht erklär ich nochmal was ich eigentlich machen will. Ich möchte ein Vier Gewinnt mit grafischen Icons programmieren. Hierzu benötige ich eine Methode um die Icons miteinander vergleichen zu können. Ich posste mal den kompletten Code
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
package classes; /** * @(#)GrafikFrame.java * * * @author * @version 1.00 2011/4/1 */ import java.awt.*; import java.awt.event.*; import java.awt.Color.*; import java.io.*; import java.net.*; import javax.imageio.ImageIO; import java.util.*; import javax.swing.*; import javax.swing.JLabel; import javax.swing.JFrame; import javax.swing.plaf.metal.MetalIconFactory; public class GrafikFrame extends Frame{ Label player1 = new Label("Spieler X"); TextField player1ein = new TextField("Bitte Namen eingeben"); Label player2 = new Label("Spieler O"); TextField player2ein = new TextField("Bitte Namen eingeben"); Label status = new Label("Willkommen bei 4 Gewinnt"); Button help = new Button("Hilfe"); Button add1 = new Button("add"); Button add2 = new Button("add"); Button wurf[] = new Button[7]; JButton[][] feldButton = new JButton[ROWS][COLS]; JLabel[][] feldLabel = new JLabel[ROWS][COLS]; ImageIcon feldGrafik; Panel player = new Panel(); Panel feld1 = new Panel(); Panel status1 = new Panel(); static final int ROWS = 6; static final int COLS = 7; String name1; String name2; String palyer1bereit="false"; String palyer2bereit="false"; public String sieger; public String Gewinner; public int siegerdurch=0; public int id=0; int feldauswahl=1;//Auswahl zwischen 2 Spielfeldern. int spalte1=5; int spalte2=5; int spalte3=5; int spalte4=5; int spalte5=5; int spalte6=5; int spalte7=5; String zeichen="X"; String farbe; public GrafikFrame() { setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame feld1.setLayout(new GridLayout(7,1)); player.setLayout(new GridLayout(2,3)); status1.setLayout(new GridLayout(1,2)); player.add(player1); player.add(player1ein); player.add(add1); player.add(player2); player.add(player2ein); player.add(add2); // Button Erstellung zum Einwurf for(int i=0; i<wurf.length; i++){ feld1.add(wurf[i] = new Button("V")); wurf[i].setEnabled(false); } // Feld Erstellung for(int row=0; row<ROWS; row++){ for(int col=0; col<COLS;col++) {//Auswahl zwischen 2 Spielfeldern if(feldauswahl==0){//ButtonFeld feld1.add(feldButton[row][col]=new JButton()); feldButton[row][col].setBackground(new Color(227,227,227)); } if(feldauswahl==1){//GrafikFeld // feld1.add(feldLabel[row][col]=new JLabel(new ImageIcon("img\\feld1.gif"))); feldGrafik=new ImageIcon("img\\feld1.gif"); feldGrafik.setDescription("leer"); feld1.add(feldLabel[row][col]=new JLabel(feldGrafik)); //System.out.println(feldLabel[row][col].getDescription()); } } } status1.add(status); status1.add(help); add(player, BorderLayout.NORTH); add(feld1, BorderLayout.CENTER); add(status1, BorderLayout.SOUTH); setVisible(true); setSize(700,800); setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops //============================================Mouse-Over-Effekt========================================== //Textfeldeingabe von Namen des Player 1 löschen player1ein.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(player1ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben" player1ein.setText(""); //setzt den Text "" also nichts an die stelle } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); //Textfeldeingabe von Namen des Player 2 löschen player2ein.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(player2ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben" player2ein.setText(""); //setzt den Text "" also nichts an die stelle } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); //===========================================Buttenfunktionen============================================ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event){ System.exit(0); } }); add1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ name1 = player1ein.getText(); player1ein.setEnabled(false); add1.setEnabled(false); System.out.println("name1: "+ name1); controllname1(); System.out.println("bereit1: "+palyer1bereit ); startgame(); }}); add2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ name2 = player2ein.getText(); player2ein.setEnabled(false); add2.setEnabled(false); System.out.println("name2: "+ name2); controllname2(); System.out.println("bereit2: "+palyer2bereit ); startgame(); }}); help.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ AnzeigeHelpFrame F6 = new AnzeigeHelpFrame(); }}); wurf[0].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 1"); if(spalte1<0){ status.setText("Spalte1 voll"); } if(spalte1>=0){ if (feldauswahl==0){ feldButton[spalte1][0].setText(zeichen); spalte1--; switchplayer(spalte1,0); } if (feldauswahl==1){ spalte1--; switchplayer(spalte1,0); System.out.println(feldGrafik.getDescription()); } } }}); wurf[1].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 2"); if(spalte2<0){ status.setText("Spalte2 voll"); } if(spalte2>=0){ if (feldauswahl==0){ feldButton[spalte2][1].setText(zeichen); spalte2--; switchplayer(spalte2,1); } if (feldauswahl==1){ spalte2--; switchplayer(spalte2,1); } } }}); wurf[2].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button3"); if(spalte3<0){ status.setText("Spalte3 voll"); } if(spalte3>=0){ if (feldauswahl==0){ feldButton[spalte3][2].setText(zeichen); spalte3--; switchplayer(spalte3,2); } if (feldauswahl==1){ spalte3--; switchplayer(spalte3,2); } } }}); wurf[3].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button4"); if(spalte4<0){ status.setText("Spalte4 voll"); } if(spalte4>=0){ if (feldauswahl==0){ feldButton[spalte4][3].setText(zeichen); spalte4--; switchplayer(spalte4,3); } if (feldauswahl==1){ spalte4--; switchplayer(spalte4,3); } } }}); wurf[4].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button5"); if(spalte5<0){ status.setText("Spalte5 voll"); } if(spalte5>=0){ if (feldauswahl==0){ feldButton[spalte5][4].setText(zeichen); spalte5--; switchplayer(spalte5,4); } if (feldauswahl==1){ spalte5--; switchplayer(spalte5,4); } } }}); wurf[5].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 6"); if(spalte6<0){ status.setText("Spalte6 voll"); } if(spalte6>=0){ if (feldauswahl==0){ feldButton[spalte6][5].setText(zeichen); spalte6--; switchplayer(spalte6,5); } if (feldauswahl==1){ spalte6--; switchplayer(spalte6,5); } } }}); wurf[6].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 7"); if(spalte7<0){ status.setText("Spalte7 voll"); } if(spalte7>=0){ if (feldauswahl==0){ feldButton[spalte7][6].setText(zeichen); spalte7--; switchplayer(spalte7,6); } if (feldauswahl==1){ spalte7--; switchplayer(spalte7,6); } } }}); } //================================================Methoden=============================================== public void controllname1(){ if(name1.equals(name2)) { player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X bitte einen anderer Name"); palyer1bereit="false"; } else if(name1.equals("Bitte Namen eingeben")){ player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X bitte anmelden"); palyer1bereit="false"; } else if(name1.equals("")){ player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X hat keinen Namen angegeben"); palyer1bereit="false"; } else{ palyer1bereit="true"; } } public void controllname2(){ if(name2.equals(name1)) { player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O bitte einen anderer Name"); } else if(name2.equals("Bitte Namen eingeben")){ player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O bitte anmelden"); } else if(name2.equals("")){ player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O hat keinen Namen angegeben"); } else { palyer2bereit="true"; } } public void startgame(){ if(palyer1bereit.equals("true")&&palyer2bereit.equals("true")){ status.setText("Spiel gestarten"); try{ Thread.sleep(1000); status.setText("Spiel startet in 3"); Thread.sleep(1000); status.setText("Spiel startet in 2"); Thread.sleep(1000); status.setText("Spiel startet in 1"); Thread.sleep(1000); status.setText(name1+" ist an der Reihe"); for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(true); } } catch(InterruptedException e){ } } } public void switchplayer(int spalte, int zeile){ if(id==1){ if (feldauswahl==0){ player1Button(spalte,zeile); } if (feldauswahl==1){ player1Grafik(spalte,zeile); } } else{ if (feldauswahl==0){ player2Button(spalte,zeile); } if (feldauswahl==1){ player2Grafik(spalte,zeile); } } if (feldauswahl==0){ IsGameOverButton(); } if (feldauswahl==1){ IsGameOverGrafik(); } System.out.println(feldLabel[0][0]); // feldLabel[zeile+1][spalte].setText("red"); } //Setzt die Eingaben der Spieler beim ButtonFeld public void player1Button(int spalte, int zeile){ zeichen="X"; spalte++; feldButton[spalte][zeile].setBackground(new Color(0,0,205)); status.setText(name1+" ist an der Reihe"); id=0; } public void player2Button(int spalte, int zeile){ zeichen="O"; spalte++; feldButton[spalte][zeile].setBackground(new Color(255,69,0)); status.setText(name2+" ist an der Reihe"); id=1; } //Setzt die Eingaben der Spieler beim GrafikFeld public void player1Grafik(int spalte, int zeile){ zeichen="X"; spalte++; //feldLabel[spalte][zeile].setIcon(redButton); feldGrafik = new ImageIcon("img\\Buttonred.gif"); feldLabel[spalte][zeile].setIcon(feldGrafik); feldGrafik.setDescription("redButton"); //System.out.println(""+redButton.getDescription()); status.setText(name1+" ist an der Reihe"); id=0; // System.out.println(feldLabel[spalte][zeile].getIcon(feldGrafik.getDescription()); } public void player2Grafik(int spalte, int zeile){ spalte++; // feldLabel[spalte][zeile].setIcon(yellowButton); feldGrafik = new ImageIcon("img\\Buttonyellow.gif"); feldGrafik.setDescription("yellowButton"); feldLabel[spalte][zeile].setIcon(feldGrafik); status.setText(name2+" ist an der Reihe"); id=1; // System.out.println(feldGrafik.getDescription()); } //Siegerfunktion des GrafikFelds public void IsGameOverGrafik(){ //Hier benötige ich eine Funktion wo ich die Icons überprüfe } //Siegerfunktion des ButtonFelds public void IsGameOverButton(){ System.out.println("IsGameOver"); //Zeilenüberprüfung for(int zeile = 0; zeile < 3;zeile++){ //feld[6][7] for(int spalte = 0; spalte < 7; spalte++){ //System.out.println("Zeilenüberprüfung"); if(feldButton[zeile][spalte].getText()=="X" && feldButton[zeile+1][spalte].getText()=="X" && feldButton[zeile+2][spalte].getText()=="X" && feldButton[zeile+3][spalte].getText()=="X") { status.setText(name1+" hat 4 in einer Zeile"); siegerdurch=1; playerXwin(); } if(feldButton[zeile][spalte].getText()=="O" && feldButton[zeile+1][spalte].getText()=="O" && feldButton[zeile+2][spalte].getText()=="O" && feldButton[zeile+3][spalte].getText()=="O") { status.setText(name2+" hat 4 in einer Zeile"); siegerdurch=1; playerOwin(); } } } //Spaltenüberprüfung for(int zeilesp = 0; zeilesp < 6;zeilesp++){ //feld[6][7] for(int spaltesp = 0; spaltesp < 4; spaltesp++){ //-den 4 spalten sonst geht er aus dem array // System.out.println("spaltenüberprüfung"); if(feldButton[zeilesp][spaltesp].getText()=="X" && feldButton[zeilesp][spaltesp+1].getText()=="X" && feldButton[zeilesp][spaltesp+2].getText()=="X" && feldButton[zeilesp][spaltesp+3].getText()=="X") { status.setText(name1+" hat 4 in einer Spalte"); siegerdurch=2; playerXwin(); } if(feldButton[zeilesp][spaltesp].getText()=="O" && feldButton[zeilesp][spaltesp+1].getText()=="O" && feldButton[zeilesp][spaltesp+2].getText()=="O" && feldButton[zeilesp][spaltesp+3].getText()=="O") { status.setText(name2+" hat 4 in einer Spalte"); siegerdurch=2; playerOwin(); } } } //Diagonalüberprüfung ObenLinks->UntenRechts for(int zeiledia1 = 0; zeiledia1 < 3;zeiledia1++){ //feld[6][7] for(int spaltedia1 = 0; spaltedia1 < 4; spaltedia1++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia1][spaltedia1].getText()=="X" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="X" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="X" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerXwin(); } if(feldButton[zeiledia1][spaltedia1].getText()=="O" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="O" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="O" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerOwin(); } } } //Diagonalüberprüfung UntenLinks->ObenRechts for(int zeiledia2 = 0; zeiledia2 < 3;zeiledia2++){ //feld[6][7] for(int spaltedia2 = 0; spaltedia2 < 6; spaltedia2++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia2+3][spaltedia2].getText()=="X" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="X" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="X" && feldButton[zeiledia2][spaltedia2+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerXwin(); } if(feldButton[zeiledia2+3][spaltedia2].getText()=="O" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="O" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="O" && feldButton[zeiledia2][spaltedia2+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerOwin(); } } } } private void playerXwin(){ for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } sieger=name1; GameOver(); } private void playerOwin(){ for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } GameOver(); sieger=name2; } public void spielfeld(){ } public void GameOver(){ try{ Thread.sleep(5000); SiegerFrame F3 = new SiegerFrame(); } catch (InterruptedException e){ } } //================================================Klassen=============================================== class SiegerFrame extends Frame{ Label oben = new Label("Game Over"); Label leer = new Label(); Label sieger1 = new Label("Sieger ist:"); Label sieger2 = new Label(); Label durch1 = new Label("Gewonnen durch:"); Label durch2 = new Label(); Button main = new Button("Hauptmenu"); Button newgame = new Button("neues Spiel"); Button exit = new Button("Ende"); Panel p5 = new Panel(); Panel p6 = new Panel(); Panel p7 = new Panel(); JFrame applikation; Container container; public SiegerFrame(){ applikation = new JFrame("Sieger"); container = applikation.getContentPane(); applikation.setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame p5.setLayout(new GridLayout(1,1)); p6.setLayout(new GridLayout(2,2)); p7.setLayout(new GridLayout(3,1)); applikation.add(p5, BorderLayout.NORTH); applikation.add(p6, BorderLayout.CENTER); applikation.add(p7, BorderLayout.SOUTH); p5.add(oben); p6.add(sieger1); p6.add(sieger2); p6.add(durch1); SiegerdurchMethode(); p6.add(durch2); p7.add(main); p7.add(newgame); p7.add(exit); applikation.setUndecorated(true); //obere Leiste mit X ausschalten applikation.pack(); //applikation.setContentPane(new BackgroundPanel()); applikation.setVisible(true); applikation.setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops sieger2.setText(""+sieger); main.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { AnzeigeMenuFrame F1 = new AnzeigeMenuFrame(); } }); newgame.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { clear(); applikation.setVisible(false); } }); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { System.exit(0); } }); } public void SiegerdurchMethode(){ if(siegerdurch==1){ durch2.setText("4 in einer Zeile"); } if(siegerdurch==2){ durch2.setText("4 in einer Spalte"); } if(siegerdurch==3){ durch2.setText("4 in der diagonale ObenLinks->UntenRechts"); } if(siegerdurch==4){ durch2.setText("4 in der diagonale UntenLinks->ObenRechts"); } } } public void clear(){ for(int row=0; row<ROWS; row++){ for(int col=0; col<COLS;col++) { feldButton[row][col].setBackground(new Color(227,227,227)); feldButton[row][col].setText(""); } } for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } player1ein.setEnabled(true); player2ein.setEnabled(true); add1.setEnabled(true); add2.setEnabled(true); spalte1=5; spalte2=5; spalte3=5; spalte4=5; spalte5=5; spalte6=5; spalte7=5; player1ein.setText("Bitte Namen eingeben"); player2ein.setText("Bitte Namen eingeben"); palyer1bereit="false"; palyer2bereit="false"; siegerdurch=0; id=0; zeichen="X"; status.setText("Neues Spiel geladen"); } }
-
Poste deinen code doch bitte in java-Tags, fuer Syntax-Highlighting.
Wieso stopfst du alles in eine Klasse?
Dein ganzes
Sieht sehr seltsam aus und koennte mit einer for-schleife geloest werden.Code java:1
wurf[...].addActionListener
Du hast doch extra eine description gesetzt zum Vergleichen, vergleiche diese miteiander und gut ist?Hierzu benötige ich eine Methode um die Icons miteinander vergleichen zu können
Zeige doch ansonsten genau den Stueck code, wo du vergleichen willst, bzw wo dein momentaner code zum Vergleichen ist, damit wir schauen koennen warum es net geht.Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
So erstmal den Code von mir als Javacode gepostet.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
package classes; /** * @(#)GrafikFrame.java * * * @author * @version 1.00 2011/4/1 */ import java.awt.*; import java.awt.event.*; import java.awt.Color.*; import java.io.*; import java.net.*; import javax.imageio.ImageIO; import java.util.*; import javax.swing.*; import javax.swing.JLabel; import javax.swing.JFrame; import javax.swing.plaf.metal.MetalIconFactory; public class GrafikFrame extends Frame{ Label player1 = new Label("Spieler X"); TextField player1ein = new TextField("Bitte Namen eingeben"); Label player2 = new Label("Spieler O"); TextField player2ein = new TextField("Bitte Namen eingeben"); Label status = new Label("Willkommen bei 4 Gewinnt"); Button help = new Button("Hilfe"); Button add1 = new Button("add"); Button add2 = new Button("add"); Button wurf[] = new Button[7]; JButton[][] feldButton = new JButton[ROWS][COLS]; JLabel[][] feldLabel = new JLabel[ROWS][COLS]; ImageIcon feldGrafik; Panel player = new Panel(); Panel feld1 = new Panel(); Panel status1 = new Panel(); static final int ROWS = 6; static final int COLS = 7; String name1; String name2; String palyer1bereit="false"; String palyer2bereit="false"; public String sieger; public String Gewinner; public int siegerdurch=0; public int id=0; int feldauswahl=1;//Auswahl zwischen 2 Spielfeldern. int spalte1=5; int spalte2=5; int spalte3=5; int spalte4=5; int spalte5=5; int spalte6=5; int spalte7=5; String zeichen="X"; String farbe; public GrafikFrame() { setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame feld1.setLayout(new GridLayout(7,1)); player.setLayout(new GridLayout(2,3)); status1.setLayout(new GridLayout(1,2)); player.add(player1); player.add(player1ein); player.add(add1); player.add(player2); player.add(player2ein); player.add(add2); // Button Erstellung zum Einwurf for(int i=0; i<wurf.length; i++){ feld1.add(wurf[i] = new Button("V")); wurf[i].setEnabled(false); } // Feld Erstellung for(int row=0; row<ROWS; row++){ for(int col=0; col<COLS;col++) {//Auswahl zwischen 2 Spielfeldern if(feldauswahl==0){//ButtonFeld feld1.add(feldButton[row][col]=new JButton()); feldButton[row][col].setBackground(new Color(227,227,227)); } if(feldauswahl==1){//GrafikFeld // feld1.add(feldLabel[row][col]=new JLabel(new ImageIcon("img\\feld1.gif"))); feldGrafik=new ImageIcon("img\\feld1.gif"); feldGrafik.setDescription("leer"); feld1.add(feldLabel[row][col]=new JLabel(feldGrafik)); //System.out.println(feldLabel[row][col].getDescription()); } } } status1.add(status); status1.add(help); add(player, BorderLayout.NORTH); add(feld1, BorderLayout.CENTER); add(status1, BorderLayout.SOUTH); setVisible(true); setSize(700,800); setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops //============================================Mouse-Over-Effekt========================================== //Textfeldeingabe von Namen des Player 1 löschen player1ein.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(player1ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben" player1ein.setText(""); //setzt den Text "" also nichts an die stelle } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); //Textfeldeingabe von Namen des Player 2 löschen player2ein.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(player2ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben" player2ein.setText(""); //setzt den Text "" also nichts an die stelle } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); //===========================================Buttenfunktionen============================================ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event){ System.exit(0); } }); add1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ name1 = player1ein.getText(); player1ein.setEnabled(false); add1.setEnabled(false); System.out.println("name1: "+ name1); controllname1(); System.out.println("bereit1: "+palyer1bereit ); startgame(); }}); add2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ name2 = player2ein.getText(); player2ein.setEnabled(false); add2.setEnabled(false); System.out.println("name2: "+ name2); controllname2(); System.out.println("bereit2: "+palyer2bereit ); startgame(); }}); help.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ AnzeigeHelpFrame F6 = new AnzeigeHelpFrame(); }}); wurf[0].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 1"); if(spalte1<0){ status.setText("Spalte1 voll"); } if(spalte1>=0){ if (feldauswahl==0){ feldButton[spalte1][0].setText(zeichen); spalte1--; switchplayer(spalte1,0); } if (feldauswahl==1){ spalte1--; switchplayer(spalte1,0); System.out.println(feldGrafik.getDescription()); } } }}); wurf[1].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 2"); if(spalte2<0){ status.setText("Spalte2 voll"); } if(spalte2>=0){ if (feldauswahl==0){ feldButton[spalte2][1].setText(zeichen); spalte2--; switchplayer(spalte2,1); } if (feldauswahl==1){ spalte2--; switchplayer(spalte2,1); } } }}); wurf[2].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button3"); if(spalte3<0){ status.setText("Spalte3 voll"); } if(spalte3>=0){ if (feldauswahl==0){ feldButton[spalte3][2].setText(zeichen); spalte3--; switchplayer(spalte3,2); } if (feldauswahl==1){ spalte3--; switchplayer(spalte3,2); } } }}); wurf[3].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button4"); if(spalte4<0){ status.setText("Spalte4 voll"); } if(spalte4>=0){ if (feldauswahl==0){ feldButton[spalte4][3].setText(zeichen); spalte4--; switchplayer(spalte4,3); } if (feldauswahl==1){ spalte4--; switchplayer(spalte4,3); } } }}); wurf[4].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button5"); if(spalte5<0){ status.setText("Spalte5 voll"); } if(spalte5>=0){ if (feldauswahl==0){ feldButton[spalte5][4].setText(zeichen); spalte5--; switchplayer(spalte5,4); } if (feldauswahl==1){ spalte5--; switchplayer(spalte5,4); } } }}); wurf[5].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 6"); if(spalte6<0){ status.setText("Spalte6 voll"); } if(spalte6>=0){ if (feldauswahl==0){ feldButton[spalte6][5].setText(zeichen); spalte6--; switchplayer(spalte6,5); } if (feldauswahl==1){ spalte6--; switchplayer(spalte6,5); } } }}); wurf[6].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("Button 7"); if(spalte7<0){ status.setText("Spalte7 voll"); } if(spalte7>=0){ if (feldauswahl==0){ feldButton[spalte7][6].setText(zeichen); spalte7--; switchplayer(spalte7,6); } if (feldauswahl==1){ spalte7--; switchplayer(spalte7,6); } } }}); } //================================================Methoden=============================================== public void controllname1(){ if(name1.equals(name2)) { player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X bitte einen anderer Name"); palyer1bereit="false"; } else if(name1.equals("Bitte Namen eingeben")){ player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X bitte anmelden"); palyer1bereit="false"; } else if(name1.equals("")){ player1ein.setEnabled(true); add1.setEnabled(true); status.setText("Spieler X hat keinen Namen angegeben"); palyer1bereit="false"; } else{ palyer1bereit="true"; } } public void controllname2(){ if(name2.equals(name1)) { player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O bitte einen anderer Name"); } else if(name2.equals("Bitte Namen eingeben")){ player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O bitte anmelden"); } else if(name2.equals("")){ player2ein.setEnabled(true); add2.setEnabled(true); status.setText("Spieler O hat keinen Namen angegeben"); } else { palyer2bereit="true"; } } public void startgame(){ if(palyer1bereit.equals("true")&&palyer2bereit.equals("true")){ status.setText("Spiel gestarten"); try{ Thread.sleep(1000); status.setText("Spiel startet in 3"); Thread.sleep(1000); status.setText("Spiel startet in 2"); Thread.sleep(1000); status.setText("Spiel startet in 1"); Thread.sleep(1000); status.setText(name1+" ist an der Reihe"); for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(true); } } catch(InterruptedException e){ } } } public void switchplayer(int spalte, int zeile){ if(id==1){ if (feldauswahl==0){ player1Button(spalte,zeile); } if (feldauswahl==1){ player1Grafik(spalte,zeile); } } else{ if (feldauswahl==0){ player2Button(spalte,zeile); } if (feldauswahl==1){ player2Grafik(spalte,zeile); } } if (feldauswahl==0){ IsGameOverButton(); } if (feldauswahl==1){ IsGameOverGrafik(); } System.out.println(feldLabel[0][0]); // feldLabel[zeile+1][spalte].setText("red"); } //Setzt die Eingaben der Spieler beim ButtonFeld public void player1Button(int spalte, int zeile){ zeichen="X"; spalte++; feldButton[spalte][zeile].setBackground(new Color(0,0,205)); status.setText(name1+" ist an der Reihe"); id=0; } public void player2Button(int spalte, int zeile){ zeichen="O"; spalte++; feldButton[spalte][zeile].setBackground(new Color(255,69,0)); status.setText(name2+" ist an der Reihe"); id=1; } //Setzt die Eingaben der Spieler beim GrafikFeld public void player1Grafik(int spalte, int zeile){ zeichen="X"; spalte++; //feldLabel[spalte][zeile].setIcon(redButton); feldGrafik = new ImageIcon("img\\Buttonred.gif"); feldLabel[spalte][zeile].setIcon(feldGrafik); feldGrafik.setDescription("redButton"); //System.out.println(""+redButton.getDescription()); status.setText(name1+" ist an der Reihe"); id=0; // System.out.println(feldLabel[spalte][zeile].getIcon(feldGrafik.getDescription()); } public void player2Grafik(int spalte, int zeile){ spalte++; // feldLabel[spalte][zeile].setIcon(yellowButton); feldGrafik = new ImageIcon("img\\Buttonyellow.gif"); feldGrafik.setDescription("yellowButton"); feldLabel[spalte][zeile].setIcon(feldGrafik); status.setText(name2+" ist an der Reihe"); id=1; // System.out.println(feldGrafik.getDescription()); } //Siegerfunktion des GrafikFelds public void IsGameOverGrafik(){ //Hier benötige ich eine Funktion wo ich die Icons überprüfe } //Siegerfunktion des ButtonFelds public void IsGameOverButton(){ System.out.println("IsGameOver"); //Zeilenüberprüfung for(int zeile = 0; zeile < 3;zeile++){ //feld[6][7] for(int spalte = 0; spalte < 7; spalte++){ //System.out.println("Zeilenüberprüfung"); if(feldButton[zeile][spalte].getText()=="X" && feldButton[zeile+1][spalte].getText()=="X" && feldButton[zeile+2][spalte].getText()=="X" && feldButton[zeile+3][spalte].getText()=="X") { status.setText(name1+" hat 4 in einer Zeile"); siegerdurch=1; playerXwin(); } if(feldButton[zeile][spalte].getText()=="O" && feldButton[zeile+1][spalte].getText()=="O" && feldButton[zeile+2][spalte].getText()=="O" && feldButton[zeile+3][spalte].getText()=="O") { status.setText(name2+" hat 4 in einer Zeile"); siegerdurch=1; playerOwin(); } } } //Spaltenüberprüfung for(int zeilesp = 0; zeilesp < 6;zeilesp++){ //feld[6][7] for(int spaltesp = 0; spaltesp < 4; spaltesp++){ //-den 4 spalten sonst geht er aus dem array // System.out.println("spaltenüberprüfung"); if(feldButton[zeilesp][spaltesp].getText()=="X" && feldButton[zeilesp][spaltesp+1].getText()=="X" && feldButton[zeilesp][spaltesp+2].getText()=="X" && feldButton[zeilesp][spaltesp+3].getText()=="X") { status.setText(name1+" hat 4 in einer Spalte"); siegerdurch=2; playerXwin(); } if(feldButton[zeilesp][spaltesp].getText()=="O" && feldButton[zeilesp][spaltesp+1].getText()=="O" && feldButton[zeilesp][spaltesp+2].getText()=="O" && feldButton[zeilesp][spaltesp+3].getText()=="O") { status.setText(name2+" hat 4 in einer Spalte"); siegerdurch=2; playerOwin(); } } } //Diagonalüberprüfung ObenLinks->UntenRechts for(int zeiledia1 = 0; zeiledia1 < 3;zeiledia1++){ //feld[6][7] for(int spaltedia1 = 0; spaltedia1 < 4; spaltedia1++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia1][spaltedia1].getText()=="X" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="X" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="X" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerXwin(); } if(feldButton[zeiledia1][spaltedia1].getText()=="O" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="O" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="O" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerOwin(); } } } //Diagonalüberprüfung UntenLinks->ObenRechts for(int zeiledia2 = 0; zeiledia2 < 3;zeiledia2++){ //feld[6][7] for(int spaltedia2 = 0; spaltedia2 < 6; spaltedia2++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia2+3][spaltedia2].getText()=="X" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="X" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="X" && feldButton[zeiledia2][spaltedia2+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerXwin(); } if(feldButton[zeiledia2+3][spaltedia2].getText()=="O" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="O" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="O" && feldButton[zeiledia2][spaltedia2+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerOwin(); } } } } private void playerXwin(){ for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } sieger=name1; GameOver(); } private void playerOwin(){ for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } GameOver(); sieger=name2; } public void spielfeld(){ } public void GameOver(){ try{ Thread.sleep(5000); SiegerFrame F3 = new SiegerFrame(); } catch (InterruptedException e){ } } //================================================Klassen=============================================== class SiegerFrame extends Frame{ Label oben = new Label("Game Over"); Label leer = new Label(); Label sieger1 = new Label("Sieger ist:"); Label sieger2 = new Label(); Label durch1 = new Label("Gewonnen durch:"); Label durch2 = new Label(); Button main = new Button("Hauptmenu"); Button newgame = new Button("neues Spiel"); Button exit = new Button("Ende"); Panel p5 = new Panel(); Panel p6 = new Panel(); Panel p7 = new Panel(); JFrame applikation; Container container; public SiegerFrame(){ applikation = new JFrame("Sieger"); container = applikation.getContentPane(); applikation.setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame p5.setLayout(new GridLayout(1,1)); p6.setLayout(new GridLayout(2,2)); p7.setLayout(new GridLayout(3,1)); applikation.add(p5, BorderLayout.NORTH); applikation.add(p6, BorderLayout.CENTER); applikation.add(p7, BorderLayout.SOUTH); p5.add(oben); p6.add(sieger1); p6.add(sieger2); p6.add(durch1); SiegerdurchMethode(); p6.add(durch2); p7.add(main); p7.add(newgame); p7.add(exit); applikation.setUndecorated(true); //obere Leiste mit X ausschalten applikation.pack(); //applikation.setContentPane(new BackgroundPanel()); applikation.setVisible(true); applikation.setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops sieger2.setText(""+sieger); main.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { AnzeigeMenuFrame F1 = new AnzeigeMenuFrame(); } }); newgame.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { clear(); applikation.setVisible(false); } }); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent f) { System.exit(0); } }); } public void SiegerdurchMethode(){ if(siegerdurch==1){ durch2.setText("4 in einer Zeile"); } if(siegerdurch==2){ durch2.setText("4 in einer Spalte"); } if(siegerdurch==3){ durch2.setText("4 in der diagonale ObenLinks->UntenRechts"); } if(siegerdurch==4){ durch2.setText("4 in der diagonale UntenLinks->ObenRechts"); } } } public void clear(){ for(int row=0; row<ROWS; row++){ for(int col=0; col<COLS;col++) { feldButton[row][col].setBackground(new Color(227,227,227)); feldButton[row][col].setText(""); } } for(int i=0; i<wurf.length; i++){ wurf[i].setEnabled(false); } player1ein.setEnabled(true); player2ein.setEnabled(true); add1.setEnabled(true); add2.setEnabled(true); spalte1=5; spalte2=5; spalte3=5; spalte4=5; spalte5=5; spalte6=5; spalte7=5; player1ein.setText("Bitte Namen eingeben"); player2ein.setText("Bitte Namen eingeben"); palyer1bereit="false"; palyer2bereit="false"; siegerdurch=0; id=0; zeichen="X"; status.setText("Neues Spiel geladen"); } }
Ja ich weiß das die wurfButtons mit einer for-schleife geloest werden könnten, mach ich auch hinterher aber ich brauch jetzt als erstes hilfe bei der gewinnFunktion des Iconsspielfelds. Irgendwie funktioniert der Vergleich über die Description nicht. Vielleicht hat jemand ne Idee.
-
Was heisst denn 'funktioniert nicht'. Poste doch mal bitten den Part wo du den Vergleich machst, ich find den naemlich nicht.
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
06.04.11 15:09 #10
Ich glaube ich hab's...
Er möchte die Funktion, welche auf den Buttontext zugreift (IsGameOverButton) nun parallel für IsGameOverGrafik darstellen. Die bisherige Funktion sieht bei ihm so aus:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
//Siegerfunktion des ButtonFelds public void IsGameOverButton(){ System.out.println("IsGameOver"); //Zeilenüberprüfung for(int zeile = 0; zeile < 3;zeile++){ //feld[6][7] for(int spalte = 0; spalte < 7; spalte++){ //System.out.println("Zeilenüberprüfung"); if(feldButton[zeile][spalte].getText()=="X" && feldButton[zeile+1][spalte].getText()=="X" && feldButton[zeile+2][spalte].getText()=="X" && feldButton[zeile+3][spalte].getText()=="X") { status.setText(name1+" hat 4 in einer Zeile"); siegerdurch=1; playerXwin(); } if(feldButton[zeile][spalte].getText()=="O" && feldButton[zeile+1][spalte].getText()=="O" && feldButton[zeile+2][spalte].getText()=="O" && feldButton[zeile+3][spalte].getText()=="O") { status.setText(name2+" hat 4 in einer Zeile"); siegerdurch=1; playerOwin(); } } } //Spaltenüberprüfung for(int zeilesp = 0; zeilesp < 6;zeilesp++){ //feld[6][7] for(int spaltesp = 0; spaltesp < 4; spaltesp++){ //-den 4 spalten sonst geht er aus dem array // System.out.println("spaltenüberprüfung"); if(feldButton[zeilesp][spaltesp].getText()=="X" && feldButton[zeilesp][spaltesp+1].getText()=="X" && feldButton[zeilesp][spaltesp+2].getText()=="X" && feldButton[zeilesp][spaltesp+3].getText()=="X") { status.setText(name1+" hat 4 in einer Spalte"); siegerdurch=2; playerXwin(); } if(feldButton[zeilesp][spaltesp].getText()=="O" && feldButton[zeilesp][spaltesp+1].getText()=="O" && feldButton[zeilesp][spaltesp+2].getText()=="O" && feldButton[zeilesp][spaltesp+3].getText()=="O") { status.setText(name2+" hat 4 in einer Spalte"); siegerdurch=2; playerOwin(); } } } //Diagonalüberprüfung ObenLinks->UntenRechts for(int zeiledia1 = 0; zeiledia1 < 3;zeiledia1++){ //feld[6][7] for(int spaltedia1 = 0; spaltedia1 < 4; spaltedia1++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia1][spaltedia1].getText()=="X" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="X" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="X" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerXwin(); } if(feldButton[zeiledia1][spaltedia1].getText()=="O" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="O" && feldButton[zeiledia1+2][spaltedia1+2].getText()=="O" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale ObenLinks->UntenRechts"); siegerdurch=3; playerOwin(); } } } //Diagonalüberprüfung UntenLinks->ObenRechts for(int zeiledia2 = 0; zeiledia2 < 3;zeiledia2++){ //feld[6][7] for(int spaltedia2 = 0; spaltedia2 < 6; spaltedia2++){ //System.out.println("diagonalüberprüfung"); if(feldButton[zeiledia2+3][spaltedia2].getText()=="X" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="X" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="X" && feldButton[zeiledia2][spaltedia2+3].getText()=="X") { status.setText(name1+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerXwin(); } if(feldButton[zeiledia2+3][spaltedia2].getText()=="O" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="O" && feldButton[zeiledia2+1][spaltedia2+2].getText()=="O" && feldButton[zeiledia2][spaltedia2+3].getText()=="O") { status.setText(name2+" hat 4 in der diagonale UntenLinks->ObenRechts"); siegerdurch=4; playerOwin(); } } } }
Ich selbst würde mir an deiner Stelle überlegen, ob das nicht auch noch einfacher geht, das schaut sehr unübersichtlich aus... Zumal die Methode jedes das komplette Feld auf einen 4er überprüft und das für beide Spieler... Wieso überprüfst du nicht vom aktuell gesetztem Feld aus? Dann hast du A) den aktuellen Spieler und B) du musst lediglich 7 Richtungen kontrollieren (S, SO, SW, O, W, NO, NW), wobei ich mir eine Reihenfolge der üblichsten "Gewinnrichtungen" festlegen würde und nach einem Treffer aufhören würde zu suchen... Relativ untypisch ist meiner Meinung nach 4 übereinander, daher würde ich das z.B. als letztes überprüfen.
Edit: Ich steige allgemein kaum durch, warum du wo und wann irgendwas tust, es ist vorteilhaft sich vorher einen genauen Plan aufzuskizzieren. Ich schätze MiMi geht es genauso wie mir...
Edit2: Ich habe es mir noch ein wenig angeschaut und mir sind ein paar grundsätzliche Dinge aufgefallen, womit man u.a. die Lesbarkeit erhöhen könnte...
1. spalte1, spalte2... sind sehr irritierend in Hinsicht auf die Funktion, ich würde hier ein int-Array entsprechend der Spaltenanzahl mit dem Namen anzahlrestfelder o.Ä. generieren
2. Die Bereit- und Namensfelder würde ich weglassen, da diese zusätzlichen Speicherverbauch haben, nutze stattdessen label.getText() und label.isEnabled()
3. Bisher enablest du das Feld und disablest es bei Bedarf wieder, setze doch besser den Status entsprechend einer Methode isNameValid o.Ä. mit einem boolean-Rückgabewert
PS.: Was mein Vorschlag von oben angeht bezüglich getDescription muss ich dazu sagen, dass ich immer durcheinander komme was Interfaces angeht, Icon ist ein Interface. Eventuell musst du den Rückgabewert auf ImageIcon casten, ich weiß nicht genau... *Schande auf mein Haupt*
Aber es müsste vom Grundgednaken her so gehen...
Geändert von HonniCilest (06.04.11 um 17:28 Uhr)
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Ja richtig ich möchte eine die Funktion IsGAmeOverGrafik ähnlich aufbauen wie die Funktion IsGameOverButton. Aber deine Idee ist vielleicht sogarr besser. Ich habe es nur nicht gemacht, weil ich nicht weiß wie ich diese aufziehen soll. Vielleicht könntest du mir ein Beispiel geben****
-
07.04.11 10:30 #12
Du kennst deine Position im Spielfeld im Normalfall ja bisher z.B. durch switchplayer(reihe,spalte). Diese kannst du umformulieren in z.B. isGameFinished(reihe,spalte) mit einem boolean-Rückgabewert.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public boolean isGameFinished(int reihe, int spalte) // reihe 0-5, spalte 0-6 { //Bedingung für SW, W, NW if(spalte >= 3) { //Subbedingung für SW if(reihe <= (ROWS-4)) { //Wenn Match, return true } //Subbedingung für NW if(reihe >= 3) { //Wenn Match, return true } //Keine Subbedingung für W //Wenn Match, return true } //Bedingung für SO, O, NO if(spalte <= 3) { //siehe oben } //Bedingung für S if(reihe <= (ROWS-4)) { //Keine weitere Bedingung //Wenn Match, return true } return false; }
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
Ähnliche Themen
-
Vier gewinnt - Gewinner ermitteln
Von marial im Forum JavaAntworten: 4Letzter Beitrag: 21.02.10, 12:53 -
Vier gewinnt, erkennen ob einer gewonnen hat
Von Paspirgilis im Forum PHPAntworten: 13Letzter Beitrag: 20.12.09, 10:54 -
Pixler für vier/fünf Icons gesucht
Von olvradam im Forum Stellenangebote (entgeltlich)Antworten: 2Letzter Beitrag: 10.07.07, 11:29 -
Vier Gewinnt
Von magzel im Forum Visual Basic 6.0Antworten: 14Letzter Beitrag: 12.05.04, 18:10





Zitieren
Login





