java五子棋源代碼_java 五子棋游戲源碼

【實例簡介】

【實例截圖】

df88bb15af122a8bb076b55bb4ad5bf1.png

【核心代碼】

package game;

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.net.URL;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

// 五子棋的主框架

public class StartChessJFrame extends JFrame {

private ChessBoard chessBoard;//對戰面板

private JPanel toolbar;//工具條面板

private Button startButton;//設置開始按鈕

private Button backButton;//設置悔棋按鈕

private Button exitButton;//設置退出按鈕

private JPanel leftbar; //設置左面板,包括頭像以及名稱

private JPanel playerbar1;//玩家一頭像

private JPanel playerbar2;//玩家二頭像

public StartChessJFrame(){

setTitle("五子棋");//設置標題

chessBoard=new ChessBoard();//初始化面板對象,創建和添加菜單

setSize(780,654);

setResizable(false);// 設置窗體不可以放大

MyItemListener lis=new MyItemListener();//初始化按鈕事件監聽器內部類

Container contentPane=getContentPane();

contentPane.add(chessBoard);

chessBoard.setOpaque(true);

ClassLoader loader = StartChessJFrame.class.getClassLoader(); //加載圖片

// URL url_1 = loader.getResource("player1.jpg");

// ImageIcon player1 = new ImageIcon(url_1);//玩家1頭像

// URL url_2 = loader.getResource("player2.jpg");

// ImageIcon player2 = new ImageIcon(url_2);//玩家2頭像

leftbar = new JPanel();

playerbar1= new JPanel();

playerbar2=new JPanel();

playerbar1.setLayout(new GridLayout(1,1));//1行一列

playerbar2.setLayout(new GridLayout(1,1));//1行一列

JPanel playerPanel1 = new JPanel(new GridLayout(1,1,5,20));//玩家頭像總區域

JPanel playerPanel2 = new JPanel(new GridLayout(1,1,5,20));

// JLabel player1Label = new JLabel(player1);

// JLabel player2Label = new JLabel(player2);

// playerPanel1.add(player1Label);//玩家1

// playerPanel2.add(player2Label);//玩家2

playerbar1.add(playerPanel1);

playerbar2.add(playerPanel2);

JLabel player1name=new JLabel(" 黑方");

JLabel player2name=new JLabel(" 白方");

leftbar.setLayout(new GridLayout(4, 1,5,10));//4行一列

leftbar.add(playerbar1);

leftbar.add(player1name);

leftbar.add(playerbar2);

leftbar.add(player2name);

leftbar.setBorder(BorderFactory.createEmptyBorder(50,10,18,10));

toolbar=new JPanel();//工具面板欄實例化

toolbar.setBorder(BorderFactory.createEmptyBorder(0,25,0,30));

startButton=new Button("重新開始");

backButton=new Button("悔棋");

exitButton=new Button("退出");//三個按鈕初始化

toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));//將工具面板按鈕用FlowLayout布局

chessBoard.setLayout(new BorderLayout());

toolbar.add(backButton);

toolbar.add(startButton);

toolbar.add(exitButton);//個按鈕添加到工具面板上

startButton.addActionListener(lis);

backButton.addActionListener(lis);

exitButton.addActionListener(lis);//將三個按鈕事件注冊監聽事件

add(leftbar,BorderLayout.WEST);

add(toolbar,BorderLayout.SOUTH);//將工具面板布局到界面南方也就是下面

add(chessBoard,BorderLayout.CENTER);//將面板對象添加到窗體上

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置界面關閉事件

pack();//自適應大小

}

private class MyItemListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

Object obj=e.getSource();//獲取事件源

if(obj==startButton){

System.out.println("重新開始...");//重新開始

chessBoard.restartGame();

}else if(obj==exitButton){

System.exit(0);//結束應用程序

}else if(obj==backButton){

System.out.println("悔棋...");//悔棋

chessBoard.goback();

}

}

}

static void playMusic(){//背景音樂播放

// URL cb;

// ClassLoader loader = StartChessJFrame.class.getClassLoader();

// cb= loader.getResource("背景音樂.wav"); // 獲取背景音樂資源

// AudioClip aau;

// aau = Applet.newAudioClip(cb);

// //aau.play();

// aau.loop();//循環播放

// System.out.println("可以播放");

}

public static void main(String[] args) {

StartChessJFrame f=new StartChessJFrame();//創建主框架

playMusic(); //播放背景音樂

f.setVisible(true);//顯示主框架

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445809.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java界面化_java怎么實現圖形化界面

展開全部java圖形化界面還62616964757a686964616fe78988e69d8331333363373232是有很多內容要學習的,可以參考 如下實例:public class Test extends JFrame{MyPanel mpnull;public static void main(String[] args){// TODO Auto-generated method stubTe…

java圖形用戶登錄界面_Java簡單登錄圖形界面

一.登錄界面1.程序代碼1 import java.awt.*;//導入awt包2 import javax.swing.*;//導入swing包3 import java.awt.event.ActionListener;//導入awt包中的監聽器事件包4 import java.awt.event.ActionEvent;//導入awt包中的ActionEvent事件包56 public class EnterScreen extend…

北大青鳥java y2_Struts-2 北大青鳥 Y2學年 項目案例使用 2框架開發租房網站 Java Develop 249萬源代碼下載- www.pudn.com...

文件名稱: Struts-2下載 收藏√ [5 4 3 2 1 ]開發工具: Java文件大小: 10225 KB上傳時間: 2016-01-03下載次數: 0提 供 者: 姜鵬詳細說明:北大青鳥 Y2學年 項目案例使用Struts 2框架開發租房網站-My English LOW文件列表(點擊判斷是否您需要的文件&#xff0c…

java int 包_int readInt()

int readInt()描述 (Description)java.io.ObjectInputStream.readInt()方法讀取32位int。聲明 (Declaration)以下是java.io.ObjectInputStream.readInt()方法的聲明。public int readInt()參數 (Parameters)NA返回值 (Return Value)此方法不返回值。異常 (Exception)EOFExcepti…

java i o是什么流_Java I/O流的總結

I/O的類結構圖I/O的分類根據處理的數據類型分為:字節流和字符流。根據數據流向分為:輸入流和輸出流。流又可分為節點流和處理流。節點流直接與數據源相連處理流與節點流一起使用,在節點流的基礎上,再嵌套一層。提高文件的讀取效率…

java i18n實例_Java國際化(i18n)格式化日期

本篇文章幫大家學習java國際化(i18n)格式化日期,包含了Java國際化(i18n)格式化日期使用方法、操作技巧、實例演示和注意事項,有一定的學習價值,大家可以用來參考。DateFormat類提供了各種格式來格式化日期。 以下是一些格式的列表。DateForma…

java placeholder_java – 如何在JTextfield中設置像Placeholder一樣的文本

我用來覆蓋文本字段繪制方法,直到我最終得到更多的自定義文本字段然后我真的想…然后我發現this prompt API易于使用,不需要你擴展任何組件.它還有一個很好的“伙伴”API這已經被包含在SwingLabs,SwingX library中,這使得它甚至可以使用……例如(這使用SwingX-1.6.4)import jav…

java web聊天室私聊map_java websocket聊天室示例(springboot)

【實例簡介】【實例截圖】【核心代碼】package com.example.demo;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ConcurrentHashMap;import javax.websocket.OnClose;import …

Java 內存映射讀取文件_Java內存映射 大文件輕松處理|chu

前言內存映射文件(Memory-mapped File),指的是將一段虛擬內存逐字節映射于一個文件,使得應用程序處理文件如同訪問主內存(但在真正使用到這些數據前卻不會消耗物理內存,也不會有讀寫磁盤的操作),這要比直接文件讀寫快幾個數量級。…

LeetCode - Easy - 118. Pascal‘s Triangle

Topic Array Description https://leetcode.com/problems/pascals-triangle/ Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle. In Pascal’s triangle, each number is the sum of the two numbers directly above it. Example…

LeetCode - Easy - 119. Pascal‘s Triangle II

Topic Array Description https://leetcode.com/problems/pascals-triangle-ii/ Given an integer rowIndex, return the rowIndexth row of the Pascal’s triangle. Notice that the row index starts from 0. In Pascal’s triangle, each number is the sum of the tw…

jenv java_mac 上使用jenv 管理的多個java 版本

由于服務器是java1.7, mac上是1.8,因此mac編譯的java代碼會在服務器上報錯。因此,需要修改mac上java版本,自己折騰了很久,放棄,決定使用jenv 管理! 結果是非常方便使用步驟:1、安裝 …

mysql 源碼 緩存_MySQL源碼:MYSQL存儲過程/函數的分析原理及緩存機制

前言:我個人認為,有關MYSQL存儲過程/函數在MYSQL中的實現比較粗糙,可擴展性不夠好,其實現的耦合性太高,所以主要講一些它的原理方面的內容,但有可能在某些方面理解不夠好或者有些不正確的地方,歡…

如何單元測試Java的private方法

問題 Java類中private方法通常只能被其所屬類的調用,其他類只能望而卻步,單元測試private方法也就一籌莫展。 嘗試解法: 在測試時,手動將private改為public,測試完后再將其改回。將測試方法寫進private方法的所屬類…

圖論與java_算法筆記_150:圖論之雙連通及橋的應用(Java)

1 問題描述DescriptionIn order to get from one of the F (1 < F < 5,000) grazing fields (which are numbered 1..F) to another field, Bessie and the rest of the herd are forced to cross near the Tree of Rotten Apples. The cows are now tired of often bein…

如何用JUnit單元測試List

問題 JUnit測試List時差強人意。 解法 引入依賴 hamcrest-library包含許多有用方法來測試List數據類型。 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>&l…

java數據包解析_請教http請求數據包如何解析 重組

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓下面是我捕獲到的請求報文片段dst_ip:/121.52.228.134ack:trueack_num:3064957366date:POST /messagebroker/amf HTTP/1.1Host: s16.xxhzw.game.yy.comUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/…

webqq java_WebQQ登錄詳解

第二次登錄請求方式:POST地址:http://d.web2.qq.com/channel/login2POST正文:r%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22  psessionid%22%3Anull%7D&clientid{2}&psessionidnull…

LeetCode - Easy - 155. Min Stack

Topic StackDesign Description https://leetcode.com/problems/min-stack/ Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) – Push element x onto stack.pop() – Removes the element on top of the st…

java judgefilecode_VScode出現無法打開“X”: 找不到文件(file:///XXXX) 的解決辦法

如標題&#xff0c;被這個問題整了好長時間了&#xff0c;調試的時候如果有語法錯誤只能顯示相應的的行數&#xff0c;沒有辦法定位到出錯的行數上。(由于用處不是很大并且沒有找到解決辦法&#xff0c;所以就一直放著沒管23333)直到最近看到一位大佬的解決辦(重寫正則表達式)法…