「java黑白棋源码」围棋java源码
本篇文章给大家谈谈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源码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。