package chess;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.Graphics;
import Java.awt.event.actionevent;
import Java.awt.event.action listener;
import java.awt.event.ItemEvent;
import Java.awt.event.item listener;
import Java.awt.event.mouse event;
import Java.awt.event.mouse listener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
class FivChese extends JFrame{//是从窗口类继承的
CheseGame CG;
FivChese () )
{
this.CG=new CheseGame (;
addmouselistener(CG; //鼠标侦听器
ADD(CG );
}
publicstaticvoidmain (string [ ] args ) {
FivChese fivechese=new FivChese (;
five chese.setdefaultcloseoperation (jframe.exit _ on _ close; 如果是//结束程序,则相当于system.exit(0)
five chese.setsize (900,700 ); //设置组件的水平和垂直大小
fivechese.setTitle (五子棋); //设置构建的自定义标题
fivechese.setvisible(true; //显示按钮
//fivechese.setresizable () true; //如果参数为布尔型且resizeable值为true,则表示可以在生成的表单中自由调整大小;
}
}
classchesegameextendsjpanelimplementsmouselistener、ItemListener//图形用户界面工具包swing的面板容器类已添加到JFrame窗口中
{
int [][]map=new int[20][20];
Color []color={Color.BLACK,Color.WHITE,Color.LIGHT_GRAY}; //背景色
//棋子坐标
int x=-1;
int y=-1;
判断是黑白棋还是黑白棋
int flag=1;
//判定胜负
int winner=3;
JButton btn1=new JButton ('开始'); //游戏开始
JButton btn2=new JButton ('另一局'); //游戏复位
JButton btn3=new JButton ('悔恨棋');
//确定狠心的猫还是黑手先
checkboxgroupcbg=newcheckboxgroup (;
Checkbox chb1=new Checkbox (“黑旗先开始”、cbg、true );
Checkbox chb2=new Checkbox (“白旗先开始”、cbg、false );
classgamestartimplementsactionlistener//游戏现在继承自动侦听器
{
创建用于处理publicvoidactionperformed (ActionEvent AE ) actionevent事件的方法
{
if(AE.getsource(==BTN1)/str.equals('start ' ) ) )。
{
start (;
repaint (; 如何重新绘制组件
BTN1.setenabled(false; //设置控件是否可用
BTN2.setenabled(true;
BTN3.setenabled(true;
CHB1.setenabled(false );
CHB2.setenabled(false );
}
if(AE.getsource(==BTN2 )//处理另一站事件
{
start (;
repaint (;
CHB1.setenabled(true );
CHB2.setenabled(true );
}
处理if(AE.getsource(==BTN3)//悔棋事件
{
repaint (;
CHB1.setenabled(false );
CHB2.setenabled(false );
}
}
私有语音开始
//todo自动生成方法stub
}
}
CheseGame () )
{
this.setlayout(null; //
ch B1.set bounds (650、50、100、30 ); //设定开始控制的位置
ch B2.set bounds (650,100,100,30 );
ch B1.additem监听器(this );
CHB2.additemlistener(this );
BTN1. set bounds (650,150,100,30 );
BTN1. addactionlistener (new game start ); //制作新的游戏开始对象
BTN2. set bounds (650,200,100,30 );
btn2.addactionlistener (new game start );
BTN2.setenabled(false;
BTN3. set bounds (650,250,100,30 );
btn3.addactionlistener (new game start );
this.add(BTN1;
this.add(BTN2;
this.add(BTN3;
this.add(chB1;
this.add(chB2;
}
公共支付组件(graphicsg ) )。
{
super.paintcomponent(g ); //用父类JPanel中的方法,用背景色重画整个面板,起到清透屏的作用
setbackground(color[2]; //设置棋盘的背景颜色
//画棋盘
for(intI=1; i=20; I )
{
g.setcolor(color[0];
g.Drawline(30、i*30、600、i*30 ); //划线画棋盘。 这是画一条横线,每30mm画一条从30到600的直线
g.drawline (I * 30,30,I * 30,600 ); //画棋盘的竖线
}
//画棋子
for(intI=0; i 20; I )
for(intj=0; j 20; j )
{
if(map[I][j]==1) ) ) ) )。
{
g.setcolor(color[0]; //画棋子的颜色
g.filloval((I1 ) ) **30-15,(j 1 ) ) 30-15、30、30;
}
if(map[I][j]==2) ) ) ) )。
{
g.setcolor(color[1];
g.filloval((I1 ) ) **30-15,(j 1 ) ) 30-15、30、30; //画棋子
}
}
}
@Override
publicvoidmouseclicked (mouse event e ) {
//todo自动生成方法stub
}
@Override
公共事件(mouse event e )。
//todo自动生成方法stub
}
@Override
公共事件(mouse event e )。
//todo自动生成方法stub
}
@Override
公共事件(mouse event e )。
//todo自动生成方法stub
}
@Override
publicvoidmousereleased (mouse event e ) {
//todo自动生成方法stub
}
@Override
publicvoiditemstatechanged (itemeventarg0) (
//todo自动生成方法stub
}
}
一键复制
编辑
网络ide
原始数据
按行显示
历史