Dieses kleine Spiel ist das Java -Kurs -Design meiner Schwester und mir, und es ist auch das erste Java -Projekt, das ich gemacht habe. Es ist für Anfänger geeignet. Ich hoffe, es kann den Kindern helfen, die über das Java -Kurs -Design beunruhigt sind ~~~
1. Das Spiel muss implementiert werden
1. Entwerfen Sie den Hauptrahmen und die Schnittstelle.
2. Verwenden Sie die ActionListener -Schnittstelle, um die Überwachung von Tastenereignissen zu realisieren.
3. Starten Sie die Implementierung der Funktion neu.
4. Implementierung der Schachfunktion.
5. Implementierung der Exit -Funktion.
6. Definition von Schachteilpunkten im Schachbrett.
7. Verwenden Sie die Mouselisten -Schnittstelle, um die Ereignisüberwachung zu implementieren und alle Methoden in der Schnittstelle zu implementieren.
8. Wenn sich die Maus zum Schnittpunkt auf der Tafel bewegt und keine Schachstücke auf dem Punkt sind, kann sie zu einer kleinen Handform werden.
9. Wenn Sie auf das Schachbrett klicken, verwenden Sie die Anweisung, um festzustellen, ob sich der Punkt an der Kreuzung befindet, und verwenden Sie die Methode für foreach und getX () und gety () in der Schachklasse, um die Position jedes Schachstücks zu durchqueren, um festzustellen, ob der Punkt Schachstücke hat.
10. Wenn festgestellt wird, dass Sie beim Zeichnen eines Stücks ein Sub am angeklickten Punkt einstellen können, um jeden vorhandenen Punkt zu durchqueren und den SetColor der Grafikklasse zum Einstellen der Farbe und die FillVoval -Methode der Grafikklasse zum Festlegen der Formgröße verwenden.
11. Beim Zeichnen des Schachstücks müssen Sie den Gewinner beurteilen und rechtzeitig verlieren. Verwenden Sie den Index und durchqueren Sie die Richtungen des letzten Schachstücks. Wenn sich Schachstücke auf derselben geraden Linie mit einer Reihe von Schachstücken mehr als oder gleich fünf befinden, ist dies diejenige, die durch das aktuelle Schachstück dargestellt wird.
12. Wenn der Gewinner entschieden wird, können die entsprechenden Informationen aufgetaucht werden.
2. Implementierung der Funktionscode
2.1 Geben Sie das Spiel ein
public static void main (String [] args) {startChessjframe f = new StartChessJFrame (); // Erstellen Sie den Hauptrahmen F.setvisible (true); // Zeigen Sie den Hauptrahmen}2.2 Initialisierung definieren Sie einige zu verwendende Mengen.
Private Schachbrettschachbrett; // Fight Panel private Panel -Symbolleiste; // Symbolleiste Panel private Schaltfläche Startbutton; // Setzen Sie die Startschaltfläche Private Button Backbutton; // Legen Sie die Schaltfläche "Bedauern".
2.3 Konstruktionsmethode der Schnittstelle (Spielframework)
public startChessjframe () {settitle ("eigenständiges Goji"); // Setzen Sie den Titel chessboard = new thessboard (); // Initialisieren Sie das Panel -Objekt, erstellen und hinzufügen MyitemListener lis = new MyItemListener (); // Initialisieren des Button -Ereignis -Listener -Klassen -MOOLBAR = New Panel (). Backbutton = New Button ("Antwort"); exitbutton = new button ("exit"); // Symbolleiste initialisieren. Symbolleiste (Startbutton); Symbolleiste.Add (ExitButton); // Fügen Sie dem Werkzeugfeld startbutton.addactionListener (LIS) drei Schaltflächen hinzu; Backbutton.AddactionListener (LIS); ExitButton.AddactionListener (LIS); // Registrieren Sie die drei Schaltflächenereignisse, um das Ereignis hinzufügen (Symbolleiste, BorderLayout.South); // Layout des Tool -Panels im Süden der Schnittstelle, dh add (chessboard) addieren Sie das Panel -Objekt zum Formular SetDefaultCloseoPeration (JFRAME.Exit).2.4 Taste Implementierung und Überwachung (interne Konstruktionsmethode)
MyItemListener lis = new MyItemListener (); // Initialisieren Sie die interne Klasse der Schaltflächenereignis -Listener -Symbolleiste = new Panel (); // Instantifizieren Sie die Tool -Panel -Balken startbutton = new Button ("Neustart"); Backbutton = New Button ("Antwort"); exitbutton = new button ("exit"); // Symbolleiste initialisieren. Symbolleiste (Startbutton); Symbolleiste.Add (ExitButton); // Fügen Sie dem Werkzeugfeld startbutton.addactionListener (LIS) drei Schaltflächen hinzu; Backbutton.AddactionListener (LIS); exitbutton.addactionListener (LIS); // Registrieren Sie die drei Schaltflächenereignisse, um für Ereignisse zu hören2.5 Button -Ereignisse anhören
private class MyItemListener implements ActionListener{ public void actionPerformed(ActionEvent e) { Object obj=e.getSource();//Get the event source if(obj==startButton){ System.out.println("Start...");//Restart//JFiveFrame.this inner class references the external class chessBoard.restartGame(); } else if (obj == exitbutton) {System.exit (0); // End die Anwendung} else if (obj == Backbutton) {System.out.println ("Reue schach ..."); // reue scharmtboard.goback (); }}}2.6 Implementierung der Schaltflächenfunktion neu starten
public void restartGame () {// Schachsteine für (int i = 0; i <chesslist.length; i ++) Chesslist [i] = null; /*Game-bezogene variable Werte wiederherstellen*/ isback = true; GameOver = false; // Ob das Spiel chessCount = 0; // Die Anzahl der Schachstücke auf dem aktuellen Board endet, ist Repaint (); }2.7 Funktionsimplementierung der Schachtaste
public void goeback () {if (chessCount == 0) return; Schachliste [chesscount-1] = null; Chesscount--; if (chessCount> 0) {xIndex = chesslist [chessCount-1] .getX (); yIndex = chesslist [chesscount-1] .gety (); } isback =! isback; Repaint (); }2.8 Wenn das Schachbrett bei Bedarf größer oder kleiner wird, sollte sich das Fenster entsprechend ändern.
// Dimension: Innerhalb der rechteckigen Schachbrettklasse öffentliche Dimension getPreferredsize () {Neue Dimension zurückgeben (Rand*2+grid_span*cols, margin*2+grid_span*Zeilen); } pack (); // adaptive Größe in der StartChessboard -Klasse2.9 Definieren von Schachstücken
import Java.awt.*; public class Point {private int x; // x Indexwert des Schachstücks in der Schachkarte private int y; // y Indexwert des Schachstücks in der Schachkarte Private Color Color; // Farbe public static int diameter = 30; // Durchmesser öffentlicher Punkt (int x, int y, Farbe) {this.x = x; this.y = y; this.color = color; } // X -Indexwert des Schachstücks in das Schachbrett public int getsx () {return x; } // y Indexwert des Schachstücks im Schachbrett public int gety () {return y; } // Holen Sie sich die Schach -Piece -Farbe öffentliche Farbe getColor () {return color; }} A. Funktionale Teilencode -Implementierung
3.1 Initialisierung definieren Sie einige zu verwendende Mengen.
public static int margin = 30; // Ehe Public static int grid_span = 35; // Grid -Abstand öffentliche statische int Zeilen = 18; // Anzahl der Schachbrettreihen öffentliche statische int cols = 18; // Anzahl der Schachbrettspalten Punkt [] Schachstall = neue Punkt [(Reihen)*1)*(cols. Schach First GameOver = False; // macht das Spielend int chesscount; // die Anzahl der Schachstücke auf dem aktuellen Schachbrett int xindex, yIndex; // Index des gerade gespielten Schachstücks
3.2 Konstruktionsmethode des Schachbrettobjekts konstruieren
public chessboard () {retbackground (color.light_gray); // Setzen Sie die Hintergrundfarbe auf grau addMouselistener (this); // Ereignishörer hinzufügen addmousemotionListener (new MousemotionListener () {// anonyme interne Klasse @Override public void mousemoved (Mouseevent e) {int {int {int {int {int {int {int int x1 = (e.getX ()-Margin+grid_span/2)/grid_span; if (x1 <0 || x1> Zeilen || y1 <0 || y1> cols || gameover || findchess (x1, y1)) {// Das Spiel ist nicht abgelegt und kann nicht abgesetzt werden. Form} else {setCursor (neuer Cursor (Cursor.Hand_Cursor)); // auf Handform}} @Override public void mouedragged (mouEeEvent e) {}}); }3.3 Richten Sie den Maushörer ein und machen Sie die Hand kleiner (innerhalb der Konstruktionsmethode)
addmousemotionListener (new MousemotionListener () {// Anonyme interne Klasse @Override public void mousemoved (MouseEvent e) {int x1 = (e.getX ()-Margin+grid_span/2)/grid_span; Klicken Sie in einen Raster -Index, wenn (x1 <0 || x1> Zeilen || y1 <0 || y1> cols || GameOver || Findchess (x1, y1)) {// Das Spiel ist beendet und kann nicht abgesetzt werden. Cursor (Cursor.Default_Cursor)); // auf Standardform} else {setCursor (neuer Cursor (cursor.hand_cursor)); // auf Handform}} @Override public void mouedragged (MouseEvent e) {}});3.4 Mausdruckereignis beim Klicken auf das Schachbrett
public void mousePressed (mouseEvent e) {// if (GameOver) wird aufgerufen, wenn die Maustaste auf die Komponente gedrückt wird // Das Spiel ist beendet und kann nicht zurückgegeben werden. String colorname = isback? "Schwarz": "weißes Schach"; xIndex = (e.getX ()-Margin+grid_span/2)/grid_span; yIndex = (e.gety ()-margin+grid_span/2)/grid_span; // Die Koordinatenposition der Maus in einen Grid-Index konvertieren, wenn (xIndex <0 || XIndex> Zeilen || yIndex <0 || yindex> cols) // Das Schachstich aus dem Schussbrand fällt und nicht zurückgegeben wird. if (findchess (xIndex, yIndex)) // Das Schachstück existiert bereits in X, Y -Position, sodass Sie nicht zurückgegeben werden können. Punkt ch = neuer Punkt (xIndex, yIndex, isback? Color.black: color.white); Chesslist [CHESSCOUNT ++] = CH; repaint (); // das System benachrichtigen, wenn (iswin ()) {String msg = string.format ("Herzlichen Glückwunsch, %s win ~", Colorname); Joptionpane.showMessagedialog (this, msg); gameover = true; } else if (chessCount == (cols+1)*(Zeilen+1)) {String msg = string.format ("Schachtrommel ist ziemlich gut, großartig ~"); Joptionpane.showMessagedialog (this, msg); gameover = true; } isback =! isback; }3.5 Zeichnen Sie Schachbrett, Schachstücke und rote Rahmen
public void paintComponent(Graphics g){ super.paintComponent(g);//Draw chessboard for(int i=0;i<=ROWS;i++){//Draw horizontal line g.drawLine(MARGIN, MARGIN+i*GRID_SPAN, MARGIN+COLS*GRID_SPAN, MARGIN+i*GRID_SPAN); } für (int i = 0; i <= cols; i ++) {// Gerade Linie g.drawline zeichnen (margin+i*grid_span, margin, margin+i*grid_span, margin+Zeilen*grid_span); }/*Schachstücke zeichnen*/für (int i = 0; i <chessCount; i ++) {int xpos = chesslist [i] .getX ()*grid_span+margin; // Die x -Koordinaten von Grid Crossing Int ypos = Chesslist [i] .gety ()*grid_span+margin; G.SetColor (Schachliste [i] .GetColor ()); // Setzen Sie die Farbe G.Filloval (xpos-point.AiMeter/2, ypos-point.AiMeter/2, Point.AiMeter, Point.diameter); if (i == chessCount-1) {g.setColor (color.red); // markieren Sie das letzte Stück als rotes g.drawrect (xpos-point.diameter/2, ypos-point.diameter/2, point.diameter, point.diameter); }}3.6 Richtersieg oder Verlust
/*Beurteilen, welche Seite gewinnt*/privat boolean iswin () {int continuEcount = 1; // Die Anzahl der kontinuierlichen Schachstücke für (int x = xIndex-1; x> = 0; x-) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, yIndex, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex+1; x <= Zeilen; x ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, yIndex, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. } else continueCount = 1; // für (int y = yIndex-1; y> = 0; y-) {// Sehen Sie vertikal nach Farbe c = isback? Color.black: color.white; if (getChess (xIndex, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int y = yIndex+1; y <= Zeilen; y ++) {// schauen Sie in vertikaler Richtung nach unten. Farbe c = isback? Color.black: color.white; if (getChess (xIndex, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. } else continueCount = 1; // für (int x = xIndex+1, y = yIndex-1; y> = 0 && x <= cols; x ++, y-) {// schauen auf die untere rechte Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex-1, y = yIndex+1; y <= Zeilen && x> = 0; x-, y ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. Zurückkehren; } else continueCount = 1; // für (int x = xIndex-1, y = yIndex-1; y> = 0 && x> = 0; x-, y-) {// Suchen Sie nach Farbe c = iSback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex+1, y = yIndex+1; y <= Zeilen && x <= cols; x ++, y ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. } else continueCount = 1; false zurückgeben; }3.7 Das entsprechende Meldungsfeld wird angezeigt (innerhalb der Mausdruckfunktion)
if (iswin ()) {String msg = string.format ("Herzlichen Glückwunsch, %s win ~", Colorname); Joptionpane.showMessagedialog (this, msg); gameover = true; } else if (chessCount == (cols+1)*(Zeilen+1)) // Track {String msg = string.format ("Schachtrommel ist ziemlich gut, großartig ~"); Joptionpane.showMessagedialog (this, msg); gameover = true; }3.8 Eine oben verwendet
private boolean findChess (int x, int y) {für (Punkt C: Schachliste) {if (c! = null && c.getX () == x && C.Gety () == y) return true; } return false; }3.9 Da diese Schachbrettklasse die Monselistener -Maus -Hörschnittstelle implementiert, müssen alle Methoden in der Schnittstelle umschreiben. Die anderen Methoden sind wie folgt
@Override public void mouseclicked (MouseEvent e) {// aufgerufen, wenn die Maustaste auf die Komponente geklickt (gedrückt und freigegeben)} @Override public void mouSereleased (MouseeeVent E) {/// // angerufen, wenn der Maustaste auf der Komponente freigegeben wird. @Override public void mouseexited (MouseEvent e) {// Aufgerufen, wenn die Maus die Komponente verlässt}4. Betriebsergebnisse
V. Code Zusammenfassung
Das Spiel hat insgesamt drei Klassen, einer ist der Schnittstellenstartchessjframe, der eine Schachbrettklasse ist und der andere der Schach-Subjekt-Klassenpunkt ist
5.1StartChessJFrame -Klasse
Paket chess.lcc.com; Javax.swing importieren.*; import Java.awt.event.*; import Java.awt.*; /** Gozis Haupt -Framework, Programmstartsklasse*/Public Class StartChessJFrame erweitert JFrame {private Schachbrettschachbrett; // Fight Panel Private Panel Toolbar; // Symbolleiste Panel private Button Startbutton; // Setzen Sie den Start -Button -Button -Button -Button -Button -Button. Goji "); // Setzen Sie den Titel chessboard = new chessboard (); // Initialisieren Sie das Panel -Objekt, erstellen und hinzufügen Menü MyitemListener lis = new MyItemListener (); // Initialisieren Sie die Button Ereignis -Hörer -Anhörer interner Klassen -Symbolleiste = New Panel (); // Instanz Die ToolBar -Bar -Startbutton = New Button (" Neustart "); Backbutton = New Button ("Antwort"); exitbutton = new button ("exit"); // Symbolleiste initialisieren. Symbolleiste (Startbutton); Symbolleiste.Add (ExitButton); // Fügen Sie dem Werkzeugfeld startbutton.addactionListener (LIS) drei Schaltflächen hinzu; Backbutton.AddactionListener (LIS); ExitButton.AddactionListener (LIS); // Registrieren Sie die drei Schaltflächenereignisse, um für das Ereignis hinzuzufügen (Symbollbar, BorderLayout.South). Layout Das Werkzeugpanel im Süden der Grenzfläche, dh add (chessboard) addieren Sie das Panel -Objekt zum Formular SetDefaultCloseoPeration (JFRAME.Exit). Private Klasse MyItemListener implementiert actionListener {public void actionPerformed (actionEvent e) {Objekt obj = e.getSource (); // Die Ereignisquelle erhalten, wenn (obj == startbutton) {system.out.println ("restart ..."); // start // JfiveFrame.this Innere -Class -Referenzen Die OUTER -Klassen in der Innere -Klassen in der Inneren -Klassen in der Inneren -Klassen in der Inneren -Klassen -Klassen -Klassen -Klasse. } else if (obj == exitbutton) {System.exit (0); // Beende die Anwendung} else if (obj == Backbutton) {System.out.println ("antworten schach ..."); // antworten chessboard.goback (); }}} public static void main (String [] args) {startChessjframe f = new StartChessJFrame (); // Erstellen Sie den Hauptrahmen f.setvisible (true); // Zeigen Sie den Hauptrahmen}} 5.2Chessboard -Klasse
Paket chess.lcc.com; Javax.swing importieren.*; import Java.awt.*; import Java.awt.event.mouselistener; Import Java.awt.event.MousemotionListener; import Java.awt.event.mouseeEvent; /*Gruppenschildschildklasse*/öffentliche Klasse Schachbrett erweitert JPanel implementiert Mouselistener {public static int margin = 30; // Ehe public static int grid_span = 35; // Grid-Abstand öffentlich statische statische Int-Rows = 15; // Anzahl der Schachbrettreihen öffentliche statische statische Int Cols = 15; // // Anzahl der Chessboard-Spitze Punkt [(Zeilen+1)*(cols+1)]; // Initialisieren Sie jedes Array -Element in null boolean isback = true; // Der Standardstart ist schwarzer Schach. Erst GameOver = False; // ist das Spiel, das in int chesscount endet. SetBackground (color.light_gray); // Setzen Sie die Hintergrundfarbe auf gelb addmouselistener (this); // Ereignishörer addmousemotionListener (new MousemotionListener () {// Anonymous class @Override public void mousemoved (mousevent e)/int x1 = (e.s.getX ()--tears tears-tears tears tears tears tears- y1 = (e.gety ()-Margin+grid_span/2)/grid_span; // Die Koordinatenposition der Maus in einen Raster-Index konvertieren, wenn (x1 <0 || x1> Zeilen || y1 <0 || Y1> cols || Gameover || Findchess (x1, y1) {// // // // // // // // // // Das Spiel, das das Spiel nicht abgelegt hat, hat das Spiel nicht abgelöst, und das Spiel kann nicht abgelegt, und das Spiel kann nicht abgelegt, und das Spiel hat nicht abgelaufen. Es gibt Schachstücke in der X- und Y -Position, sodass Sie nicht setCursor (neuer Cursor (Cursor.Default_cursor)) sein können; // auf Standardform} else {setCursor (neuer Cursor (Cursor.hand_cursor)); // auf Handform}} @overrit öffentlich void void mouedriagged (Mousevent e)} @overrit void mouedriagged (Mousevent e)}}}}}}); }/*Zeichnen*/public void PaintComponent (Grafik g) {Super.PaintComponent (g); // Schachbrett für (int i = 0; i <= Zeilen; i ++) {// horizontale Linie g.drawline (margin+i*grid_span, margin+cols*grid_span, argrid_span, margin+cols*cols*cols*cols*cols*cols*cols*cols* } für (int i = 0; i <= cols; i ++) {// zeichne eine geraden Linie g.drawline (margin+i*grid_span, margin, margin+i*grid_span, margin+Zeilen*grid_span); }/*Schachstücke zeichnen*/für (int i = 0; i <chessCount; i ++) {int xpos = chesslist [i] .getX ()*grid_span+margin; // x Koordinaten von Grid Crossing Int ypos = Chesslist [i] .gety ()*grid_span+margin; G.SetColor (Schachliste [i] .GetColor ()); // Setzen Sie die Farbe G.Filloval (xpos-point.AiMeter/2, ypos-point.AiMeter/2, Point.AiMeter, Point.diameter); if (i == chessCount-1) {g.setColor (color.red); // Melden Sie das letzte Stück als rotes g.drawrect an (xpos-point.Diameter/2, ypos-point.iameter/2, point.diameter, point.Diameter); }}} @Override public void mousePressed (mouseEvent e) {// if (GameOver) wird aufgerufen, wenn die Maustaste auf die Komponente gedrückt wird // Das Spiel ist beendet, Sie können es nicht zurückgeben. String colorname = isback? "Schwarz": "weißes Schach"; xIndex = (e.getX ()-Margin+grid_span/2)/grid_span; yIndex = (e.gety ()-margin+grid_span/2)/grid_span; // Die Koordinatenposition der Maus in einen Grid-Index konvertieren, wenn (xIndex <0 || XIndex> Zeilen || yIndex <0 || yindex> cols) // Das Schachstich aus dem Schussbrand fällt und nicht zurückgegeben wird. if (findchess (xIndex, yIndex)) // Das Schachstück existiert bereits in X, Y -Position, sodass Sie nicht zurückgegeben werden können. Punkt ch = neuer Punkt (xIndex, yIndex, isback? Color.black: color.white); Chesslist [CHESSCOUNT ++] = CH; repaint (); // das System benachrichtigen, wenn (iswin ()) {String msg = string.format ("Herzlichen Glückwunsch, %s win ~", Colorname); Joptionpane.showMessagedialog (this, msg); gameover = true; } else if (chessCount == (cols+1)*(Zeilen+1)) {String msg = string.format ("Schachtrommel ist ziemlich gut, großartig ~"); Joptionpane.showMessagedialog (this, msg); gameover = true; } isback =! isback; } @Override public void mouseclicked (MouseEvent e) {// Aufgerufen, wenn die Maustaste auf der Komponente geklickt (gedrückt und freigegeben)} @Override public void mouSerelest (Mousevent e) {/// // angerufen, wenn der Maustaste auf der Komponente freigegeben wird. component} @Override public void mouseexited (MouseEvent e) {// Aufgerufen, wenn die Maus die Komponente verlässt } return false; }/*Beurteilen, welcher Seitengewinn*/privat boolean iswin () {int continuEcount = 1; // Die Anzahl der kontinuierlichen Schachstücke für (int x = xIndex-1; x> = 0; x-) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, yIndex, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex+1; x <= Zeilen; x ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, yIndex, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. } else continueCount = 1; // für (int y = yIndex-1; y> = 0; y-) {// Sehen Sie vertikal nach Farbe c = isback? Color.black: color.white; if (getChess (xIndex, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int y = yIndex+1; y <= Zeilen; y ++) {// schauen Sie in vertikaler Richtung nach unten. Farbe c = isback? Color.black: color.white; if (getChess (xIndex, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. } else continueCount = 1; // für (int x = xIndex+1, y = yIndex-1; y> = 0 && x <= cols; x ++, y-) {// schauen auf die untere rechte Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex-1, y = yIndex+1; y <= Zeilen && x> = 0; x-, y ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie die Anzahl der Datensätze größer oder gleich fünf, was bedeutet, dass diese Seite gewinnt. Zurückkehren; } else continueCount = 1; // für (int x = xIndex-1, y = yIndex-1; y> = 0 && x> = 0; x-, y-) {// Suchen Sie nach Farbe c = iSback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } für (int x = xIndex+1, y = yIndex+1; y <= Zeilen && x <= cols; x ++, y ++) {// Suchen Sie nach Farbe c = isback? Color.black: color.white; if (getChess (x, y, c)! = null) {continuEcount ++; } sonst brechen; } if (continuEcount> = 5) {// beurteilen Sie, dass die Anzahl der Datensätze größer oder gleich fünf ist. Dies bedeutet, dass diese Seite gewinnt. } else continueCount = 1; false zurückgeben; } private point getChess (int xIndex, int yIndex, Farbe Farbe) {für (Punkt C: Chesslist) {if (c! = null && c.getX () == xIndex && c.Gety () == yIndex && c.getColor () == Farbe) return c; } return null; } public void restartGame () {// das Schachstück für (int i = 0; i <chesslist.length; i ++) Schachliste [i] = null; /*Wiederherstellen Sie den variablen Wert im Zusammenhang mit dem variablen variablen Wert*/ isback = true; GameOver = false; // Ob das Spiel chessCount = 0; // Die Anzahl der Schachstücke auf dem aktuellen Board endet, ist Repaint (); } public void goBack () {if (chessCount == 0) return; Schachliste [chesscount-1] = null; Chesscount--; if (chessCount> 0) {xIndex = chesslist [chessCount-1] .getX (); yIndex = chesslist [chesscount-1] .gety (); } isback =! isback; Repaint (); } // Dimension: Rechteck öffentliche Dimension getPreferredsize () {Neue Dimension zurückgeben (Margin*2+grid_span*cols, margin*2+grid_span*Zeilen); }} 5.3Point -Klasse
Paket chess.lcc.com; import Java.awt.*; public class Point {private int x; // x Indexwert des Schachstücks in der Schachkarte private int y; // y Indexwert des Schachstücks in der Schachkarte Private Color Color; // Farbe public static int diameter = 30; // Durchmesser öffentlicher Punkt (int x, int y, Farbe) {this.x = x; this.y = y; this.color = color; } // X -Indexwert des Schachstücks in das Schachbrett public int getsx () {return x; } // y Indexwert des Schachstücks im Schachbrett public int gety () {return y; } // Holen Sie sich die Schach -Piece -Farbe öffentliche Farbe getColor () {return color; }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.