import java.awt.*;
//import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class MainWindow extends Frame implements Runnable
{
Go panelGo=new Go();
Image myImage;
int PORT;
Socket sendSocket;//主动连接Socket
PrintWriter writer;//用来发送message
boolean stopFlag;
boolean isInitiative;
Point messagePoint;
Point goStartPoint=null;
Point yellowPoint=null;
boolean stepColor=true;
Point LastPoint=null;//移除黄点时,判断位置变动
BorderLayout borderLayout1 = new BorderLayout();
Panel panel1 = new Panel();
Panel panel2 = new Panel();
BorderLayout borderLayout2 = new BorderLayout();
Panel panel3 = new Panel();
CheckboxGroup checkboxGroup1 = new CheckboxGroup();
Checkbox checkbox1 = new Checkbox();
Checkbox checkbox2 = new Checkbox();
Label label1 = new Label();
TextField textField1 = new TextField();
Button button1 = new Button();
Label label2 = new Label();
Choice choice1 = new Choice();
Button button2 = new Button();
GridLayout gridLayout1 = new GridLayout();
BorderLayout borderLayout3 = new BorderLayout();
public MainWindow()
{
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void jbInit() throws Exception
{
choice1.setBackground(new Color(236, 190, 98));
button1.setBackground(new Color(236, 190, 98));
// try
// {
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
// }catch(Exception e){e.printStackTrace();}
this.setResizable(false);
new Thread(this).start();//启动监听线程
this.PORT=1976;
this.isInitiative=false;//是否主动连接
this.stopFlag=false;//是否继续监听的标志
this.choice1.addItem("黑");
this.choice1.addItem("白");
LastPoint=new Point();
messagePoint=new Point();
this.setSize(470,450);
this.setTitle("围棋大战 制造者:苗泽");
this.panelGo.setEnabled(false);//开始之前屏蔽掉盘面
checkbox1.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
checkbox1_mouseClicked(e);
}
});
this.goStartPoint=this.panelGo.getLocation();//
this.setLayout(borderLayout1);
panel1.setLayout(borderLayout2);
checkbox1.setCheckboxGroup(checkboxGroup1);
checkbox1.setLabel("单机");
checkbox2.setCheckboxGroup(checkboxGroup1);
checkbox2.setLabel("联机");
checkbox2.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
checkbox2_mouseClicked(e);
}
});
label1.setText("对方地址");
button1.setLabel("连接");
button1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
button1_actionPerformed(e);
}
});
label2.setText(" ");
button2.setBackground(new Color(236, 190, 98));
button2.setLabel("开始");
button2.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
button2_actionPerformed(e);
}
});
panel3.setLayout(gridLayout1);
gridLayout1.setRows(8);
gridLayout1.setColumns(1);
gridLayout1.setHgap(100);
gridLayout1.setVgap(10);
panel2.setLayout(borderLayout3);
this.panel2.setSize(500,70);
panelGo.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
panelGo_mouseMoved(e);
}
});
panelGo.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
panelGo_mouseClicked(e);
}
});
this.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
this_windowClosing(e);
}
});
panel3.setBackground(new Color(236, 190, 98));
panel3.add(checkbox1, null);
panel3.add(checkbox2, null);
panel3.add(label1, null);
panel3.add(textField1, null);
panel3.add(button1, null);
panel3.add(choice1, null);
panel3.add(button2, null);
panel3.add(label2, null);
this.panel1.add(this.panelGo,BorderLayout.CENTER);
this.panel1.add(panel3, BorderLayout.EAST);
this.add(panel2, BorderLayout.SOUTH);
this.add(panel1, BorderLayout.CENTER);
this.disableLink();//废掉控件
//this.button2.setEnabled(false);//废掉开始
this.checkboxGroup1.setSelectedCheckbox(this.checkbox1);
this.yellowPoint=new Point(1000,1000);//初始化一个世纪外的黄点
this.centerWindow();
this.show();
myImage=this.createImage(16,16);//用来纪录有黄点之前的图像
}
void centerWindow()
{
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
int pX=(d.width-this.getWidth())/2;
int pY=(d.height-this.getHeight())/2;
this.setLocation(pX,pY);
}
public static void main(String args[])
{
MainWindow main=new MainWindow();
}
//监听线程
public void run()
{
try
{
ServerSocket serverSocket=new ServerSocket(PORT);
Socket receiveSocket=null;
receiveSocket=serverSocket.accept();
if(this.isInitiative)//如果已在进行,则不接受连接
this.stopFlag=true;
this.checkboxGroup1.setSelectedCheckbox(this.checkbox2);//自动选择联机
this.button1.setEnabled(false);
this.choice1.setEnabled(true);
this.textField1.setEnabled(false);
this.checkbox1.setEnabled(false);
this.checkbox2.setEnabled(false);
this.writer=new PrintWriter(receiveSocket.getOutputStream(),true);
BufferedReader reader=new BufferedReader(new InputStreamReader(receiveSocket.getInputStream()));
String message;
while(!this.stopFlag)
{
this.panelGo.showError("接收连接成功");
message=reader.readLine();
this.doMessage(message);
}
reader.close();
receiveSocket.close();
serverSocket.close();
}catch(IOException ioe){this.panelGo.showError("您赢了");}
}
//处理接收到的东西
void doMessage(String message)
{
if(message.startsWith("start"))//判断开始
{
this.panelGo.showError("开始了");
if(message.equals("start_black"))
this.choice1.select("白");
else
this.choice1.select("黑");
if(this.choice1.getSelectedItem().equals("黑"))//只要你是黑的,就先走
this.panelGo.setEnabled(true);
this.paintMyColor();//表明颜色
this.disableLink();
}
else//下子的信息
{
int color=Integer.parseInt(message.substring(0,1));
this.messagePoint.x=Integer.parseInt(message.substring(1,3));
this.messagePoint.y=Integer.parseInt(message.substring(3,5));
this.panelGo.setEnabled(true);//解禁
this.panelGo.doStep(this.messagePoint,color);
}
}
//为鼠标定位
void panelGo_mouseMoved(MouseEvent e)
{
Point realPoint=e.getPoint();
Point mousePoint=this.panelGo.getMousePoint(realPoint,this.goStartPoint);
this.removeLastMousePoint(this.LastPoint,mousePoint);
//this.LastPoint=mousePoint;大错误,使对
没有合适的资源?快使用搜索试试~ 我知道了~
基于java的围棋游戏-源代码.zip
共24个文件
class:12个
java:5个
xml:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 65 浏览量
2022-06-15
08:57:02
上传
评论
收藏 30KB ZIP 举报
温馨提示
围棋游戏能实现联机对战,和单机版游戏对战。用Eclipse开发Java程序的相关技术,主要运用了GUI(用户图形界面)API(应用程序借口)来实现,此程序没有用到图片的引用,棋盘和棋子的设计完全是应用函数绘制,再加入复选框,按钮,标签及实现本游戏的用户界面布局。 游戏介绍 开始游戏之后: 1、用户双方自行选择白棋和黑棋。 2、任何一方可以随时随地认输,游戏结束。 3、要实现围棋最基本吃掉对方的法则。 (1)有一个或多个游戏服务器启动特定游戏服务; (2)游戏者到游戏网站下载客户端程序并申请游戏账号。然后启动客户端程序通过某种网络协议连接游戏服务器。 (3)客户端负责处理客户端显示和操作界面,具有简单的逻辑处理功能力, 同时负责接收发送与服务器端交互的数据包。 (4)服务器程序负方处理服务器端逻辑、游戏逻辑、客户之间的网络信息传递,以及数据库之间的数据读取保存工作。 同时服务器端还要承担客户端数据的接收、转发工作。 (5) 网络游戏常用的网络协议有Internet的 TCP / IP 协议、适用于局域网(如红色警报联网等采用)的IPX协议。 虽然目前很多围棋游戏正在运行,但是使用ja
资源详情
资源评论
资源推荐
收起资源包目录
基于java的围棋游戏-源代码.zip (24个子文件)
基于java的围棋游戏-源代码
.settings
org.eclipse.jdt.core.prefs 334B
src
GoApplet.java 201B
Go.java 9KB
MainWindow.java 17KB
Listen.java 754B
One.java 262B
.project 1KB
WebRoot
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 375B
classes
MainWindow$7.class 600B
One.class 666B
GoApplet.class 367B
MainWindow$6.class 598B
MainWindow$2.class 600B
MainWindow.class 14KB
MainWindow$5.class 600B
Go.class 7KB
Listen.class 1KB
MainWindow$1.class 600B
MainWindow$3.class 632B
MainWindow$4.class 632B
lib
index.jsp 829B
.mymetadata 288B
.classpath 340B
.myeclipse
共 24 条
- 1
豆包程序员
- 粉丝: 2681
- 资源: 3504
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0