 |
07.09.2005, 14:42
| Nach oben
#1 | | Gast | 4gewinnt problem
hab n problem mit meinem programm.
es erkennt nich immer ob man gewonn hat PHP-Code: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.applet.*; public class main extends Applet { char feld[][] = new char[7][6]; // char spielera = 'a'; char spieler = 'b'; Label winner = new Label(""); public void init() { this.setSize(450,400); this.setLayout(new BorderLayout()); Panel p = new Panel(); p.setLayout(null); p.setSize(455,20); Button b1 = new Button("1"); b1.setBounds(50,0,50,20); Button b2 = new Button("2"); b2.setBounds(100,0,50,20); Button b3 = new Button("3"); b3.setBounds(150,0,50,20); Button b4 = new Button("4"); b4.setBounds(200,0,50,20); Button b5 = new Button("5"); b5.setBounds(250,0,50,20); Button b6 = new Button("6"); b6.setBounds(300,0,50,20); Button b7 = new Button("7"); b7.setBounds(350,0,50,20); Button neu = new Button("Neu"); neu.setBounds(0,0,50,20); this.add(p,BorderLayout.SOUTH); this.add(winner,BorderLayout.NORTH); p.add(b1); p.add(b2); p.add(b3); p.add(b4); p.add(b5); p.add(b6); p.add(b7); p.add(neu); b1.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(0); } }); b2.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(1); } }); b3.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(2); } }); b4.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(3); } }); b5.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(4); } }); b6.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(5); } }); b7.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ setScheibe(6); } }); neu.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e){ reset(); repaint(); } }); reset(); } public void arrayausgeben(){ int a = 0; int c; System.out.println("----------------------------------"); for (c=0; c <6; c++){ System.out.println(feld[a][c] + "," + feld[a+1][c] +"," + feld[a+2][c] + "," +feld[a+3][c] +"," + feld[a+4][c] +"," + feld[a+5][c] +"," + feld[a+6][c]); } } public void start() { } public void stop() { } public void paint(Graphics g) { g.drawLine(50,50,50,350); g.drawLine(100,50,100,350); g.drawLine(150,50,150,350); g.drawLine(200,50,200,350); g.drawLine(250,50,250,350); g.drawLine(300,50,300,350); g.drawLine(350,50,350,350); g.drawLine(400,50,400,350); g.drawLine(50,50,400,50); g.drawLine(50,100,400,100); g.drawLine(50,150,400,150); g.drawLine(50,200,400,200); g.drawLine(50,250,400,250); g.drawLine(50,300,400,300); g.drawLine(50,350,400,350); arrayausgeben(); for(int x = 0; x < 7; x++) { for(int y = 0; y < 6; y++) { if(feld[x][y] == 'b') { g.setColor(Color.blue); g.fillOval(x*50+50,y*50+50,49,49); } if(feld[x][y] == 'g') { g.setColor(Color.green); g.fillOval(x*50+50, y*50+50,49,49); } } } } private void setScheibe(int Nummer) { int x = Nummer; if(feld[Nummer][5] == 'l') { feld[Nummer][5] = spieler; gewonnen(); if(spieler == 'b') { spieler = 'g'; } else { spieler = 'b'; } repaint(); return; } for(int y = 5; feld[x][y] != 'l'; y--) { if(feld[x][y-1] == 'l') { feld[x][y-1] = spieler; arrayausgeben(); gewonnen(); break; } } if(spieler == 'b') { spieler = 'g'; } else { spieler = 'b'; } repaint(); } public void reset(){ for(int x = 0; x < 7;x++) { for(int y = 0; y < 6; y++) { feld[x][y] = 'l'; } } } private void gewonnen() { for(int x = 0; x < 7; x++) { for(int y = 0; y < 6; y++) { try{ //Wenn vier Punkte senkrecht if(feld[x][y] == spieler && feld[x+1][y] == spieler && feld[x+2][y] == spieler && feld[x+3][y] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } //Wenn vier Punkte -senkrecht if(feld[x][y] == spieler && feld[x-1][y] == spieler && feld[x-2][y] == spieler && feld[x-3][y] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } //wenn vier Punkte waagerecht if(feld[x][y] == spieler && feld[x][y+1] == spieler && feld[x][y+2] == spieler && feld[x][y+3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } //wenn vier Punkte -waagerecht if(feld[x][y] == spieler && feld[x][y-1] == spieler && feld[x][y-2] == spieler && feld[x][y-3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } //Wenn vier Punkte diagonal rechts-hoch if(feld[x][y] == spieler && feld[x+1][y+1] == spieler && feld[x+2][y+2] == spieler && feld[x+3][y+3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } // Wenn vier Punkte diagonal links-hoch if(feld[x][y] == spieler && feld[x-1][y+1] == spieler && feld[x-2][y+2] == spieler && feld[x-3][y+3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } // Wenn vier Punkte diagonal links-runter if(feld[x][y] == spieler && feld[x-1][y-1] == spieler && feld[x-2][y-2] == spieler && feld[x-3][y-3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } // Wenn vier Punkte diagonal rechts-runter if(feld[x][y] == spieler && feld[x+1][y-1] == spieler && feld[x+2][y-2] == spieler && feld[x+3][y-3] == spieler) { winner.setText("Spieler " + spieler + " hat gewonnen"); break; } } catch(Exception e) { /* System.out.println("--------------"); System.out.println(x); System.out.println(y); System.out.println(feld[x][y]); System.out.println(feld[x][y-1]);*/ } } } } }
| |
| |
16.09.2005, 16:27
| Nach oben
#2 | | Neuer Benutzer
Registriert seit: 08.06.2005
Beiträge: 10
|
Bisschen mehr Beschreibung wäre schon toll statt 'ner halbherzigen Fehlerbeschreibung und 'ner Menge Quelltext. |
| |
16.09.2005, 21:25
| Nach oben
#3 | | Gast |
sry aba war das ertse mal dass ich was hier rein gestellt hab und so....
aaaaaaaaalso: eigentlich funktioniert das, nur wenn man vier gleiche "punkte" an der linken seite übereinander hat erkennt er nicht dass man gewonnen hat.
könnte dann vlt ein gaaaaanz lieber netter mensch sagen WARUM???
| |
| |
17.09.2005, 18:43
| Nach oben
#4 | | Sesselkleber
Registriert seit: 17.01.2005
Beiträge: 581
|
Also im Quellcode sehe ich im Moment keinen Fehler.
Was bedeutet denn "an der linken Seite"?
Wenn man in der ersten "Spalte" des Spielfeldes 4 Punkte übereinander hat?
|
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | | | Themen-Optionen | Thema durchsuchen | | | |
Forumregeln
| Es ist dir nicht erlaubt, neue Themen zu verfassen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
|