Java implementiert ein Backgammon-Minispiel
package Gomoku; import java.awt.Toolkit; import javax.swing.JFrame; public class GomokuFrame extensions { //Definieren Sie ein Operationspanel Op=null; public GomokuFrame() " ); //Fenstergröße festlegen this.setSize(510,510); //Fensterposition festlegen//Computerbildschirmgröße abrufen int computer_width=Toolkit.getDefaultToolkit().getScreenSize().width; int computer_height=Toolkit.getDefaultToolkit().getScreenSize().height; System.out.println("Die Breite des Computerbildschirms:/n"+computer_width+"/ ncomputer Bildschirmhöhe:/n"+computer_height); //Zentriere this.setLocation((computer_width-510)/2, (computer_height-510)/2); //Instanziiere den Vorhang op=new OperatorPane(); //Importiere den Vorhang this.add(op); Fügen Sie die Maus hinzu, die zuhört this.addMouseListener(op); //Setzen Sie die Fensteranzeige ein this.setVisible(true); //Legen Sie das normale Schließen des Fensters fest this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Führen Sie den Test aus public static void main(String[] args) { new GomokuFrame(} }
Paket Gomoku; java.awt.Color importieren; java.awt.Graphics importieren; java.awt.Image importieren; java.awt.event.MouseEvent importieren; java.awt.event.MouseListener importieren java.awt.image.BufferedImage;import java.awt.image.BufferedImageFilter; javax.swing.ImageIcon;import javax.swing.JOptionPane;import javax.swing.JPanel; public class OperatorPane erweitert JPanel implementiert MouseListener,Runnable{ //Definieren Sie das Hintergrundbildobjekt Image imageBackground = null; //Definieren Sie die Anzahl der Zeilen von das Schachbrettgitter int boardrows=18; //definiere die Anzahl der Spalten des Schachbrettgitters int boardcols=18; //definiere die Größe des Schachbrettgitters int boardsize=20; //Speichere die Koordinaten der Schachfiguren int x=0,y=0; //Speichere die Koordinaten aller zuvor gespielten Schachfiguren//Der Dateninhalt 0: bedeutet, dass es derzeit keine Schachfigur gibt Punkt, 1: bedeutet, dass dieser Punkt eine schwarze Figur ist, 2: zeigt an, dass dieser Punkt eine weiße Figur ist int allchess[][]=new int [19][19] //Markieren Sie, ob der nächste Schritt schwarz ist oder weiß boolean isBlack=true; //Beurteile, ob das Spiel fortgesetzt werden kann boolean canPlay=true ; //Speichern Sie die angezeigten Informationen. String message="Black goes first"; //Speichern Sie die maximale Zeit (Sekunden) int maxTime = 0; //Thread-Klasse für Countdown Thread t = new Thread(this); //Speichern Sie die verbleibende Zeit für Black with White int blackTime = 0; int whiteTime = 0; // Anzeigeinformationen der verbleibenden Zeit beider Parteien speichern String blackMessage = "Unlimited"; @SuppressWarnings("deprecation") public OperatorPane() { t.start(); t.suspend(); imageBackground=new ImageIcon("image/background.jpg").getImage( } public void paint(Graphics g) { //Doppelte Puffertechnologie BufferedImage b1=neu BufferedImage(495,475,BufferedImage.TYPE_INT_ARGB); Graphics g2=b1.createGraphics(); //Zeichne das Hintergrundbild g2.drawImage(imageBackground, 0, 0,495,475,null); //Zeichne die Schachbrettlinie Color c=g2.getColor( ); g2.setColor(Color.BLACK); for(int i=0;i<=boardrows;i++) { g2.drawLine(10,50+boardsize*i,10+boardsize*boardrows,50+boardsize*i); i++) { g2.drawLine(10+boardsize*i,50,10+boardsize*i,50+boardsize*boardcols } //Zeichne die Drei-Drei-Position g2.fillOval(67, 107, 6, 6); g2.fillOval(307, 107, 6, 6); ( 307, 347, 6, 6); //Zeichne zusätzliche Punkte g2.fillOval(67, 227, 6, 6); g2.fillOval(307, 227, 6, 6); g2.fillOval(187, 347, 6, 6); //Zeichne Tianyuan g2 . fillOval(187, 227, 6, 6); //Textaufforderung zeichnen/*Font f=new Font("黑体", Font.BOLD, 24); g.setFont(f);*/ g2.setFont(new Font("黑体", Font.BOLD, 20)); g2.drawString("Spielinformationen:"+message, 130, 40); g2.setFont(new Font("宋体", Font.ITALIC, 15)); g2.drawString("Black time:"+blackMessage,25, 445); g2.drawString("White time:"+whiteMessage,245, 445); //Zeichne alle Schachfiguren for(int i= 0 ;i<=boardrows;i++) { for(int j=0;j<=boardcols;j++) { //Speicher schwarzes Schach if(allchess[i][j]==1) { int tempX=i*20-10; int tempY=j*20+30; //Schwarz zeichnen g2.setColor(Color.BLACK); //Speicher weißes Schach if(allchess[i][j]==2) { int tempX=i*20-10; tempY=j*20+30; //Zeichne das weiße Stück g2.setColor(Color.BLACK); g2.drawOval(tempX+12, tempY+13, 15, 15); .fillOval(tempX+12, tempY+13, 15, 15); g2.setColor(c); g.drawImage(b1,0,0,this); } private boolean checkWin() { int color = allchess[x][y]; same Wie viele Schachfiguren sind in der horizontalen Richtung verbunden? Eigenschaften sind gleich. Das heißt, die y-Werte in allChess[x][y] sind gleich // Verwenden Sie eine Schleife, um zu bestimmen, ob die Schachfiguren verbunden sind int i = 1; while (color == allchess[x+i][y ]) { count1++; i++; //Beurteilen Sie die vertikale Richtung, das heißt, die x-Werte in allChess[x][y] sind gleich int j = 1; while (color == allchess[x][y+j]) { count2++; ; //Setze den j-Wert zurück j = 1; while (color == allchess[x][yj]) { count2++; „/“ int m1=1; int n1=1; while (color == allchess[x+m1][y+n1]) { count3++; -m1][y-n1]) { count3++; m1++; } if(count3>= 5) { flag = true; int m2=1; int n2=1; while (color == allchess[x+m2][y-n2]) { count4++ } m2=1; x-m2][y+n2]) { count4++; m2++; } if(count4>= 5) { flag = true } */ int count; //Horizontale Beurteilung count=this.checkCount(1, 0, color); if(count>=5) { flag = true } else { //Vertikale Beurteilung count=this.checkCount(0, 1, color); (count>=5) { flag = true; } else { //Slant "/" count=this.checkCount(1, 1, color); if(count>=5) { flag = true; Schräge „/“ count=this.checkCount(1, -1, color); if(count>=5) { flag = true; } } } return flag } private int xChange,int yChange,int color) { int count =1; int tempX=xChange; int tempY=yChange; while (color==allchess[x+xChange][y+yChange]) { count++; if(xChange!=0) { xChange++; } if(yChange<0) { yChange--; } else { yChange++; } } (color==allchess[x-xChange][y-yChange]) { count++; if(xChange!=0) { xChange++; } if(yChange!=0) { if(yChange<0) { yChange--; } else { yChange++; } } } return count; public void mouseClicked(MouseEvent e) { System.out.println("x:" +e.getX()+"y:"+e.getY()); x=e.getX(); if(x>=10&&x<=(10+boardsize*boardrows+20)&&y>=50&&y<=(50+boardsize*boardcols+40)) { //System.out.println("Der Punkt ist auf der Tafel. "); ==0) { if(isBlack==true) { allchess[x][y]=1; isBlack=false; message="White's turn"; } else { allchess[x][y]=2; isBlack =true; message="Black's turn"; } // Bestimmen Sie, ob diese Schachfigur mit anderen Schachfiguren in einer 5er-Verbindung verbunden ist, d. h. ob das Spiel beendet ist. winFlag=this.checkWin(); true) { JOptionPane.showMessageDialog (this,"Game over!"+ (allchess[x][y]==1?"Black="White")+"Win." } } else { JOptionPane.showMessageDialog(this, „Es gibt bereits eine Schachfigur an der aktuellen Position, bitte platzieren Sie sie erneut!“); e.getX() >=400&&e.getX()<=470&&e.getY()>=80&&e.getY()<=110) { int result=JOptionPane.showConfirmDialog(this, „Einstellungen abgeschlossen, möchten Sie das Spiel neu starten?“); if(result==0) { //Vorgang neu starten, alle Informationen im Array allchess[][] sind 0 // Schachbrett löschen for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; //Eine andere Möglichkeit allChess = new int[19][19]; blackTime = maxTime; whiteTime = maxTime; if (maxTime > 0) { blackMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); whiteMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - t.resume(); } else { blackMessage = "Unlimited"; „Schwarz geht zuerst“; isBlack = true; this.canPlay = true; //Klicken Sie auf die Schaltfläche „Spieleinstellungen“ if(e.getX()>=400&&e.getX()<=470&&e.getY()>=130&&e.getY()<=160) { String input = JOptionPane .showInputDialog("Bitte eingeben das Spiel Die maximale Zeit (Einheit: Minuten). Wenn Sie 0 eingeben, bedeutet dies, dass es kein Zeitlimit gibt: "); versuchen Sie es mit { maxTime = Integer.parseInt(input) * 60; if (maxTime < 0) { JOptionPane.showMessageDialog(this, "Bitte geben Sie korrekte Informationen ein, negative Zahlen sind nicht zulässig!"); if (maxTime == 0) { int result = JOptionPane.showConfirmDialog(this, "Setup abgeschlossen, Spiel neu starten?"); if (result == 0) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; } // Ein anderer Weg allChess = new int[19][19] message = "Black goes first"; blackTime = maxTime; blackMessage = "No limit"; this.canPlay = true; 0) { int result = JOptionPane.showConfirmDialog(this, „Einstellungen abgeschlossen, möchten Sie das Spiel neu starten?“); if (result == 0) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; } } // Ein anderer Weg allChess = new int[19][19]; message = "Schwarz geht zuerst"; isBlack = true; blackTime = maxTime / 3600 + :: + (maxTime / 60 - maxTime / 3600 * 60 ) + ":" + (maxTime - maxTime / 60 * 60); whiteMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); this.canPlay = true; } } } Catch (NumberFormatException e1) { / / TODO Automatisch generierter Catch-Block JOptionPane.showMessageDialog(this, „Bitte geben Sie die Informationen korrekt ein!“); //Klicken Sie auf die Spielbeschreibungsschaltfläche if(e.getX()>=400&&e.getX()<=470&&e.getY()>=180&&e.getY()<=210) { JOptionPane.showMessageDialog(this, "Dies ist ein Backgammon-Spielprogramm, bei dem die schwarze und die weiße Seite abwechselnd Schach spielen. Wenn eine Seite fünf Figuren in einer Reihe erreicht, endet das Spiel. "); } //Klicken Sie auf die Schaltfläche „Niederlage zugeben“ if(e.getX()>=400&&e.getX()<=470&&e.getY()>=280&&e.getY()<=310) { int result=JOptionPane.showConfirmDialog (this ,„Sind Sie sicher, dass Sie sich geschlagen geben wollen?“); if (result == 0) { if (isBlack) { JOptionPane.showMessageDialog(this, „Schwarz hat nachgegeben, das Spiel ist vorbei!“); } else { JOptionPane.showMessageDialog(this, „Weiß hat nachgegeben, das Spiel ist vorbei!“ } } //Klicken Sie auf die Schaltfläche „Info“ if(e.getX()>=400&&e.getX()<=470&&e.getY()>=330&&e.getY()<=360) { JOptionPane.showMessageDialog(this,"Dieses Spiel wird bereitgestellt von Nanmu Produziert vom Studio. Wenn Sie Fragen dazu haben, besuchen Sie bitte www.yiyiinformation.com"); } //Klicken Sie auf die Schaltfläche „Beenden“ if(e.getX()>=400&&e.getX()<=470&&e.getY()>=380&&e.getY()<=410) { JOptionPane.showMessageDialog(this, „Game Over“) ; System.exit(0); } //***********************// @Override public void mouseEntered(MouseEvent arg0) { // TODO Automatisch generierter Methoden-Stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Automatisch generierter Methoden-Stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Automatisch generierter Methoden-Stub } @Override public void mouseReleased (MouseEvent arg0) { // TODO Automatisch generierter Methoden-Stub } @Override public void run() { if (maxTime > 0) { while (true) { if (isBlack) { blackTime--; if (blackTime == 0) { JOptionPane.showMessageDialog(this, "Black hat die Zeit überschritten, das Spiel ist vorbei! "); } } else { whiteTime--; if (whiteTime == 0) { JOptionPane.showMessageDialog(this, "White hat die Zeit überschritten, das Spiel ist vorbei!"); } } blackMessage = blackTime / 3600 + :: + (blackTime / 60 - blackTime / 3600 * 60) + :: + (blackTime - blackTime / 60 * 60); whiteMessage = whiteTime / 3600 + :: + (whiteTime / 60 - whiteTime / 3600 * 60) + ":" + (whiteTime - whiteTime / 60 * 60); this.repaint(); try { Thread.sleep(1000); } Catch (InterruptedException e) { // TODO Automatisch generierter Catch-Block e.printStackTrace(); whiteTime); } } } }
Demobild:
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für alle hilfreich sein, um Java kompetent zu beherrschen.