「java黑白棋源码」围棋java源码

博主:adminadmin 2022-11-28 11:09:10 56

本篇文章给大家谈谈java黑白棋源码,以及围棋java源码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

急求Java黑白棋设计源代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.geom.*;

import javax.swing.JOptionPane.*;

public class FiveChess

{

public static void main(String[] args)

{

JFrame myFrame = new JFrame("快乐五子棋");

myFrame.getContentPane().add(new MyPanel());

Toolkit mykit = myFrame.getToolkit();

Dimension mysize = mykit.getScreenSize();

myFrame.setBounds(0,0,mysize.width,mysize.height - 40);

myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

myFrame.show();

}

}

class MyPanel extends JPanel implements MouseListener

{

private Point start = new Point(0,0);

private Point next = new Point(0,0);

boolean[][] chessBo = new boolean[19][19];

boolean chessCo = true; //判断颜色的,true 黑

boolean winchess = true; //true,为胜利

MyPanel(){

addMouseListener(this);

setBackground(Color.blue);

}

public boolean winkill(int x,int y) //win ?

{

int countBlack = 0,countWhite = 0;

boolean winchess01 = false;

//x,y 取到r01,r02的值

for(int i = 0;i 5;i++)//判断纵向下

{

if((x + i) 20)

break;

if(chessCo chessBo[x + i][y])

countBlack++;

else if(chessBo[x + i][y] (chessCo == false))

countWhite++;

}

for(int i = 0;i 5;i++)//判断纵向上

{

if((x - i) = 0)

break;

if(chessCo chessBo[x - i][y])

countBlack++;

else if(chessBo[x - i][y] (chessCo == false))

countWhite++;

}

if((countBlack == 5) || (countWhite == 5))

winchess01 = true;

return winchess01;

}

public void paint(Graphics g)//画棋盘

{

Graphics2D g2D = (Graphics2D)g;

g2D.setPaint(Color.black);

float pay = 60.0f,pbx = 60.0f;

float lett = 25.0f;

Point2D.Float p1 = new Point2D.Float(60.0f,pay);

Point2D.Float p2 = new Point2D.Float(510.0f,pay);

Point2D.Float p3 = new Point2D.Float(pbx,60.0f);

Point2D.Float p4 = new Point2D.Float(pbx,510.0f);

for(int i=0;i19;i++){

Line2D.Float lineH = new Line2D.Float(p1,p2);

Line2D.Float lineV = new Line2D.Float(p3,p4);

pay += lett;

p1 = new Point2D.Float(60.0f,pay);

p2 = new Point2D.Float(510.0f,pay);

pbx += lett;

p3 = new Point2D.Float(pbx,60.0f);

p4 = new Point2D.Float(pbx,510.0f);

g2D.draw(lineH);

g2D.draw(lineV);

}

}

public void mousePressed(MouseEvent evt)

{

}

public void mouseClicked(MouseEvent evt)

{

int x = evt.getX();

int y = evt.getY();

int clickCount = evt.getClickCount();

if(clickCount =1 ){

if((x 48 x 522) (y 48 y 522))

draw(x,y);

}

}

public void draw(int dx,int dy)

{

int r01 = 0,r02 = 0;

Graphics g = getGraphics();

start.x = dx;

start.y = dy;

r01 = (start.x + 13 - 60) / 25; //r01 、r02当前的格子

r02 = (start.y + 13 - 60) / 25;

//System.out.println(r01 + "-" + r02);

next.x = 25 * r01 + 60 - 11;

next.y = 25 * r02 + 60 - 11;

//System.out.println(next.x + "-" + next.y);

if(chessCo){

chessCo = false;

g.setColor(Color.black);

g.fillOval(next.x,next.y,20,20);

chessBo[next.x][next.y] = true;//用这个时,黑白子可交替出现,

//chessBo[r01][r02] = true;//用这个代替上面那个时黑白子不可交替了,不知道为什么会这样

//加入判断胜负的方法winkill()

if(winchess == winkill(r01,r02))

showMessage();

}

if(!chessCo){

chessCo = true;

g.setColor(Color.white);

g.fillOval(next.x,next.y,20,20);

chessBo[r01][r02] = true;

}

//g.drawOval(next.x,next.y,20,20);

g.dispose();

}

public void mouseReleased(MouseEvent evt)

{

}

public void mouseEntered(MouseEvent evt)

{

}

public void mouseExited(MouseEvent evt)

{

}

public void showMessage()

{

JOptionPane.showMessageDialog(null,

"You are win.",

"wide288 to Message!",

JOptionPane.INFORMATION_MESSAGE);

}

}

高分求一个“黑白棋”的汇编源码

//我这有个源代码,不过是VC++的。你对照API就可以修改的。

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// Chinese (P.R.C.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)

#ifdef _WIN32

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

#pragma code_page(936)

#endif //_WIN32

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE DISCARDABLE

BEGIN

"resource.h\0"

END

2 TEXTINCLUDE DISCARDABLE

BEGIN

"#include ""afxres.h""\r\n"

"\0"

END

3 TEXTINCLUDE DISCARDABLE

BEGIN

"#define _AFX_NO_SPLITTER_RESOURCES\r\n"

"#define _AFX_NO_OLE_RESOURCES\r\n"

"#define _AFX_NO_TRACKER_RESOURCES\r\n"

"#define _AFX_NO_PROPERTY_RESOURCES\r\n"

"\r\n"

"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n"

"#ifdef _WIN32\r\n"

"LANGUAGE 4, 2\r\n"

"#pragma code_page(936)\r\n"

"#endif //_WIN32\r\n"

"#include ""res\\bw.rc2"" // non-Microsoft Visual C++ edited resources\r\n"

"#include ""l.chs\\afxres.rc"" // Standard components\r\n"

"#include ""l.chs\\afxprint.rc"" // printing/print preview resources\r\n"

"#endif\r\n"

"\0"

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Icon

//

// Icon with lowest ID value placed first to ensure application icon

// remains consistent on all systems.

IDR_MAINFRAME ICON DISCARDABLE "res\\bw.ico"

IDR_BWTYPE ICON DISCARDABLE "res\\bwDoc.ico"

/////////////////////////////////////////////////////////////////////////////

//

// Bitmap

//

IDR_MAINFRAME BITMAP MOVEABLE PURE "res\\Toolbar.bmp"

IDB_BOARD BITMAP DISCARDABLE "res\\board1.bmp"

IDB_EMPTY BITMAP DISCARDABLE "res\\empty.bmp"

IDB_WHITE BITMAP DISCARDABLE "res\\white.bmp"

IDB_BLACK BITMAP DISCARDABLE "res\\black.bmp"

IDB_LAST BITMAP DISCARDABLE "res\\bitmap1.bmp"

/////////////////////////////////////////////////////////////////////////////

//

// Toolbar

//

IDR_MAINFRAME TOOLBAR DISCARDABLE 16, 16

BEGIN

BUTTON ID_BLACK

BUTTON ID_WHITE

BUTTON ID_REG

SEPARATOR

BUTTON ID_ONE

BUTTON ID_TWO

BUTTON ID_THREE

SEPARATOR

BUTTON ID_APP_ABOUT

END

/////////////////////////////////////////////////////////////////////////////

//

// Menu

//

IDR_MAINFRAME MENU PRELOAD DISCARDABLE

BEGIN

POPUP "棋局(F)"

BEGIN

MENUITEM "执黑先手(B)\tCtrl+B", ID_BLACK

MENUITEM "执白后手(W)\tCtrl+W", ID_WHITE

MENUITEM "悔棋(S)\tCtrl+S", ID_REG

MENUITEM SEPARATOR

MENUITEM "退出(X)", ID_APP_EXIT

END

POPUP "选项(O)"

BEGIN

MENUITEM "低难度", ID_ONE

MENUITEM "中难度", ID_TWO

MENUITEM "高难度", ID_THREE

END

POPUP "查看(V)"

BEGIN

MENUITEM "工具栏(T)", ID_VIEW_TOOLBAR

MENUITEM "状态栏(S)", ID_VIEW_STATUS_BAR

END

POPUP "帮助(H)"

BEGIN

MENUITEM "关于 黑白棋(A)...", ID_APP_ABOUT

END

END

/////////////////////////////////////////////////////////////////////////////

//

// Accelerator

//

IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE

BEGIN

"N", ID_FILE_NEW, VIRTKEY, CONTROL

"O", ID_FILE_OPEN, VIRTKEY, CONTROL

"S", ID_FILE_SAVE, VIRTKEY, CONTROL

"P", ID_FILE_PRINT, VIRTKEY, CONTROL

"Z", ID_EDIT_UNDO, VIRTKEY, CONTROL

"X", ID_EDIT_CUT, VIRTKEY, CONTROL

"C", ID_EDIT_COPY, VIRTKEY, CONTROL

"V", ID_EDIT_PASTE, VIRTKEY, CONTROL

VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT

VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT

VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL

VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT

VK_F6, ID_NEXT_PANE, VIRTKEY

VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT

END

/////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 223, 49

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "关于 黑白棋"

FONT 9, "宋体"

BEGIN

ICON IDR_MAINFRAME,IDC_STATIC,11,17,21,21

LTEXT "黑白棋 ",IDC_STATIC,38,14,119,8,SS_NOPREFIX

LTEXT "版权所有 (C) 2002",IDC_STATIC,40,28,119,8

DEFPUSHBUTTON "确定",IDOK,166,7,50,14,WS_GROUP

END

#ifndef _MAC

/////////////////////////////////////////////////////////////////////////////

//

// Version

//

VS_VERSION_INFO VERSIONINFO

FILEVERSION 1,0,0,1

PRODUCTVERSION 1,0,0,1

FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

FILEFLAGS 0x1L

#else

FILEFLAGS 0x0L

#endif

FILEOS 0x4L

FILETYPE 0x1L

FILESUBTYPE 0x0L

BEGIN

BLOCK "StringFileInfo"

BEGIN

BLOCK "080404b0"

BEGIN

VALUE "Comments", "\0"

VALUE "CompanyName", "\0"

VALUE "FileDescription", "bw Microsoft 基础类应用程序\0"

VALUE "FileVersion", "1, 0, 0, 1\0"

VALUE "InternalName", "bw\0"

VALUE "LegalCopyright", "版权所有 (C) 2001\0"

VALUE "LegalTrademarks", "\0"

VALUE "OriginalFilename", "bw.EXE\0"

VALUE "PrivateBuild", "\0"

VALUE "ProductName", "bw 应用程序\0"

VALUE "ProductVersion", "1, 0, 0, 1\0"

VALUE "SpecialBuild", "\0"

END

END

BLOCK "VarFileInfo"

BEGIN

VALUE "Translation", 0x804, 1200

END

END

#endif // !_MAC

/////////////////////////////////////////////////////////////////////////////

//

// DESIGNINFO

//

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

IDD_ABOUTBOX, DIALOG

BEGIN

LEFTMARGIN, 7

RIGHTMARGIN, 216

TOPMARGIN, 7

BOTTOMMARGIN, 42

END

END

#endif // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// String Table

//

STRINGTABLE PRELOAD DISCARDABLE

BEGIN

IDR_MAINFRAME "黑白棋程序\n\nBw\n\n\nBw.Document\nBw Document"

END

STRINGTABLE PRELOAD DISCARDABLE

BEGIN

AFX_IDS_APP_TITLE " "

AFX_IDS_IDLEMESSAGE "就绪"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_INDICATOR_EXT "扩展名"

ID_INDICATOR_CAPS "大写"

ID_INDICATOR_NUM "数字"

ID_INDICATOR_SCRL "滚动"

ID_INDICATOR_OVR "改写"

ID_INDICATOR_REC "记录"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_FILE_NEW " "

ID_FILE_OPEN " "

ID_FILE_CLOSE " "

ID_FILE_SAVE_AS " "

ID_FILE_PAGE_SETUP "改变打印选项\n页面设置"

ID_FILE_PRINT_SETUP "改变打印机及打印选项\n打印设置"

ID_FILE_PRINT "打印活动文档\n打印"

ID_FILE_PRINT_PREVIEW "显示整页\n打印预览"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_APP_ABOUT "显示程序信息,版本号和版权\n关于"

ID_APP_EXIT "退出应用程序;提示保存文档\n退出"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_FILE_MRU_FILE1 "打开该文档"

ID_FILE_MRU_FILE2 "打开该文档"

ID_FILE_MRU_FILE3 "打开该文档"

ID_FILE_MRU_FILE4 "打开该文档"

ID_FILE_MRU_FILE5 "打开该文档"

ID_FILE_MRU_FILE6 "打开该文档"

ID_FILE_MRU_FILE7 "打开该文档"

ID_FILE_MRU_FILE8 "打开该文档"

ID_FILE_MRU_FILE9 "打开该文档"

ID_FILE_MRU_FILE10 "打开该文档"

ID_FILE_MRU_FILE11 "打开该文档"

ID_FILE_MRU_FILE12 "打开该文档"

ID_FILE_MRU_FILE13 "打开该文档"

ID_FILE_MRU_FILE14 "打开该文档"

ID_FILE_MRU_FILE15 "打开该文档"

ID_FILE_MRU_FILE16 "打开该文档"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_NEXT_PANE "切换到下一个窗格\n下一窗格"

ID_PREV_PANE "切换回前一个窗格\n前一窗格"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_WINDOW_SPLIT "将活动的窗口分隔成窗格\n分隔"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_EDIT_CLEAR "删除被选对象\n删除"

ID_EDIT_CLEAR_ALL "全部删除\n全部删除"

ID_EDIT_COPY " "

ID_EDIT_CUT " "

ID_EDIT_FIND "查找指定的正文\n查找"

ID_EDIT_PASTE " "

ID_EDIT_REPEAT "重复上一步操作\n重复"

ID_EDIT_REPLACE "用不同的正文替换指定的正文\n替换"

ID_EDIT_SELECT_ALL "选择整个文档\n选择全部"

ID_EDIT_UNDO "撤消最后一步操作\n撤消"

ID_EDIT_REDO "重新执行先前已撤消的操作\n重新执行"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_VIEW_TOOLBAR "显示或隐藏工具栏\n显隐工具栏"

ID_VIEW_STATUS_BAR "显示或隐藏状态栏\n显隐状态栏"

END

STRINGTABLE DISCARDABLE

BEGIN

AFX_IDS_SCSIZE "改变窗口大小"

AFX_IDS_SCMOVE "改变窗口位置"

AFX_IDS_SCMINIMIZE "将窗口缩小成图标"

AFX_IDS_SCMAXIMIZE "把窗口放大到最大尺寸"

AFX_IDS_SCNEXTWINDOW "切换到下一个文档窗口"

AFX_IDS_SCPREVWINDOW "切换到先前的文档窗口"

AFX_IDS_SCCLOSE "关闭活动的窗口并提示保存所有文档"

END

STRINGTABLE DISCARDABLE

BEGIN

AFX_IDS_SCRESTORE "把窗口恢复到正常大小"

AFX_IDS_SCTASKLIST "激活任务表"

END

STRINGTABLE DISCARDABLE

BEGIN

AFX_IDS_PREVIEW_CLOSE "关闭打印预览模式\n取消预阅"

END

STRINGTABLE DISCARDABLE

BEGIN

ID_WHITE "执白后手"

ID_BLACK "执黑先手"

ID_REG "悔棋"

ID_ONE "低难度"

ID_THREE "高难度"

ID_TWO "中难度"

END

#endif // Chinese (P.R.C.) resources

/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 3 resource.

//

#define _AFX_NO_SPLITTER_RESOURCES

#define _AFX_NO_OLE_RESOURCES

#define _AFX_NO_TRACKER_RESOURCES

#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)

#ifdef _WIN32

LANGUAGE 4, 2

#pragma code_page(936)

#endif //_WIN32

#include "res\bw.rc2" // non-Microsoft Visual C++ edited resources

#include "l.chs\afxres.rc" // Standard components

#include "l.chs\afxprint.rc" // printing/print preview resources

#endif

/////////////////////////////////////////////////////////////////////////////

#endif // not APSTUDIO_INVOKED

java黑白棋代码,急求

一个小程序 简单的21点

package com.citicbank.other;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.SwingConstants;

import javax.swing.border.LineBorder;

public class gameTest extends JFrame {

private JLabel label_2;

private int number;

private int sum;

final JLabel label = new JLabel();

final JLabel label_1 = new JLabel();

public static void main(String[] args) {

new gameTest();

}

public gameTest() {

super("21点?!");

getContentPane().setLayout(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JButton button = new JButton();

button.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent arg0) {

onClick();

}

});

button.setText("出牌");

button.setBounds(170, 350, 106, 28);

getContentPane().add(button);

label.setBorder(new LineBorder(Color.black, 1, false));

label.setHorizontalAlignment(SwingConstants.CENTER);

label.setFont(new Font("", Font.BOLD, 26));

label.setText("背面");

label.setBounds(158, 81, 137, 153);

getContentPane().add(label);

label_1.setText("你已经拥有的牌:");

label_1.setBounds(109, 22, 270, 45);

getContentPane().add(label_1);

this.setBounds(200, 300, 501, 528);

this.setVisible(true);

getContentPane().add(getLabel_2());

}

public int randNumber() {

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

return (int) (Math.random() * 10 + 1);

}

public void onClick() {

number = this.randNumber();

this.sum += number;

label.setText("" + number);

String strTemp = this.label_1.getText();

strTemp += "" + number + " ";

label_1.setText(strTemp);

String temp = "合计:" + sum;

label_2.setText(temp);

isWin();

}

public void isWin() {

if (sum 21) {

JOptionPane.showMessageDialog(this, "你输了");

clear();

return;

} else if (sum == 21) {

JOptionPane.showMessageDialog(this, "你赢了");

clear();

return;

} else {

int i = JOptionPane.showOptionDialog(this, "是否继续?", "提示",

JOptionPane.OK_CANCEL_OPTION,

JOptionPane.INFORMATION_MESSAGE, null, null, null);

if (i == JOptionPane.OK_OPTION) {

onClick();

} else

return;

}

}

private void clear() {

label_2.setText("合计:");

sum = 0;

number = 0;

label_1.setText("你已经拥有的牌:");

}

/**

* @return

*/

protected JLabel getLabel_2() {

if (label_2 == null) {

label_2 = new JLabel();

label_2.setText("合计:");

label_2.setBounds(313, 35, 66, 18);

}

return label_2;

}

}

java黑白棋界面怎样编写?

国际象棋棋盘:

import java.awt.Color;

import java.awt.GridLayout;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class ChessBoard{

JFrame frame;

JPanel squares[][] = new JPanel[8][8];

public ChessBoard() {

frame = new JFrame("Chess");

frame.setSize(640, 640);

frame.setLayout(new GridLayout(8, 8));

for (int i = 0; i 8; i++) {

for (int j = 0; j 8; j++) {

squares[i][j] = new JPanel();

if ((i + j) % 2 == 0) {

squares[i][j].setBackground(Color.white);

} else {

squares[i][j].setBackground(Color.black);

}

frame.add(squares[i][j]);

}

}

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

public static void main(String[] args) {

new ChessBoard();

}

}

求用Java编程的黑白棋代码???急用!!!

/**

* 实验课作业

* @author Administrator

* 这个实现允许重画

*/

package com.test;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.ImageObserver;

import java.text.AttributedCharacterIterator;

public class GameDemo2 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

MainWindow mw=new MainWindow();

mw.setSize(400,400);

mw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mw.setVisible(true);

//mw.setResizable(false);

}

}

class MainWindow extends JFrame implements ActionListener{

/**

*

*/

private static final long serialVersionUID = 1L;

NewPanel mp=null;

JButton jbt1;

JButton jbt2;

JButton jbt3;

JButton jbt4;

int flag=-1;

JPanel jp=null;

public MainWindow(){

//初始化组件

mp=new NewPanel();

mp.addMouseListener(mp);

jbt1=new JButton("O 先手");

jbt2=new JButton("X 先手 ");

jbt3=new JButton("RESET");

jbt4=new JButton("EXIT");

jp=new JPanel();

GridLayout gl=new GridLayout(4,1);

gl.setHgap(4);

gl.setVgap(5);

jp.setLayout(gl);

jp.add(jbt1);

jp.add(jbt2);

jp.add(jbt3);

jp.add(jbt4);

this.add(mp,BorderLayout.CENTER);

this.add(jp,BorderLayout.EAST);

jbt1.addActionListener(this);

jbt2.addActionListener(this);

jbt3.addActionListener(this);

jbt4.addActionListener(this);

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==jbt1){

flag=1;

mp.setHand(0);

jbt1.setEnabled(false);

jbt2.setEnabled(false);

}

if(e.getSource()==jbt2){

flag=2;

mp.setHand(1);

jbt1.setEnabled(false);

jbt2.setEnabled(false);

}

if(e.getSource()==jbt3){

flag=3;

mp.getGraphics().dispose();

this.remove(mp);

mp=new NewPanel();

this.add(mp,BorderLayout.CENTER);

mp.addMouseListener(mp);

this.remove(jp);

jp=new JPanel();

GridLayout gl=new GridLayout(4,1);

gl.setHgap(4);

gl.setVgap(5);

jp.setLayout(gl);

jp.add(jbt1);

jp.add(jbt2);

jp.add(jbt3);

jp.add(jbt4);

this.add(jp,BorderLayout.EAST);

this.validate();

jbt1.setEnabled(true);

jbt2.setEnabled(true);

}

if(e.getSource()==jbt4){

flag=4;

jbt1.setEnabled(false);

jbt2.setEnabled(false);

System.exit(0);

}

}

public int getFlag(){

return flag;

}

}

//画板

class NewPanel extends JPanel implements MouseListener{

/**

*

*/

private static final long serialVersionUID = 1L;

//记录画图的位置

int xx,yy;

//flag表示是否是初始化

int flag;

//0画X,1画0,2不画

int kind;

//记录是有有图形的数组

//a[i]=0代表是空白可以画 a[i]=1代表X a[i]=2代表画O

int []a=null;

//记录当前鼠标位置所在方格,便于判断是否可以继续画

int curLoc;

//记录谁先手 0-0 1-X

int firstHand;

int times;

//0-O 1-X

int whoWin;

public void setFlag(int f){

flag=f;

}

public void setHand(int h){

firstHand=h;

}

public void setWhoWin(){

whoWin=-1;

}

public NewPanel(){

xx=0;

yy=0;

flag=0;

a=new int[9];

kind=-1;

curLoc=0;

whoWin=-1;

firstHand=-1;

times=1;

whoWin=-1;

}

public void paint(Graphics g){

//super.paint(g);

g.drawRect(0, 0, 300, 300);

g.drawRect(0, 100, 300, 100);

g.drawRect(100, 0, 100, 300);

if(flag==1){

if(isFull()==false){

if(testWin()==false){

if((times+firstHand)%2==0){

if(a[curLoc]==0){

g.drawLine(xx,yy,xx+60,yy+60);

g.drawLine(xx+60, yy, xx, yy+60);

a[curLoc]=1;

times++;

if(testWin()==true){

System.out.println("X赢了");

}

}

}

if((times+firstHand)%2==1){

if(a[curLoc]==0){

g.drawOval(xx,yy,60,60);

a[curLoc]=2;

times++;

if(testWin()==true){

System.out.println("O赢了");

}

}

}

}

}else{

System.out.println("it is FULL!!!");

}

}

}

//将鼠标的坐标转换为所画图形的基准坐标 ,返回当前鼠标在记录数组a中的下标

//圆形为外接矩形的左上角

//X为左上角起始点的坐标

public int Format(int x,int y,int kind){

//第一行第一列

int loc=-1;

if(x=0x100y=0y100){

xx=20;

yy=20;

loc= 0;

}

//第一行第二列

if(x=100x200y=0y100){

xx=120;

yy=20;

loc= 1;

}

//第一行第三列

if(x=200x300y=0y100){

xx=220;

yy=20;

loc= 2;

}

//第二行第一列

if(x=0x100y=100y200){

xx=20;

yy=120;

loc= 3;

}

//第二行第二列

if(x=100x200y=100y200){

xx=120;

yy=120;

loc= 4;

}

//第二行第三列

if(x=200x300y=100y200){

xx=220;

yy=120;

loc= 5;

}

//第三行第一列

if(x=0x100y=200y300){

xx=20;

yy=220;

loc= 6;

}

//第三行第二列

if(x=100x200y=200y300){

xx=120;

yy=220;

loc= 7;

}

//第三行第三列

if(x=200x300y=200y300){

xx=220;

yy=220;

loc= 8;

}

return loc;

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

xx=e.getX();

yy=e.getY();

flag=1;

//kind=new Random().nextInt(3);

curLoc=Format(xx,yy,kind);

this.repaint();

}

//判断是否可以继续画的函数

public boolean isFull(){

for(int i=0;i9;i++)

if(a[i]!=1a[i]!=2)

return false;

return true;

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

public boolean testWin(){

boolean isWin=false;

//a[0]=1

if(a[0]!=0a[0]==a[1]a[0]==a[2]){

whoWin=a[0];

isWin=true;

}

if(a[0]!=0a[3]==a[0]a[0]==a[6]){

whoWin=a[0];

isWin=true;

}

if(a[0]!=0a[0]==a[4]a[0]==a[8]){

whoWin=a[0];

isWin=true;

}

if(a[1]!=0a[1]==a[4]a[1]==a[7]){

whoWin=a[1];

isWin=true;

}

if(a[2]!=0a[2]==a[4]a[2]==a[6]){

whoWin=a[2];

isWin=true;

}

if(a[2]!=0a[2]==a[5]a[2]==a[8]){

whoWin=a[2];

isWin=true;

}

if(a[3]!=0a[3]==a[4]a[3]==a[5]){

whoWin=a[3];

isWin=true;

}

if(a[6]!=0a[6]==a[7]a[6]==a[8]){

whoWin=a[6];

isWin=true;

}

return isWin;

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

//重新设置初始值

public void reset(){

this.getGraphics().dispose();

xx=0;

yy=0;

flag=0;

a=new int[9];

kind=-1;

curLoc=0;

whoWin=-1;

firstHand=-1;

times=1;

whoWin=-1;

}

}

就是这个了吧

额们实验课的作业

关于java黑白棋源码和围棋java源码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。